ERC-20
Overview
Max Total Supply
10,000,000,000 NBT
Holders
80
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 8 Decimals)
Balance
0.00009066 NBTValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
NbtToken
Compiler Version
v0.4.23+commit.124ca40d
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-05-05 */ pragma solidity ^0.4.17; /** * @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. */ function Ownable() 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)); emit OwnershipTransferred(owner, newOwner); owner = newOwner; } } pragma solidity ^0.4.21; /** * @title ERC20Basic * @dev Simpler version of ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/179 */ contract ERC20Basic { function totalSupply() public view returns (uint256); function balanceOf(address who) public view returns (uint256); function transfer(address to, uint256 value) public returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); } /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { /** * @dev Multiplies two numbers, throws on overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256 c) { if (a == 0) { return 0; } c = a * b; assert(c / a == b); return c; } /** * @dev Integer division of two numbers, truncating the quotient. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // assert(b > 0); // Solidity automatically throws when dividing by 0 // uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return a / b; } /** * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } /** * @dev Adds two numbers, throws on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256 c) { c = a + b; assert(c >= a); return c; } } /** * @title ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/20 */ contract ERC20 is ERC20Basic { function allowance(address owner, address spender) public view returns (uint256); function transferFrom(address from, address to, uint256 value) public returns (bool); function approve(address spender, uint256 value) public returns (bool); event Approval(address indexed owner, address indexed spender, uint256 value); } contract BasicToken is ERC20Basic { using SafeMath for uint256; mapping(address => uint256) balances; uint256 totalSupply_; /** * @dev total number of tokens in existence */ function totalSupply() public view returns (uint256) { return totalSupply_; } /** * @dev transfer token for a specified address * @param _to The address to transfer to. * @param _value The amount to be transferred. */ function transfer(address _to, uint256 _value) public returns (bool) { require(_to != address(0)); require(_value <= balances[msg.sender]); balances[msg.sender] = balances[msg.sender].sub(_value); balances[_to] = balances[_to].add(_value); emit Transfer(msg.sender, _to, _value); return true; } /** * @dev Gets the balance of the specified address. * @param _owner The address to query the the balance of. * @return An uint256 representing the amount owned by the passed address. */ function balanceOf(address _owner) public view returns (uint256) { return balances[_owner]; } } /** * @title Standard ERC20 token * * @dev Implementation of the basic standard token. * @dev https://github.com/ethereum/EIPs/issues/20 * @dev Based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol */ contract StandardToken is ERC20, BasicToken { mapping (address => mapping (address => uint256)) internal allowed; /** * @dev Transfer tokens from one address to another * @param _from address The address which you want to send tokens from * @param _to address The address which you want to transfer to * @param _value uint256 the amount of tokens to be transferred */ function transferFrom(address _from, address _to, uint256 _value) public returns (bool) { require(_to != address(0)); require(_value <= balances[_from]); require(_value <= allowed[_from][msg.sender]); balances[_from] = balances[_from].sub(_value); balances[_to] = balances[_to].add(_value); allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value); emit Transfer(_from, _to, _value); return true; } /** * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. * * Beware that changing an allowance with this method brings the risk that someone may use both the old * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * @param _spender The address which will spend the funds. * @param _value The amount of tokens to be spent. */ function approve(address _spender, uint256 _value) public returns (bool) { allowed[msg.sender][_spender] = _value; emit Approval(msg.sender, _spender, _value); return true; } /** * @dev Function to check the amount of tokens that an owner allowed to a spender. * @param _owner address The address which owns the funds. * @param _spender address The address which will spend the funds. * @return A uint256 specifying the amount of tokens still available for the spender. */ function allowance(address _owner, address _spender) public view returns (uint256) { return allowed[_owner][_spender]; } /** * @dev Increase the amount of tokens that an owner allowed to a spender. * * approve should be called when allowed[_spender] == 0. To increment * allowed value is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) * From MonolithDAO Token.sol * @param _spender The address which will spend the funds. * @param _addedValue The amount of tokens to increase the allowance by. */ function increaseApproval(address _spender, uint _addedValue) public returns (bool) { allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue); emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } /** * @dev Decrease the amount of tokens that an owner allowed to a spender. * * approve should be called when allowed[_spender] == 0. To decrement * allowed value is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) * From MonolithDAO Token.sol * @param _spender The address which will spend the funds. * @param _subtractedValue The amount of tokens to decrease the allowance by. */ function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) { uint oldValue = allowed[msg.sender][_spender]; if (_subtractedValue > oldValue) { allowed[msg.sender][_spender] = 0; } else { allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue); } emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } } /** * @title Roles * @author Francisco Giordano (@frangio) * @dev Library for managing addresses assigned to a Role. * See RBAC.sol for example usage. */ library Roles { struct Role { mapping (address => bool) bearer; } /** * @dev give an address access to this role */ function add(Role storage role, address addr) internal { role.bearer[addr] = true; } /** * @dev remove an address' access to this role */ function remove(Role storage role, address addr) internal { role.bearer[addr] = false; } /** * @dev check if an address has this role * // reverts */ function check(Role storage role, address addr) view internal { require(has(role, addr)); } /** * @dev check if an address has this role * @return bool */ function has(Role storage role, address addr) view internal returns (bool) { return role.bearer[addr]; } } contract RBAC { using Roles for Roles.Role; mapping (string => Roles.Role) private roles; event RoleAdded(address addr, string roleName); event RoleRemoved(address addr, string roleName); /** * @dev reverts if addr does not have role * @param addr address * @param roleName the name of the role * // reverts */ function checkRole(address addr, string roleName) view public { roles[roleName].check(addr); } /** * @dev determine if addr has role * @param addr address * @param roleName the name of the role * @return bool */ function hasRole(address addr, string roleName) view public returns (bool) { return roles[roleName].has(addr); } /** * @dev add a role to an address * @param addr address * @param roleName the name of the role */ function addRole(address addr, string roleName) internal { roles[roleName].add(addr); emit RoleAdded(addr, roleName); } /** * @dev remove a role from an address * @param addr address * @param roleName the name of the role */ function removeRole(address addr, string roleName) internal { roles[roleName].remove(addr); emit RoleRemoved(addr, roleName); } /** * @dev modifier to scope access to a single role (uses msg.sender as addr) * @param roleName the name of the role * // reverts */ modifier onlyRole(string roleName) { checkRole(msg.sender, roleName); _; } /** * @dev modifier to scope access to a set of roles (uses msg.sender as addr) * @param roleNames the names of the roles to scope access to * // reverts * * @TODO - when solidity supports dynamic arrays as arguments to modifiers, provide this * see: https://github.com/ethereum/solidity/issues/2467 */ // modifier onlyRoles(string[] roleNames) { // bool hasAnyRole = false; // for (uint8 i = 0; i < roleNames.length; i++) { // if (hasRole(msg.sender, roleNames[i])) { // hasAnyRole = true; // break; // } // } // require(hasAnyRole); // _; // } } contract RBACWithAdmin is RBAC { /** * A constant role name for indicating admins. */ string public constant ROLE_ADMIN = "admin"; /** * @dev modifier to scope access to admins * // reverts */ modifier onlyAdmin() { checkRole(msg.sender, ROLE_ADMIN); _; } /** * @dev constructor. Sets msg.sender as admin by default */ function RBACWithAdmin() public { addRole(msg.sender, ROLE_ADMIN); } /** * @dev add a role to an address * @param addr address * @param roleName the name of the role */ function adminAddRole(address addr, string roleName) onlyAdmin public { addRole(addr, roleName); } /** * @dev remove a role from an address * @param addr address * @param roleName the name of the role */ function adminRemoveRole(address addr, string roleName) onlyAdmin public { removeRole(addr, roleName); } } contract NbtToken is StandardToken, Ownable, RBACWithAdmin { /*** EVENTS ***/ event ExchangeableTokensInc(address indexed from, uint256 amount); event ExchangeableTokensDec(address indexed to, uint256 amount); event CirculatingTokensInc(address indexed from, uint256 amount); event CirculatingTokensDec(address indexed to, uint256 amount); event SaleableTokensInc(address indexed from, uint256 amount); event SaleableTokensDec(address indexed to, uint256 amount); event StockTokensInc(address indexed from, uint256 amount); event StockTokensDec(address indexed to, uint256 amount); event BbAddressUpdated(address indexed ethereum_address, string bb_address); /*** CONSTANTS ***/ string public name = 'NiceBytes'; string public symbol = 'NBT'; uint256 public decimals = 8; uint256 public INITIAL_SUPPLY = 10000000000 * 10**decimals; // One time total supply uint256 public AIRDROP_START_AT = 1525780800; // May 8, 12:00 UTC uint256 public AIRDROPS_COUNT = 82; uint256 public AIRDROPS_PERIOD = 86400; uint256 public CIRCULATING_BASE = 2000000000 * 10**decimals; uint256 public MAX_AIRDROP_VOLUME = 2; // % uint256 public INITIAL_EXCHANGEABLE_TOKENS_VOLUME = 1200000000 * 10**decimals; uint256 public MAX_AIRDROP_TOKENS = 8000000000 * 10**decimals; // 8 billions uint256 public MAX_SALE_VOLUME = 800000000 * 10**decimals; uint256 public EXCHANGE_COMMISSION = 200 * 10**decimals; // NBT uint256 public MIN_TOKENS_TO_EXCHANGE = 1000 * 10**decimals; // should be bigger than EXCHANGE_COMMISSION uint256 public EXCHANGE_RATE = 1000; string constant ROLE_EXCHANGER = "exchanger"; /*** STORAGE ***/ uint256 public exchangeableTokens; uint256 public exchangeableTokensFromSale; uint256 public exchangeableTokensFromStock; uint256 public circulatingTokens; uint256 public circulatingTokensFromSale; uint256 public saleableTokens; uint256 public stockTokens; address public crowdsale; address public exchange_commission_wallet; mapping(address => uint256) exchangeBalances; mapping(address => string) bbAddresses; /*** MODIFIERS ***/ modifier onlyAdminOrExchanger() { require( hasRole(msg.sender, ROLE_ADMIN) || hasRole(msg.sender, ROLE_EXCHANGER) ); _; } modifier onlyCrowdsale() { require( address(msg.sender) == address(crowdsale) ); _; } /*** CONSTRUCTOR ***/ function NbtToken() public { totalSupply_ = INITIAL_SUPPLY; balances[this] = INITIAL_SUPPLY; stockTokens = INITIAL_SUPPLY; emit StockTokensInc(address(0), INITIAL_SUPPLY); addRole(msg.sender, ROLE_EXCHANGER); } /*** PUBLIC AND EXTERNAL FUNCTIONS ***/ /*** getters ***/ function getBbAddress(address _addr) public view returns (string _bbAddress) { return bbAddresses[_addr]; } function howMuchTokensAvailableForExchangeFromStock() public view returns (uint256) { uint256 _volume = INITIAL_EXCHANGEABLE_TOKENS_VOLUME; uint256 _airdrops = 0; if (now > AIRDROP_START_AT) { _airdrops = (now.sub(AIRDROP_START_AT)).div(AIRDROPS_PERIOD); _airdrops = _airdrops.add(1); } if (_airdrops > AIRDROPS_COUNT) { _airdrops = AIRDROPS_COUNT; } uint256 _from_airdrops = 0; uint256 _base = CIRCULATING_BASE; for (uint256 i = 1; i <= _airdrops; i++) { _from_airdrops = _from_airdrops.add(_base.mul(MAX_AIRDROP_VOLUME).div(100)); _base = _base.add(_base.mul(MAX_AIRDROP_VOLUME).div(100)); } if (_from_airdrops > MAX_AIRDROP_TOKENS) { _from_airdrops = MAX_AIRDROP_TOKENS; } _volume = _volume.add(_from_airdrops); return _volume; } /*** setters ***/ function setBbAddress(string _bbAddress) public returns (bool) { bbAddresses[msg.sender] = _bbAddress; emit BbAddressUpdated(msg.sender, _bbAddress); return true; } function setCrowdsaleAddress(address _addr) onlyAdmin public returns (bool) { require(_addr != address(0) && _addr != address(this)); crowdsale = _addr; return true; } function setExchangeCommissionAddress(address _addr) onlyAdmin public returns (bool) { require(_addr != address(0) && _addr != address(this)); exchange_commission_wallet = _addr; return true; } /*** sale methods ***/ // For balancing of the sale limit between two networks function moveTokensFromSaleToExchange(uint256 _amount) onlyAdminOrExchanger public returns (bool) { require(_amount <= balances[crowdsale]); balances[crowdsale] = balances[crowdsale].sub(_amount); saleableTokens = saleableTokens.sub(_amount); exchangeableTokensFromSale = exchangeableTokensFromSale.add(_amount); balances[address(this)] = balances[address(this)].add(_amount); exchangeableTokens = exchangeableTokens.add(_amount); emit SaleableTokensDec(address(this), _amount); emit ExchangeableTokensInc(address(crowdsale), _amount); return true; } function moveTokensFromSaleToCirculating(address _to, uint256 _amount) onlyCrowdsale public returns (bool) { saleableTokens = saleableTokens.sub(_amount); circulatingTokensFromSale = circulatingTokensFromSale.add(_amount) ; circulatingTokens = circulatingTokens.add(_amount) ; emit SaleableTokensDec(_to, _amount); emit CirculatingTokensInc(address(crowdsale), _amount); return true; } /*** stock methods ***/ function moveTokensFromStockToExchange(uint256 _amount) onlyAdminOrExchanger public returns (bool) { require(_amount <= stockTokens); require(exchangeableTokensFromStock + _amount <= howMuchTokensAvailableForExchangeFromStock()); stockTokens = stockTokens.sub(_amount); exchangeableTokens = exchangeableTokens.add(_amount); exchangeableTokensFromStock = exchangeableTokensFromStock.add(_amount); emit StockTokensDec(address(this), _amount); emit ExchangeableTokensInc(address(this), _amount); return true; } function moveTokensFromStockToSale(uint256 _amount) onlyAdminOrExchanger public returns (bool) { require(crowdsale != address(0) && crowdsale != address(this)); require(_amount <= stockTokens); require(_amount + exchangeableTokensFromSale + saleableTokens + circulatingTokensFromSale <= MAX_SALE_VOLUME); stockTokens = stockTokens.sub(_amount); saleableTokens = saleableTokens.add(_amount); balances[address(this)] = balances[address(this)].sub(_amount); balances[crowdsale] = balances[crowdsale].add(_amount); emit Transfer(address(this), crowdsale, _amount); emit StockTokensDec(address(crowdsale), _amount); emit SaleableTokensInc(address(this), _amount); return true; } /*** exchange methods ***/ function getTokensFromExchange(address _to, uint256 _amount) onlyAdminOrExchanger public returns (bool) { require(_amount <= exchangeableTokens); require(_amount <= balances[address(this)]); exchangeableTokens = exchangeableTokens.sub(_amount); circulatingTokens = circulatingTokens.add(_amount); balances[address(this)] = balances[address(this)].sub(_amount); balances[_to] = balances[_to].add(_amount); emit Transfer(address(this), _to, _amount); emit ExchangeableTokensDec(_to, _amount); emit CirculatingTokensInc(address(this), _amount); return true; } function sendTokensToExchange(uint256 _amount) public returns (bool) { require(_amount <= balances[msg.sender]); require(_amount >= MIN_TOKENS_TO_EXCHANGE); require(!stringsEqual(bbAddresses[msg.sender], '')); require(exchange_commission_wallet != address(0) && exchange_commission_wallet != address(this)); balances[msg.sender] = balances[msg.sender].sub(_amount); // ! before sub(_commission) uint256 _commission = EXCHANGE_COMMISSION + _amount % EXCHANGE_RATE; _amount = _amount.sub(_commission); circulatingTokens = circulatingTokens.sub(_amount); exchangeableTokens = exchangeableTokens.add(_amount); exchangeBalances[msg.sender] = exchangeBalances[msg.sender].add(_amount); balances[address(this)] = balances[address(this)].add(_amount); balances[exchange_commission_wallet] = balances[exchange_commission_wallet].add(_commission); emit Transfer(msg.sender, address(exchange_commission_wallet), _commission); emit Transfer(msg.sender, address(this), _amount); emit CirculatingTokensDec(address(this), _amount); emit ExchangeableTokensInc(msg.sender, _amount); return true; } function exchangeBalanceOf(address _addr) public view returns (uint256 _tokens) { return exchangeBalances[_addr]; } function decExchangeBalanceOf(address _addr, uint256 _amount) onlyAdminOrExchanger public returns (bool) { require (exchangeBalances[_addr] > 0); require (exchangeBalances[_addr] >= _amount); exchangeBalances[_addr] = exchangeBalances[_addr].sub(_amount); return true; } /*** INTERNAL FUNCTIONS ***/ function stringsEqual(string storage _a, string memory _b) internal view returns (bool) { bytes storage a = bytes(_a); bytes memory b = bytes(_b); if (a.length != b.length) return false; for (uint256 i = 0; i < a.length; i ++) if (a[i] != b[i]) return false; return true; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CIRCULATING_BASE","outputs":[{"name":"","type":"uint256"}],"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":"addr","type":"address"},{"name":"roleName","type":"string"}],"name":"checkRole","outputs":[],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"EXCHANGE_RATE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"moveTokensFromSaleToExchange","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"AIRDROPS_COUNT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"}],"name":"setCrowdsaleAddress","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_bbAddress","type":"string"}],"name":"setBbAddress","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"},{"name":"roleName","type":"string"}],"name":"hasRole","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"INITIAL_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"getBbAddress","outputs":[{"name":"_bbAddress","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"exchangeBalanceOf","outputs":[{"name":"_tokens","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"sendTokensToExchange","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"getTokensFromExchange","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"}],"name":"setExchangeCommissionAddress","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"MAX_AIRDROP_VOLUME","outputs":[{"name":"","type":"uint256"}],"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":"exchangeableTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"INITIAL_EXCHANGEABLE_TOKENS_VOLUME","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"},{"name":"roleName","type":"string"}],"name":"adminRemoveRole","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"AIRDROPS_PERIOD","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MIN_TOKENS_TO_EXCHANGE","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":"_amount","type":"uint256"}],"name":"moveTokensFromStockToSale","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":true,"inputs":[],"name":"MAX_SALE_VOLUME","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"crowdsale","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"moveTokensFromSaleToCirculating","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":"circulatingTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"},{"name":"_amount","type":"uint256"}],"name":"decExchangeBalanceOf","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"},{"name":"roleName","type":"string"}],"name":"adminAddRole","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"EXCHANGE_COMMISSION","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ROLE_ADMIN","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"exchange_commission_wallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"howMuchTokensAvailableForExchangeFromStock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"circulatingTokensFromSale","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"saleableTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"exchangeableTokensFromSale","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"stockTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MAX_AIRDROP_TOKENS","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":"exchangeableTokensFromStock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"AIRDROP_START_AT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"moveTokensFromStockToExchange","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"ExchangeableTokensInc","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"ExchangeableTokensDec","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"CirculatingTokensInc","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"CirculatingTokensDec","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"SaleableTokensInc","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"SaleableTokensDec","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"StockTokensInc","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"StockTokensDec","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"ethereum_address","type":"address"},{"indexed":false,"name":"bb_address","type":"string"}],"name":"BbAddressUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"addr","type":"address"},{"indexed":false,"name":"roleName","type":"string"}],"name":"RoleAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"addr","type":"address"},{"indexed":false,"name":"roleName","type":"string"}],"name":"RoleRemoved","type":"event"},{"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":"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"}]
Contract Creation Code
60c0604052600960808190527f4e6963654279746573000000000000000000000000000000000000000000000060a09081526200004091600591906200037f565b506040805180820190915260038082527f4e42540000000000000000000000000000000000000000000000000000000000602090920191825262000087916006916200037f565b5060086007819055670de0b6b3a76400009055635af191406009556052600a5562015180600b556702c68af0bb140000600c556002600d556701aa535d3d0c0000600e55670b1a2bc2ec500000600f5567011c37937e0800006010556404a817c80060115564174876e8006012556103e86013553480156200010857600080fd5b5060038054600160a060020a03191633600160a060020a0381169190911790915560408051808201909152600581527f61646d696e000000000000000000000000000000000000000000000000000000602082015262000172919064010000000062000224810204565b6008546001819055600160a060020a033016600090815260208181526040808320849055601a84905580519384525191927fe6490dc18ef83a2f46b07eaccef4f5a3ec93915ba3e82b90037ef360438044dd929081900390910190a26200021e336040805190810160405280600981526020017f65786368616e676572000000000000000000000000000000000000000000000081525062000224640100000000026401000000009004565b62000424565b620002a0826004836040518082805190602001908083835b602083106200025d5780518252601f1990920191602091820191016200023c565b51815160209384036101000a60001901801990921691161790529201948552506040519384900301909220929150506401000000006200035a8102620025dc1704565b7fbfec83d64eaa953f2708271a023ab9ee82057f8f3578d548c1a4ba0b5b70048982826040518083600160a060020a0316600160a060020a0316815260200180602001828103825283818151815260200191508051906020019080838360005b838110156200031a57818101518382015260200162000300565b50505050905090810190601f168015620003485780820380516001836020036101000a031916815260200191505b50935050505060405180910390a15050565b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620003c257805160ff1916838001178555620003f2565b82800160010185558215620003f2579182015b82811115620003f2578251825591602001919060010190620003d5565b506200040092915062000404565b5090565b6200042191905b808211156200040057600081556001016200040b565b90565b61270580620004346000396000f3006080604052600436106102715763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde03811461027657806307d3d94114610300578063095ea7b3146103275780630988ca8c1461035f57806314a8bd0d146103c857806318160ddd146103dd5780631991d6ac146103f25780631dd95a981461040a5780631f35bc401461041f57806320b4fc2914610440578063217fe6c61461049957806323b872dd146105005780632ff2e9dc1461052a578063313ce5671461053f5780633902b9fc1461055457806340cde4031461057557806341a1d66c14610596578063457ce032146105ae5780636095c2d5146105d257806366188463146105f35780636d399eb71461061757806370a082311461062c57806372e6e21a1461064d5780637c5bfe811461066257806388cee87e1461067757806388efedf4146106de5780638be97285146106f35780638da5cb5b14610708578063919203a01461073957806395d89b41146107515780639a586d26146107665780639c1e03a01461077b578063a870ddc214610790578063a9059cbb146107b4578063ab9d8b8b146107d8578063afa5e56a146107ed578063b25fa92c14610811578063b6a8933b14610878578063d391014b1461088d578063d422e810146108a2578063d73dd623146108b7578063daa6f417146108db578063dd62ed3e146108f0578063df41765e14610917578063e1ac48ad1461092c578063e69b9b6514610941578063eb8136f314610956578063ef2cc9771461096b578063f2fde38b14610980578063f3cbe7b5146109a1578063f7a084c0146109b6578063fa9ce7e7146109cb575b600080fd5b34801561028257600080fd5b5061028b6109e3565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102c55781810151838201526020016102ad565b50505050905090810190601f1680156102f25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561030c57600080fd5b50610315610a71565b60408051918252519081900360200190f35b34801561033357600080fd5b5061034b600160a060020a0360043516602435610a77565b604080519115158252519081900360200190f35b34801561036b57600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526103c6958335600160a060020a0316953695604494919390910191908190840183828082843750949750610ae29650505050505050565b005b3480156103d457600080fd5b50610315610b50565b3480156103e957600080fd5b50610315610b56565b3480156103fe57600080fd5b5061034b600435610b5d565b34801561041657600080fd5b50610315610d41565b34801561042b57600080fd5b5061034b600160a060020a0360043516610d47565b34801561044c57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261034b943694929360249392840191908190840183828082843750949750610dda9650505050505050565b3480156104a557600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261034b958335600160a060020a0316953695604494919390910191908190840183828082843750949750610eae9650505050505050565b34801561050c57600080fd5b5061034b600160a060020a0360043581169060243516604435610f21565b34801561053657600080fd5b5061031561108f565b34801561054b57600080fd5b50610315611095565b34801561056057600080fd5b5061028b600160a060020a036004351661109b565b34801561058157600080fd5b50610315600160a060020a0360043516611146565b3480156105a257600080fd5b5061034b600435611161565b3480156105ba57600080fd5b5061034b600160a060020a0360043516602435611445565b3480156105de57600080fd5b5061034b600160a060020a0360043516611638565b3480156105ff57600080fd5b5061034b600160a060020a03600435166024356116cb565b34801561062357600080fd5b506103156117c4565b34801561063857600080fd5b50610315600160a060020a03600435166117ca565b34801561065957600080fd5b506103156117e5565b34801561066e57600080fd5b506103156117eb565b34801561068357600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526103c6958335600160a060020a03169536956044949193909101919081908401838280828437509497506117f19650505050505050565b3480156106ea57600080fd5b50610315611825565b3480156106ff57600080fd5b5061031561182b565b34801561071457600080fd5b5061071d611831565b60408051600160a060020a039092168252519081900360200190f35b34801561074557600080fd5b5061034b600435611840565b34801561075d57600080fd5b5061028b611a6a565b34801561077257600080fd5b50610315611ac5565b34801561078757600080fd5b5061071d611acb565b34801561079c57600080fd5b5061034b600160a060020a0360043516602435611ada565b3480156107c057600080fd5b5061034b600160a060020a0360043516602435611bc4565b3480156107e457600080fd5b50610315611cab565b3480156107f957600080fd5b5061034b600160a060020a0360043516602435611cb1565b34801561081d57600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526103c6958335600160a060020a0316953695604494919390910191908190840183828082843750949750611dae9650505050505050565b34801561088457600080fd5b50610315611de2565b34801561089957600080fd5b5061028b611de8565b3480156108ae57600080fd5b5061071d611e0a565b3480156108c357600080fd5b5061034b600160a060020a0360043516602435611e19565b3480156108e757600080fd5b50610315611ebb565b3480156108fc57600080fd5b50610315600160a060020a0360043581169060243516611fc1565b34801561092357600080fd5b50610315611fec565b34801561093857600080fd5b50610315611ff2565b34801561094d57600080fd5b50610315611ff8565b34801561096257600080fd5b50610315611ffe565b34801561097757600080fd5b50610315612004565b34801561098c57600080fd5b506103c6600160a060020a036004351661200a565b3480156109ad57600080fd5b506103156120a3565b3480156109c257600080fd5b506103156120a9565b3480156109d757600080fd5b5061034b6004356120af565b6005805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610a695780601f10610a3e57610100808354040283529160200191610a69565b820191906000526020600020905b815481529060010190602001808311610a4c57829003601f168201915b505050505081565b600c5481565b600160a060020a03338116600081815260026020908152604080832094871680845294825280832086905580518681529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b610b4c826004836040518082805190602001908083835b60208310610b185780518252601f199092019160209182019101610af9565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050612208565b5050565b60135481565b6001545b90565b6000610b893360408051908101604052806005815260200160d960020a6430b236b4b702815250610eae565b80610bbc5750610bbc3360408051908101604052806009815260200160008051602061269a833981519152815250610eae565b1515610bc757600080fd5b601b54600160a060020a0316600090815260208190526040902054821115610bee57600080fd5b601b54600160a060020a0316600090815260208190526040902054610c19908363ffffffff61221d16565b601b54600160a060020a0316600090815260208190526040902055601954610c47908363ffffffff61221d16565b601955601554610c5d908363ffffffff61222f16565b601555600160a060020a033016600090815260208190526040902054610c89908363ffffffff61222f16565b600160a060020a033016600090815260208190526040902055601454610cb5908363ffffffff61222f16565b601455604080518381529051600160a060020a033016917ff83603201380cb82d40f5ec5247709121695277810904be461b54a50c2eaa769919081900360200190a2601b54604080518481529051600160a060020a03909216917f911175936b3ffc41904ba671fdedbc012ffacf996dd9b19c19564e9be836d1f79181900360200190a2506001919050565b600a5481565b6000610d733360408051908101604052806005815260200160d960020a6430b236b4b702815250610ae2565b600160a060020a03821615801590610d9d575030600160a060020a031682600160a060020a031614155b1515610da857600080fd5b50601b8054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b600160a060020a0333166000908152601e6020908152604082208351610e0292850190612601565b5033600160a060020a03167f3d8925c1c7e4996fa990c521127ea622328b933ff2d502e5e1cc87a2cbc1809a836040518080602001828103825283818151815260200191508051906020019080838360005b83811015610e6c578181015183820152602001610e54565b50505050905090810190601f168015610e995780820380516001836020036101000a031916815260200191505b509250505060405180910390a2506001919050565b6000610f1a836004846040518082805190602001908083835b60208310610ee65780518252601f199092019160209182019101610ec7565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092209291505061223c565b9392505050565b6000600160a060020a0383161515610f3857600080fd5b600160a060020a038416600090815260208190526040902054821115610f5d57600080fd5b600160a060020a0380851660009081526002602090815260408083203390941683529290522054821115610f9057600080fd5b600160a060020a038416600090815260208190526040902054610fb9908363ffffffff61221d16565b600160a060020a038086166000908152602081905260408082209390935590851681522054610fee908363ffffffff61222f16565b600160a060020a0380851660009081526020818152604080832094909455878316825260028152838220339093168252919091522054611034908363ffffffff61221d16565b600160a060020a038086166000818152600260209081526040808320338616845282529182902094909455805186815290519287169391926000805160206126ba833981519152929181900390910190a35060019392505050565b60085481565b60075481565b600160a060020a0381166000908152601e602090815260409182902080548351601f600260001961010060018616150201909316929092049182018490048402810184019094528084526060939283018282801561113a5780601f1061110f5761010080835404028352916020019161113a565b820191906000526020600020905b81548152906001019060200180831161111d57829003601f168201915b50505050509050919050565b600160a060020a03166000908152601d602052604090205490565b600160a060020a033316600090815260208190526040812054819083111561118857600080fd5b60125483101561119757600080fd5b600160a060020a0333166000908152601e6020908152604080832081519283019091529181526111c7919061225b565b156111d157600080fd5b601c54600160a060020a0316158015906111fa5750601c5430600160a060020a03908116911614155b151561120557600080fd5b600160a060020a03331660009081526020819052604090205461122e908463ffffffff61221d16565b600160a060020a0333166000908152602081905260409020556013548381151561125457fe5b60115491900601905061126d838263ffffffff61221d16565b601754909350611283908463ffffffff61221d16565b601755601454611299908463ffffffff61222f16565b601455600160a060020a0333166000908152601d60205260409020546112c5908463ffffffff61222f16565b600160a060020a033381166000908152601d6020908152604080832094909455309092168152908190522054611301908463ffffffff61222f16565b600160a060020a0330811660009081526020819052604080822093909355601c5490911681522054611339908263ffffffff61222f16565b601c8054600160a060020a0390811660009081526020818152604091829020949094559154825185815292519082169333909216926000805160206126ba83398151915292908290030190a330600160a060020a031633600160a060020a03166000805160206126ba833981519152856040518082815260200191505060405180910390a3604080518481529051600160a060020a033016917f824d08f0d500f68316027e046eb198c0de067df8df7cfcd57a19bbd2d9b4aa82919081900360200190a2604080518481529051600160a060020a033316917f911175936b3ffc41904ba671fdedbc012ffacf996dd9b19c19564e9be836d1f7919081900360200190a250600192915050565b60006114713360408051908101604052806005815260200160d960020a6430b236b4b702815250610eae565b806114a457506114a43360408051908101604052806009815260200160008051602061269a833981519152815250610eae565b15156114af57600080fd5b6014548211156114be57600080fd5b600160a060020a0330166000908152602081905260409020548211156114e357600080fd5b6014546114f6908363ffffffff61221d16565b60145560175461150c908363ffffffff61222f16565b601755600160a060020a033016600090815260208190526040902054611538908363ffffffff61221d16565b600160a060020a03308116600090815260208190526040808220939093559085168152205461156d908363ffffffff61222f16565b600160a060020a03808516600081815260208181526040918290209490945580518681529051919330909316926000805160206126ba83398151915292918290030190a3604080518381529051600160a060020a038516917f5250a1c4080bee0321c9806567821bdb0327d483d724a99acde6b2094932159b919081900360200190a2604080518381529051600160a060020a033016917f4792e0db799e0f504bad696edc9e62da637de65384b4540dfd8af67163bdb901919081900360200190a250600192915050565b60006116643360408051908101604052806005815260200160d960020a6430b236b4b702815250610ae2565b600160a060020a0382161580159061168e575030600160a060020a031682600160a060020a031614155b151561169957600080fd5b50601c8054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b600160a060020a0333811660009081526002602090815260408083209386168352929052908120548083111561172857600160a060020a03338116600090815260026020908152604080832093881683529290529081205561175f565b611738818463ffffffff61221d16565b600160a060020a033381166000908152600260209081526040808320938916835292905220555b600160a060020a0333811660008181526002602090815260408083209489168084529482529182902054825190815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a35060019392505050565b600d5481565b600160a060020a031660009081526020819052604090205490565b60145481565b600e5481565b61181b3360408051908101604052806005815260200160d960020a6430b236b4b702815250610ae2565b610b4c828261237a565b600b5481565b60125481565b600354600160a060020a031681565b600061186c3360408051908101604052806005815260200160d960020a6430b236b4b702815250610eae565b8061189f575061189f3360408051908101604052806009815260200160008051602061269a833981519152815250610eae565b15156118aa57600080fd5b601b54600160a060020a0316158015906118d35750601b5430600160a060020a03908116911614155b15156118de57600080fd5b601a548211156118ed57600080fd5b60105460185460195460155485010101111561190857600080fd5b601a5461191b908363ffffffff61221d16565b601a55601954611931908363ffffffff61222f16565b601955600160a060020a03301660009081526020819052604090205461195d908363ffffffff61221d16565b600160a060020a0330811660009081526020819052604080822093909355601b5490911681522054611995908363ffffffff61222f16565b601b8054600160a060020a0390811660009081526020818152604091829020949094559154825186815292519082169330909216926000805160206126ba83398151915292908290030190a3601b54604080518481529051600160a060020a03909216917ff00f8a33da5065e7344fe6e4fcbf3020eee8a0277f15f53e8de7cdcdf42cc8039181900360200190a2604080518381529051600160a060020a033016917f2a3362f8e0da2d8a91cb7286704f2973b37c833af93af032e0c58736913a4514919081900360200190a2506001919050565b6006805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610a695780601f10610a3e57610100808354040283529160200191610a69565b60105481565b601b54600160a060020a031681565b601b5460009033600160a060020a03908116911614611af857600080fd5b601954611b0b908363ffffffff61221d16565b601955601854611b21908363ffffffff61222f16565b601855601754611b37908363ffffffff61222f16565b601755604080518381529051600160a060020a038516917ff83603201380cb82d40f5ec5247709121695277810904be461b54a50c2eaa769919081900360200190a2601b54604080518481529051600160a060020a03909216917f4792e0db799e0f504bad696edc9e62da637de65384b4540dfd8af67163bdb9019181900360200190a250600192915050565b6000600160a060020a0383161515611bdb57600080fd5b600160a060020a033316600090815260208190526040902054821115611c0057600080fd5b600160a060020a033316600090815260208190526040902054611c29908363ffffffff61221d16565b600160a060020a033381166000908152602081905260408082209390935590851681522054611c5e908363ffffffff61222f16565b600160a060020a03808516600081815260208181526040918290209490945580518681529051919333909316926000805160206126ba83398151915292918290030190a350600192915050565b60175481565b6000611cdd3360408051908101604052806005815260200160d960020a6430b236b4b702815250610eae565b80611d105750611d103360408051908101604052806009815260200160008051602061269a833981519152815250610eae565b1515611d1b57600080fd5b600160a060020a0383166000908152601d602052604081205411611d3e57600080fd5b600160a060020a0383166000908152601d6020526040902054821115611d6357600080fd5b600160a060020a0383166000908152601d6020526040902054611d8c908363ffffffff61221d16565b600160a060020a0384166000908152601d602052604090205550600192915050565b611dd83360408051908101604052806005815260200160d960020a6430b236b4b702815250610ae2565b610b4c828261249b565b60115481565b604080518082019091526005815260d960020a6430b236b4b702602082015281565b601c54600160a060020a031681565b600160a060020a033381166000908152600260209081526040808320938616835292905290812054611e51908363ffffffff61222f16565b600160a060020a0333811660008181526002602090815260408083209489168084529482529182902085905581519485529051929391927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a350600192915050565b600080600080600080600e54945060009350600954421115611f1457611efe600b54611ef26009544261221d90919063ffffffff16565b9063ffffffff61257c16565b9350611f1184600163ffffffff61222f16565b93505b600a54841115611f2457600a5493505b5050600c546000915060015b838111611f9757611f61611f546064611ef2600d548661259190919063ffffffff16565b849063ffffffff61222f16565b9250611f8d611f806064611ef2600d548661259190919063ffffffff16565b839063ffffffff61222f16565b9150600101611f30565b600f54831115611fa757600f5492505b611fb7858463ffffffff61222f16565b9695505050505050565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b60185481565b60195481565b60155481565b601a5481565b600f5481565b60035433600160a060020a0390811691161461202557600080fd5b600160a060020a038116151561203a57600080fd5b600354604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60165481565b60095481565b60006120db3360408051908101604052806005815260200160d960020a6430b236b4b702815250610eae565b8061210e575061210e3360408051908101604052806009815260200160008051602061269a833981519152815250610eae565b151561211957600080fd5b601a5482111561212857600080fd5b612130611ebb565b6016548301111561214057600080fd5b601a54612153908363ffffffff61221d16565b601a55601454612169908363ffffffff61222f16565b60145560165461217f908363ffffffff61222f16565b601655604080518381529051600160a060020a033016917ff00f8a33da5065e7344fe6e4fcbf3020eee8a0277f15f53e8de7cdcdf42cc803919081900360200190a2604080518381529051600160a060020a033016917f911175936b3ffc41904ba671fdedbc012ffacf996dd9b19c19564e9be836d1f7919081900360200190a2506001919050565b612212828261223c565b1515610b4c57600080fd5b60008282111561222957fe5b50900390565b81810182811015610adc57fe5b600160a060020a03166000908152602091909152604090205460ff1690565b8051825460009184918491849160026000196101006001841615020190911604146122895760009350612371565b5060005b82546002600019610100600184161502019091160481101561236c5781818151811015156122b757fe5b90602001015160f860020a900460f860020a027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168382815460018160011615610100020316600290048110151561230b57fe5b81546001161561232a5790600052602060002090602091828204019190065b9054901a60f860020a027fff0000000000000000000000000000000000000000000000000000000000000016146123645760009350612371565b60010161228d565b600193505b50505092915050565b6123e4826004836040518082805190602001908083835b602083106123b05780518252601f199092019160209182019101612391565b51815160209384036101000a60001901801990921691161790529201948552506040519384900301909220929150506125ba565b7fd211483f91fc6eff862467f8de606587a30c8fc9981056f051b897a418df803a82826040518083600160a060020a0316600160a060020a0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561245c578181015183820152602001612444565b50505050905090810190601f1680156124895780820380516001836020036101000a031916815260200191505b50935050505060405180910390a15050565b612505826004836040518082805190602001908083835b602083106124d15780518252601f1990920191602091820191016124b2565b51815160209384036101000a60001901801990921691161790529201948552506040519384900301909220929150506125dc565b7fbfec83d64eaa953f2708271a023ab9ee82057f8f3578d548c1a4ba0b5b70048982826040518083600160a060020a0316600160a060020a0316815260200180602001828103825283818151815260200191508051906020019080838360008381101561245c578181015183820152602001612444565b6000818381151561258957fe5b049392505050565b60008215156125a257506000610adc565b508181028183828115156125b257fe5b0414610adc57fe5b600160a060020a0316600090815260209190915260409020805460ff19169055565b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061264257805160ff191683800117855561266f565b8280016001018555821561266f579182015b8281111561266f578251825591602001919060010190612654565b5061267b92915061267f565b5090565b610b5a91905b8082111561267b5760008155600101612685560065786368616e6765720000000000000000000000000000000000000000000000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820b43b29b34c59986b13e173b7360dd68cf23192b09bdd53d17f862dcfc85f52e40029
Deployed Bytecode
0x6080604052600436106102715763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde03811461027657806307d3d94114610300578063095ea7b3146103275780630988ca8c1461035f57806314a8bd0d146103c857806318160ddd146103dd5780631991d6ac146103f25780631dd95a981461040a5780631f35bc401461041f57806320b4fc2914610440578063217fe6c61461049957806323b872dd146105005780632ff2e9dc1461052a578063313ce5671461053f5780633902b9fc1461055457806340cde4031461057557806341a1d66c14610596578063457ce032146105ae5780636095c2d5146105d257806366188463146105f35780636d399eb71461061757806370a082311461062c57806372e6e21a1461064d5780637c5bfe811461066257806388cee87e1461067757806388efedf4146106de5780638be97285146106f35780638da5cb5b14610708578063919203a01461073957806395d89b41146107515780639a586d26146107665780639c1e03a01461077b578063a870ddc214610790578063a9059cbb146107b4578063ab9d8b8b146107d8578063afa5e56a146107ed578063b25fa92c14610811578063b6a8933b14610878578063d391014b1461088d578063d422e810146108a2578063d73dd623146108b7578063daa6f417146108db578063dd62ed3e146108f0578063df41765e14610917578063e1ac48ad1461092c578063e69b9b6514610941578063eb8136f314610956578063ef2cc9771461096b578063f2fde38b14610980578063f3cbe7b5146109a1578063f7a084c0146109b6578063fa9ce7e7146109cb575b600080fd5b34801561028257600080fd5b5061028b6109e3565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102c55781810151838201526020016102ad565b50505050905090810190601f1680156102f25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561030c57600080fd5b50610315610a71565b60408051918252519081900360200190f35b34801561033357600080fd5b5061034b600160a060020a0360043516602435610a77565b604080519115158252519081900360200190f35b34801561036b57600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526103c6958335600160a060020a0316953695604494919390910191908190840183828082843750949750610ae29650505050505050565b005b3480156103d457600080fd5b50610315610b50565b3480156103e957600080fd5b50610315610b56565b3480156103fe57600080fd5b5061034b600435610b5d565b34801561041657600080fd5b50610315610d41565b34801561042b57600080fd5b5061034b600160a060020a0360043516610d47565b34801561044c57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261034b943694929360249392840191908190840183828082843750949750610dda9650505050505050565b3480156104a557600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261034b958335600160a060020a0316953695604494919390910191908190840183828082843750949750610eae9650505050505050565b34801561050c57600080fd5b5061034b600160a060020a0360043581169060243516604435610f21565b34801561053657600080fd5b5061031561108f565b34801561054b57600080fd5b50610315611095565b34801561056057600080fd5b5061028b600160a060020a036004351661109b565b34801561058157600080fd5b50610315600160a060020a0360043516611146565b3480156105a257600080fd5b5061034b600435611161565b3480156105ba57600080fd5b5061034b600160a060020a0360043516602435611445565b3480156105de57600080fd5b5061034b600160a060020a0360043516611638565b3480156105ff57600080fd5b5061034b600160a060020a03600435166024356116cb565b34801561062357600080fd5b506103156117c4565b34801561063857600080fd5b50610315600160a060020a03600435166117ca565b34801561065957600080fd5b506103156117e5565b34801561066e57600080fd5b506103156117eb565b34801561068357600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526103c6958335600160a060020a03169536956044949193909101919081908401838280828437509497506117f19650505050505050565b3480156106ea57600080fd5b50610315611825565b3480156106ff57600080fd5b5061031561182b565b34801561071457600080fd5b5061071d611831565b60408051600160a060020a039092168252519081900360200190f35b34801561074557600080fd5b5061034b600435611840565b34801561075d57600080fd5b5061028b611a6a565b34801561077257600080fd5b50610315611ac5565b34801561078757600080fd5b5061071d611acb565b34801561079c57600080fd5b5061034b600160a060020a0360043516602435611ada565b3480156107c057600080fd5b5061034b600160a060020a0360043516602435611bc4565b3480156107e457600080fd5b50610315611cab565b3480156107f957600080fd5b5061034b600160a060020a0360043516602435611cb1565b34801561081d57600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526103c6958335600160a060020a0316953695604494919390910191908190840183828082843750949750611dae9650505050505050565b34801561088457600080fd5b50610315611de2565b34801561089957600080fd5b5061028b611de8565b3480156108ae57600080fd5b5061071d611e0a565b3480156108c357600080fd5b5061034b600160a060020a0360043516602435611e19565b3480156108e757600080fd5b50610315611ebb565b3480156108fc57600080fd5b50610315600160a060020a0360043581169060243516611fc1565b34801561092357600080fd5b50610315611fec565b34801561093857600080fd5b50610315611ff2565b34801561094d57600080fd5b50610315611ff8565b34801561096257600080fd5b50610315611ffe565b34801561097757600080fd5b50610315612004565b34801561098c57600080fd5b506103c6600160a060020a036004351661200a565b3480156109ad57600080fd5b506103156120a3565b3480156109c257600080fd5b506103156120a9565b3480156109d757600080fd5b5061034b6004356120af565b6005805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610a695780601f10610a3e57610100808354040283529160200191610a69565b820191906000526020600020905b815481529060010190602001808311610a4c57829003601f168201915b505050505081565b600c5481565b600160a060020a03338116600081815260026020908152604080832094871680845294825280832086905580518681529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b610b4c826004836040518082805190602001908083835b60208310610b185780518252601f199092019160209182019101610af9565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050612208565b5050565b60135481565b6001545b90565b6000610b893360408051908101604052806005815260200160d960020a6430b236b4b702815250610eae565b80610bbc5750610bbc3360408051908101604052806009815260200160008051602061269a833981519152815250610eae565b1515610bc757600080fd5b601b54600160a060020a0316600090815260208190526040902054821115610bee57600080fd5b601b54600160a060020a0316600090815260208190526040902054610c19908363ffffffff61221d16565b601b54600160a060020a0316600090815260208190526040902055601954610c47908363ffffffff61221d16565b601955601554610c5d908363ffffffff61222f16565b601555600160a060020a033016600090815260208190526040902054610c89908363ffffffff61222f16565b600160a060020a033016600090815260208190526040902055601454610cb5908363ffffffff61222f16565b601455604080518381529051600160a060020a033016917ff83603201380cb82d40f5ec5247709121695277810904be461b54a50c2eaa769919081900360200190a2601b54604080518481529051600160a060020a03909216917f911175936b3ffc41904ba671fdedbc012ffacf996dd9b19c19564e9be836d1f79181900360200190a2506001919050565b600a5481565b6000610d733360408051908101604052806005815260200160d960020a6430b236b4b702815250610ae2565b600160a060020a03821615801590610d9d575030600160a060020a031682600160a060020a031614155b1515610da857600080fd5b50601b8054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b600160a060020a0333166000908152601e6020908152604082208351610e0292850190612601565b5033600160a060020a03167f3d8925c1c7e4996fa990c521127ea622328b933ff2d502e5e1cc87a2cbc1809a836040518080602001828103825283818151815260200191508051906020019080838360005b83811015610e6c578181015183820152602001610e54565b50505050905090810190601f168015610e995780820380516001836020036101000a031916815260200191505b509250505060405180910390a2506001919050565b6000610f1a836004846040518082805190602001908083835b60208310610ee65780518252601f199092019160209182019101610ec7565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092209291505061223c565b9392505050565b6000600160a060020a0383161515610f3857600080fd5b600160a060020a038416600090815260208190526040902054821115610f5d57600080fd5b600160a060020a0380851660009081526002602090815260408083203390941683529290522054821115610f9057600080fd5b600160a060020a038416600090815260208190526040902054610fb9908363ffffffff61221d16565b600160a060020a038086166000908152602081905260408082209390935590851681522054610fee908363ffffffff61222f16565b600160a060020a0380851660009081526020818152604080832094909455878316825260028152838220339093168252919091522054611034908363ffffffff61221d16565b600160a060020a038086166000818152600260209081526040808320338616845282529182902094909455805186815290519287169391926000805160206126ba833981519152929181900390910190a35060019392505050565b60085481565b60075481565b600160a060020a0381166000908152601e602090815260409182902080548351601f600260001961010060018616150201909316929092049182018490048402810184019094528084526060939283018282801561113a5780601f1061110f5761010080835404028352916020019161113a565b820191906000526020600020905b81548152906001019060200180831161111d57829003601f168201915b50505050509050919050565b600160a060020a03166000908152601d602052604090205490565b600160a060020a033316600090815260208190526040812054819083111561118857600080fd5b60125483101561119757600080fd5b600160a060020a0333166000908152601e6020908152604080832081519283019091529181526111c7919061225b565b156111d157600080fd5b601c54600160a060020a0316158015906111fa5750601c5430600160a060020a03908116911614155b151561120557600080fd5b600160a060020a03331660009081526020819052604090205461122e908463ffffffff61221d16565b600160a060020a0333166000908152602081905260409020556013548381151561125457fe5b60115491900601905061126d838263ffffffff61221d16565b601754909350611283908463ffffffff61221d16565b601755601454611299908463ffffffff61222f16565b601455600160a060020a0333166000908152601d60205260409020546112c5908463ffffffff61222f16565b600160a060020a033381166000908152601d6020908152604080832094909455309092168152908190522054611301908463ffffffff61222f16565b600160a060020a0330811660009081526020819052604080822093909355601c5490911681522054611339908263ffffffff61222f16565b601c8054600160a060020a0390811660009081526020818152604091829020949094559154825185815292519082169333909216926000805160206126ba83398151915292908290030190a330600160a060020a031633600160a060020a03166000805160206126ba833981519152856040518082815260200191505060405180910390a3604080518481529051600160a060020a033016917f824d08f0d500f68316027e046eb198c0de067df8df7cfcd57a19bbd2d9b4aa82919081900360200190a2604080518481529051600160a060020a033316917f911175936b3ffc41904ba671fdedbc012ffacf996dd9b19c19564e9be836d1f7919081900360200190a250600192915050565b60006114713360408051908101604052806005815260200160d960020a6430b236b4b702815250610eae565b806114a457506114a43360408051908101604052806009815260200160008051602061269a833981519152815250610eae565b15156114af57600080fd5b6014548211156114be57600080fd5b600160a060020a0330166000908152602081905260409020548211156114e357600080fd5b6014546114f6908363ffffffff61221d16565b60145560175461150c908363ffffffff61222f16565b601755600160a060020a033016600090815260208190526040902054611538908363ffffffff61221d16565b600160a060020a03308116600090815260208190526040808220939093559085168152205461156d908363ffffffff61222f16565b600160a060020a03808516600081815260208181526040918290209490945580518681529051919330909316926000805160206126ba83398151915292918290030190a3604080518381529051600160a060020a038516917f5250a1c4080bee0321c9806567821bdb0327d483d724a99acde6b2094932159b919081900360200190a2604080518381529051600160a060020a033016917f4792e0db799e0f504bad696edc9e62da637de65384b4540dfd8af67163bdb901919081900360200190a250600192915050565b60006116643360408051908101604052806005815260200160d960020a6430b236b4b702815250610ae2565b600160a060020a0382161580159061168e575030600160a060020a031682600160a060020a031614155b151561169957600080fd5b50601c8054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b600160a060020a0333811660009081526002602090815260408083209386168352929052908120548083111561172857600160a060020a03338116600090815260026020908152604080832093881683529290529081205561175f565b611738818463ffffffff61221d16565b600160a060020a033381166000908152600260209081526040808320938916835292905220555b600160a060020a0333811660008181526002602090815260408083209489168084529482529182902054825190815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a35060019392505050565b600d5481565b600160a060020a031660009081526020819052604090205490565b60145481565b600e5481565b61181b3360408051908101604052806005815260200160d960020a6430b236b4b702815250610ae2565b610b4c828261237a565b600b5481565b60125481565b600354600160a060020a031681565b600061186c3360408051908101604052806005815260200160d960020a6430b236b4b702815250610eae565b8061189f575061189f3360408051908101604052806009815260200160008051602061269a833981519152815250610eae565b15156118aa57600080fd5b601b54600160a060020a0316158015906118d35750601b5430600160a060020a03908116911614155b15156118de57600080fd5b601a548211156118ed57600080fd5b60105460185460195460155485010101111561190857600080fd5b601a5461191b908363ffffffff61221d16565b601a55601954611931908363ffffffff61222f16565b601955600160a060020a03301660009081526020819052604090205461195d908363ffffffff61221d16565b600160a060020a0330811660009081526020819052604080822093909355601b5490911681522054611995908363ffffffff61222f16565b601b8054600160a060020a0390811660009081526020818152604091829020949094559154825186815292519082169330909216926000805160206126ba83398151915292908290030190a3601b54604080518481529051600160a060020a03909216917ff00f8a33da5065e7344fe6e4fcbf3020eee8a0277f15f53e8de7cdcdf42cc8039181900360200190a2604080518381529051600160a060020a033016917f2a3362f8e0da2d8a91cb7286704f2973b37c833af93af032e0c58736913a4514919081900360200190a2506001919050565b6006805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610a695780601f10610a3e57610100808354040283529160200191610a69565b60105481565b601b54600160a060020a031681565b601b5460009033600160a060020a03908116911614611af857600080fd5b601954611b0b908363ffffffff61221d16565b601955601854611b21908363ffffffff61222f16565b601855601754611b37908363ffffffff61222f16565b601755604080518381529051600160a060020a038516917ff83603201380cb82d40f5ec5247709121695277810904be461b54a50c2eaa769919081900360200190a2601b54604080518481529051600160a060020a03909216917f4792e0db799e0f504bad696edc9e62da637de65384b4540dfd8af67163bdb9019181900360200190a250600192915050565b6000600160a060020a0383161515611bdb57600080fd5b600160a060020a033316600090815260208190526040902054821115611c0057600080fd5b600160a060020a033316600090815260208190526040902054611c29908363ffffffff61221d16565b600160a060020a033381166000908152602081905260408082209390935590851681522054611c5e908363ffffffff61222f16565b600160a060020a03808516600081815260208181526040918290209490945580518681529051919333909316926000805160206126ba83398151915292918290030190a350600192915050565b60175481565b6000611cdd3360408051908101604052806005815260200160d960020a6430b236b4b702815250610eae565b80611d105750611d103360408051908101604052806009815260200160008051602061269a833981519152815250610eae565b1515611d1b57600080fd5b600160a060020a0383166000908152601d602052604081205411611d3e57600080fd5b600160a060020a0383166000908152601d6020526040902054821115611d6357600080fd5b600160a060020a0383166000908152601d6020526040902054611d8c908363ffffffff61221d16565b600160a060020a0384166000908152601d602052604090205550600192915050565b611dd83360408051908101604052806005815260200160d960020a6430b236b4b702815250610ae2565b610b4c828261249b565b60115481565b604080518082019091526005815260d960020a6430b236b4b702602082015281565b601c54600160a060020a031681565b600160a060020a033381166000908152600260209081526040808320938616835292905290812054611e51908363ffffffff61222f16565b600160a060020a0333811660008181526002602090815260408083209489168084529482529182902085905581519485529051929391927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a350600192915050565b600080600080600080600e54945060009350600954421115611f1457611efe600b54611ef26009544261221d90919063ffffffff16565b9063ffffffff61257c16565b9350611f1184600163ffffffff61222f16565b93505b600a54841115611f2457600a5493505b5050600c546000915060015b838111611f9757611f61611f546064611ef2600d548661259190919063ffffffff16565b849063ffffffff61222f16565b9250611f8d611f806064611ef2600d548661259190919063ffffffff16565b839063ffffffff61222f16565b9150600101611f30565b600f54831115611fa757600f5492505b611fb7858463ffffffff61222f16565b9695505050505050565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b60185481565b60195481565b60155481565b601a5481565b600f5481565b60035433600160a060020a0390811691161461202557600080fd5b600160a060020a038116151561203a57600080fd5b600354604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60165481565b60095481565b60006120db3360408051908101604052806005815260200160d960020a6430b236b4b702815250610eae565b8061210e575061210e3360408051908101604052806009815260200160008051602061269a833981519152815250610eae565b151561211957600080fd5b601a5482111561212857600080fd5b612130611ebb565b6016548301111561214057600080fd5b601a54612153908363ffffffff61221d16565b601a55601454612169908363ffffffff61222f16565b60145560165461217f908363ffffffff61222f16565b601655604080518381529051600160a060020a033016917ff00f8a33da5065e7344fe6e4fcbf3020eee8a0277f15f53e8de7cdcdf42cc803919081900360200190a2604080518381529051600160a060020a033016917f911175936b3ffc41904ba671fdedbc012ffacf996dd9b19c19564e9be836d1f7919081900360200190a2506001919050565b612212828261223c565b1515610b4c57600080fd5b60008282111561222957fe5b50900390565b81810182811015610adc57fe5b600160a060020a03166000908152602091909152604090205460ff1690565b8051825460009184918491849160026000196101006001841615020190911604146122895760009350612371565b5060005b82546002600019610100600184161502019091160481101561236c5781818151811015156122b757fe5b90602001015160f860020a900460f860020a027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168382815460018160011615610100020316600290048110151561230b57fe5b81546001161561232a5790600052602060002090602091828204019190065b9054901a60f860020a027fff0000000000000000000000000000000000000000000000000000000000000016146123645760009350612371565b60010161228d565b600193505b50505092915050565b6123e4826004836040518082805190602001908083835b602083106123b05780518252601f199092019160209182019101612391565b51815160209384036101000a60001901801990921691161790529201948552506040519384900301909220929150506125ba565b7fd211483f91fc6eff862467f8de606587a30c8fc9981056f051b897a418df803a82826040518083600160a060020a0316600160a060020a0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561245c578181015183820152602001612444565b50505050905090810190601f1680156124895780820380516001836020036101000a031916815260200191505b50935050505060405180910390a15050565b612505826004836040518082805190602001908083835b602083106124d15780518252601f1990920191602091820191016124b2565b51815160209384036101000a60001901801990921691161790529201948552506040519384900301909220929150506125dc565b7fbfec83d64eaa953f2708271a023ab9ee82057f8f3578d548c1a4ba0b5b70048982826040518083600160a060020a0316600160a060020a0316815260200180602001828103825283818151815260200191508051906020019080838360008381101561245c578181015183820152602001612444565b6000818381151561258957fe5b049392505050565b60008215156125a257506000610adc565b508181028183828115156125b257fe5b0414610adc57fe5b600160a060020a0316600090815260209190915260409020805460ff19169055565b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061264257805160ff191683800117855561266f565b8280016001018555821561266f579182015b8281111561266f578251825591602001919060010190612654565b5061267b92915061267f565b5090565b610b5a91905b8082111561267b5760008155600101612685560065786368616e6765720000000000000000000000000000000000000000000000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820b43b29b34c59986b13e173b7360dd68cf23192b09bdd53d17f862dcfc85f52e40029
Swarm Source
bzzr://b43b29b34c59986b13e173b7360dd68cf23192b09bdd53d17f862dcfc85f52e4
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.