Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
21,000,000 CLM
Holders
152
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 8 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
CaelumToken
Compiler Version
v0.4.25+commit.59dbf8f1
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-11-02 */ pragma solidity 0.4.25; 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 Ownable { address public owner; event OwnershipRenounced(address indexed previousOwner); event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ constructor() public { owner = msg.sender; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(msg.sender == owner); _; } /** * @dev Allows the current owner to relinquish control of the contract. * @dev Renouncing to ownership will leave the contract without an owner. * It will not be possible to call the functions with the `onlyOwner` * modifier anymore. */ function renounceOwnership() public onlyOwner { emit OwnershipRenounced(owner); owner = address(0); } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param _newOwner The address to transfer ownership to. */ function transferOwnership(address _newOwner) public onlyOwner { _transferOwnership(_newOwner); } /** * @dev Transfers control of the contract to a newOwner. * @param _newOwner The address to transfer ownership to. */ function _transferOwnership(address _newOwner) internal { require(_newOwner != address(0)); emit OwnershipTransferred(owner, _newOwner); owner = _newOwner; } } interface IRemoteFunctions { function _externalAddMasternode(address) external; function _externalStopMasternode(address) external; function isMasternodeOwner(address) external view returns (bool); function userHasActiveNodes(address) external view returns (bool); } interface ICaelumMasternode { function _externalArrangeFlow() external; function rewardsProofOfWork() external view returns (uint) ; function rewardsMasternode() external view returns (uint) ; function masternodeIDcounter() external view returns (uint) ; function masternodeCandidate() external view returns (uint) ; function getUserFromID(uint) external view returns (address) ; function userCounter() external view returns(uint); function contractProgress() external view returns (uint, uint, uint, uint, uint, uint, uint, uint); } contract ERC20Basic { function totalSupply() public view returns(uint256); function balanceOf(address _who) public view returns(uint256); function transfer(address _to, uint256 _value) public returns(bool); event Transfer(address indexed from, address indexed to, uint256 value); } contract ERC20 is ERC20Basic { function allowance(address _owner, address _spender) public view returns(uint256); function transferFrom(address _from, address _to, uint256 _value) public returns(bool); function approve(address _spender, uint256 _value) public returns(bool); event Approval( address indexed owner, address indexed spender, uint256 value ); } contract BasicToken is ERC20Basic { using SafeMath for uint256; mapping(address => uint256) internal balances; uint256 internal totalSupply_; /** * @dev Total number of tokens in existence */ function totalSupply() public view returns(uint256) { return totalSupply_; } /** * @dev Transfer token for a specified address * @param _to The address to transfer to. * @param _value The amount to be transferred. */ function transfer(address _to, uint256 _value) public returns(bool) { require(_value <= balances[msg.sender]); require(_to != address(0)); balances[msg.sender] = balances[msg.sender].sub(_value); balances[_to] = balances[_to].add(_value); emit Transfer(msg.sender, _to, _value); return true; } /** * @dev Gets the balance of the specified address. * @param _owner The address to query the the balance of. * @return An uint256 representing the amount owned by the passed address. */ function balanceOf(address _owner) public view returns(uint256) { return balances[_owner]; } } contract StandardToken is ERC20, BasicToken { mapping(address => mapping(address => uint256)) internal allowed; /** * @dev Transfer tokens from one address to another * @param _from address The address which you want to send tokens from * @param _to address The address which you want to transfer to * @param _value uint256 the amount of tokens to be transferred */ function transferFrom( address _from, address _to, uint256 _value ) public returns(bool) { require(_value <= balances[_from]); require(_value <= allowed[_from][msg.sender]); require(_to != address(0)); balances[_from] = balances[_from].sub(_value); balances[_to] = balances[_to].add(_value); allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value); emit Transfer(_from, _to, _value); return true; } /** * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. * Beware that changing an allowance with this method brings the risk that someone may use both the old * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * @param _spender The address which will spend the funds. * @param _value The amount of tokens to be spent. */ function approve(address _spender, uint256 _value) public returns(bool) { allowed[msg.sender][_spender] = _value; emit Approval(msg.sender, _spender, _value); return true; } /** * @dev Function to check the amount of tokens that an owner allowed to a spender. * @param _owner address The address which owns the funds. * @param _spender address The address which will spend the funds. * @return A uint256 specifying the amount of tokens still available for the spender. */ function allowance( address _owner, address _spender ) public view returns(uint256) { return allowed[_owner][_spender]; } /** * @dev Increase the amount of tokens that an owner allowed to a spender. * approve should be called when allowed[_spender] == 0. To increment * allowed value is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) * From MonolithDAO Token.sol * @param _spender The address which will spend the funds. * @param _addedValue The amount of tokens to increase the allowance by. */ function increaseApproval( address _spender, uint256 _addedValue ) public returns(bool) { allowed[msg.sender][_spender] = ( allowed[msg.sender][_spender].add(_addedValue)); emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } /** * @dev Decrease the amount of tokens that an owner allowed to a spender. * approve should be called when allowed[_spender] == 0. To decrement * allowed value is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) * From MonolithDAO Token.sol * @param _spender The address which will spend the funds. * @param _subtractedValue The amount of tokens to decrease the allowance by. */ function decreaseApproval( address _spender, uint256 _subtractedValue ) public returns(bool) { uint256 oldValue = allowed[msg.sender][_spender]; if (_subtractedValue >= oldValue) { allowed[msg.sender][_spender] = 0; } else { allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue); } emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } } contract ERC20Interface { function totalSupply() public constant returns (uint); function balanceOf(address tokenOwner) public constant returns (uint balance); function allowance(address tokenOwner, address spender) public constant returns (uint remaining); function transfer(address to, uint tokens) public returns (bool success); function approve(address spender, uint tokens) public returns (bool success); function transferFrom(address from, address to, uint tokens) public returns (bool success); event Transfer(address indexed from, address indexed to, uint tokens); event Approval(address indexed tokenOwner, address indexed spender, uint tokens); } contract InterfaceContracts is Ownable { InterfaceContracts public _internalMod; function setModifierContract (address _t) onlyOwner public { _internalMod = InterfaceContracts(_t); } modifier onlyMiningContract() { require(msg.sender == _internalMod._contract_miner(), "Wrong sender"); _; } modifier onlyTokenContract() { require(msg.sender == _internalMod._contract_token(), "Wrong sender"); _; } modifier onlyMasternodeContract() { require(msg.sender == _internalMod._contract_masternode(), "Wrong sender"); _; } modifier onlyVotingOrOwner() { require(msg.sender == _internalMod._contract_voting() || msg.sender == owner, "Wrong sender"); _; } modifier onlyVotingContract() { require(msg.sender == _internalMod._contract_voting() || msg.sender == owner, "Wrong sender"); _; } function _contract_voting () public view returns (address) { return _internalMod._contract_voting(); } function _contract_masternode () public view returns (address) { return _internalMod._contract_masternode(); } function _contract_token () public view returns (address) { return _internalMod._contract_token(); } function _contract_miner () public view returns (address) { return _internalMod._contract_miner(); } } contract CaelumAcceptERC20 is InterfaceContracts { using SafeMath for uint; address[] public tokensList; bool setOwnContract = true; struct _whitelistTokens { address tokenAddress; bool active; uint requiredAmount; uint validUntil; uint timestamp; } mapping(address => mapping(address => uint)) public tokens; mapping(address => _whitelistTokens) acceptedTokens; event Deposit(address token, address user, uint amount, uint balance); event Withdraw(address token, address user, uint amount, uint balance); /** * @notice Allow the dev to set it's own token as accepted payment. * @dev Can be hardcoded in the constructor. Given the contract size, we decided to separate it. * @return bool */ function addOwnToken() internal returns(bool) { require(setOwnContract); addToWhitelist(this, 5000 * 1e8, 36500); setOwnContract = false; return true; } /** * @notice Add a new token as accepted payment method. * @param _token Token contract address. * @param _amount Required amount of this Token as collateral * @param daysAllowed How many days will we accept this token? */ function addToWhitelist(address _token, uint _amount, uint daysAllowed) internal { _whitelistTokens storage newToken = acceptedTokens[_token]; newToken.tokenAddress = _token; newToken.requiredAmount = _amount; newToken.timestamp = now; newToken.validUntil = now + (daysAllowed * 1 days); newToken.active = true; tokensList.push(_token); } /** * @dev internal function to determine if we accept this token. * @param _ad Token contract address * @return bool */ function isAcceptedToken(address _ad) internal view returns(bool) { return acceptedTokens[_ad].active; } /** * @dev internal function to determine the requiredAmount for a specific token. * @param _ad Token contract address * @return bool */ function getAcceptedTokenAmount(address _ad) internal view returns(uint) { return acceptedTokens[_ad].requiredAmount; } /** * @dev internal function to determine if the token is still accepted timewise. * @param _ad Token contract address * @return bool */ function isValid(address _ad) internal view returns(bool) { uint endTime = acceptedTokens[_ad].validUntil; if (block.timestamp < endTime) return true; return false; } /** * @notice Returns an array of all accepted token. You can get more details by calling getTokenDetails function with this address. * @return array Address */ function listAcceptedTokens() public view returns(address[]) { return tokensList; } /** * @notice Returns a full list of the token details * @param token Token contract address */ function getTokenDetails(address token) public view returns(address ad, uint required, bool active, uint valid) { return (acceptedTokens[token].tokenAddress, acceptedTokens[token].requiredAmount, acceptedTokens[token].active, acceptedTokens[token].validUntil); } /** * @notice Public function that allows any user to deposit accepted tokens as collateral to become a masternode. * @param token Token contract address * @param amount Amount to deposit */ function depositCollateral(address token, uint amount) public { require(isAcceptedToken(token), "ERC20 not authorised"); // Should be a token from our list require(amount == getAcceptedTokenAmount(token)); // The amount needs to match our set amount require(isValid(token)); // It should be called within the setup timeframe tokens[token][msg.sender] = tokens[token][msg.sender].add(amount); emit Deposit(token, msg.sender, amount, tokens[token][msg.sender]); require(StandardToken(token).transferFrom(msg.sender, this, amount), "error with transfer"); IRemoteFunctions(_contract_masternode())._externalAddMasternode(msg.sender); } /** * @notice Public function that allows any user to withdraw deposited tokens and stop as masternode * @param token Token contract address * @param amount Amount to withdraw */ function withdrawCollateral(address token, uint amount) public { require(token != 0, "No token specified"); // token should be an actual address require(isAcceptedToken(token), "ERC20 not authorised"); // Should be a token from our list require(amount == getAcceptedTokenAmount(token)); // The amount needs to match our set amount, allow only one withdrawal at a time. uint amountToWithdraw = amount; tokens[token][msg.sender] = tokens[token][msg.sender] - amount; emit Withdraw(token, msg.sender, amountToWithdraw, amountToWithdraw); require(StandardToken(token).transfer(msg.sender, amountToWithdraw),"error with transfer"); IRemoteFunctions(_contract_masternode())._externalStopMasternode(msg.sender); } } contract CaelumToken is CaelumAcceptERC20, StandardToken { using SafeMath for uint; ICaelumMasternode public masternodeInterface; bool public swapClosed = false; bool isOnTestNet = true; string public symbol = "CLM"; string public name = "Caelum Token"; uint8 public decimals = 8; uint256 public totalSupply = 2100000000000000; address allowedSwapAddress01 = 0x7600bF5112945F9F006c216d5d6db0df2806eDc6; address allowedSwapAddress02 = 0x16Da16948e5092A3D2aA71Aca7b57b8a9CFD8ddb; uint swapStartedBlock; mapping(address => uint) manualSwaps; mapping(address => bool) hasSwapped; event NewSwapRequest(address _swapper, uint _amount); event TokenSwapped(address _swapper, uint _amount); constructor() public { addOwnToken(); swapStartedBlock = now; } /** * @dev Allow users to upgrade from our previous tokens. * For trust issues, addresses are hardcoded. * @param _token Token the user wants to swap. */ function upgradeTokens(address _token) public { require(!hasSwapped[msg.sender], "User already swapped"); require(now <= swapStartedBlock + 1 days, "Timeframe exipred, please use manualUpgradeTokens function"); require(_token == allowedSwapAddress01 || _token == allowedSwapAddress02, "Token not allowed to swap."); uint amountToUpgrade = ERC20(_token).balanceOf(msg.sender); require(amountToUpgrade <= ERC20(_token).allowance(msg.sender, this)); require(ERC20(_token).transferFrom(msg.sender, this, amountToUpgrade)); require(ERC20(_token).balanceOf(msg.sender) == 0); tokens[_token][msg.sender] = tokens[_token][msg.sender].add(amountToUpgrade); balances[msg.sender] = balances[msg.sender].add(amountToUpgrade); emit Transfer(this, msg.sender, amountToUpgrade); emit TokenSwapped(msg.sender, amountToUpgrade); if( ERC20(allowedSwapAddress01).balanceOf(msg.sender) == 0 && ERC20(allowedSwapAddress02).balanceOf(msg.sender) == 0 ) { hasSwapped[msg.sender] = true; } } /** * @dev Allow users to upgrade manualy from our previous tokens. * For trust issues, addresses are hardcoded. * Used when a user failed to swap in time. * Dev should manually verify the origin of these tokens before allowing it. * @param _token Token the user wants to swap. */ function manualUpgradeTokens(address _token) public { require(!hasSwapped[msg.sender], "User already swapped"); require(now >= swapStartedBlock + 1 days, "Timeframe incorrect"); require(_token == allowedSwapAddress01 || _token == allowedSwapAddress02, "Token not allowed to swap."); uint amountToUpgrade = ERC20(_token).balanceOf(msg.sender); require(amountToUpgrade <= ERC20(_token).allowance(msg.sender, this)); if (ERC20(_token).transferFrom(msg.sender, this, amountToUpgrade)) { require(ERC20(_token).balanceOf(msg.sender) == 0); if( ERC20(allowedSwapAddress01).balanceOf(msg.sender) == 0 && ERC20(allowedSwapAddress02).balanceOf(msg.sender) == 0 ) { hasSwapped[msg.sender] = true; } tokens[_token][msg.sender] = tokens[_token][msg.sender].add(amountToUpgrade); manualSwaps[msg.sender] = amountToUpgrade; emit NewSwapRequest(msg.sender, amountToUpgrade); } } /** * @dev Allow users to partially upgrade manualy from our previous tokens. * For trust issues, addresses are hardcoded. * Used when a user failed to swap in time. * Dev should manually verify the origin of these tokens before allowing it. * @param _token Token the user wants to swap. */ function manualUpgradePartialTokens(address _token, uint _amount) public { require(!hasSwapped[msg.sender], "User already swapped"); require(now >= swapStartedBlock + 1 days, "Timeframe incorrect"); require(_token == allowedSwapAddress01 || _token == allowedSwapAddress02, "Token not allowed to swap."); uint amountToUpgrade = _amount; //ERC20(_token).balanceOf(msg.sender); require(amountToUpgrade <= ERC20(_token).allowance(msg.sender, this)); uint newBalance = ERC20(_token).balanceOf(msg.sender) - (amountToUpgrade); if (ERC20(_token).transferFrom(msg.sender, this, amountToUpgrade)) { require(ERC20(_token).balanceOf(msg.sender) == newBalance, "Balance error."); if( ERC20(allowedSwapAddress01).balanceOf(msg.sender) == 0 && ERC20(allowedSwapAddress02).balanceOf(msg.sender) == 0 ) { hasSwapped[msg.sender] = true; } tokens[_token][msg.sender] = tokens[_token][msg.sender].add(amountToUpgrade); manualSwaps[msg.sender] = amountToUpgrade; emit NewSwapRequest(msg.sender, amountToUpgrade); } } /** * @dev Due to some bugs in the previous contracts, a handfull of users will * be unable to fully withdraw their masternodes. Owner can replace those tokens * who are forever locked up in the old contract with new ones. */ function getLockedTokens(address _contract, address _holder) public view returns(uint) { return CaelumAcceptERC20(_contract).tokens(_contract, _holder); } /** * @dev Approve a request for manual token swaps * @param _holder Holder The user who requests a swap. */ function approveManualUpgrade(address _holder) onlyOwner public { balances[_holder] = balances[_holder].add(manualSwaps[_holder]); emit Transfer(this, _holder, manualSwaps[_holder]); } /** * @dev Decline a request for manual token swaps * @param _holder Holder The user who requests a swap. */ function declineManualUpgrade(address _token, address _holder) onlyOwner public { require(ERC20(_token).transfer(_holder, manualSwaps[_holder])); tokens[_token][_holder] = tokens[_token][_holder] - manualSwaps[_holder]; delete manualSwaps[_holder]; delete hasSwapped[_holder]; } /** * @dev Due to some bugs in the previous contracts, a handfull of users will * be unable to fully withdraw their masternodes. Owner can replace those tokens * who are forever locked up in the old contract with new ones. */ function replaceLockedTokens(address _contract, address _holder) onlyOwner public { uint amountLocked = getLockedTokens(_contract, _holder); balances[_holder] = balances[_holder].add(amountLocked); emit Transfer(this, _holder, amountLocked); hasSwapped[msg.sender] = true; } /** * @dev Used to grant the mining contract rights to reward users. * As our contracts are separate, we call this function with modifier onlyMiningContract to sent out rewards. * @param _receiver Who receives the mining reward. * @param _amount What amount to reward. */ function rewardExternal(address _receiver, uint _amount) onlyMiningContract public { balances[_receiver] = balances[_receiver].add(_amount); emit Transfer(this, _receiver, _amount); } /** * @dev We allow the masternodecontract to add tokens to our whitelist. By this approach, * we can move all voting logic to a contract that can be upgraden when needed. */ function addToWhitelistExternal(address _token, uint _amount, uint daysAllowed) onlyMasternodeContract public { addToWhitelist( _token, _amount, daysAllowed); } /** * @dev Fetch data from the actual reward. We do this to prevent pools payout out * the global reward instead of the calculated ones. * By default, pools fetch the `getMiningReward()` value and will payout this amount. */ function getMiningRewardForPool() public view returns(uint) { return masternodeInterface.rewardsProofOfWork(); } /** * @dev Return the Proof of Work reward from the masternode contract. */ function rewardsProofOfWork() public view returns(uint) { return masternodeInterface.rewardsProofOfWork(); } /** * @dev Return the masternode reward from the masternode contract. */ function rewardsMasternode() public view returns(uint) { return masternodeInterface.rewardsMasternode(); } /** * @dev Return the number of masternodes from the masternode contract. */ function masternodeCounter() public view returns(uint) { return masternodeInterface.userCounter(); } /** * @dev Return the general state from the masternode contract. */ function contractProgress() public view returns ( uint epoch, uint candidate, uint round, uint miningepoch, uint globalreward, uint powreward, uint masternodereward, uint usercounter ) { return ICaelumMasternode(_contract_masternode()).contractProgress(); } /** * @dev pull new masternode contract from the modifier contract */ function setMasternodeContract() internal { masternodeInterface = ICaelumMasternode(_contract_masternode()); } /** * Override; For some reason, truffle testing does not recognize function. * Remove before live? */ function setModifierContract (address _contract) onlyOwner public { require (now <= swapStartedBlock + 10 days); _internalMod = InterfaceContracts(_contract); setMasternodeContract(); } /** * @dev Move the voting away from token. All votes will be made from the voting */ function VoteModifierContract (address _contract) onlyVotingContract external { //_internalMod = CaelumModifierAbstract(_contract); _internalMod = InterfaceContracts(_contract); setMasternodeContract(); } /** * Owner can transfer out any accidentally sent ERC20 tokens */ function transferAnyERC20Token(address tokenAddress, uint tokens) public onlyOwner returns (bool success) { return ERC20Interface(tokenAddress).transfer(owner, tokens); } /** * @dev Needed for testnet only. Comment codeblock out before deploy, leave it as example. */ /** function setSwap(address _contract, address _contract_2) onlyOwner public { require (isOnTestNet == true); allowedSwapAddress01 = _contract; allowedSwapAddress02 = _contract_2; } */ }
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":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":"getMiningRewardForPool","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_contract_miner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"masternodeInterface","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_contract","type":"address"}],"name":"VoteModifierContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardsProofOfWork","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_contract","type":"address"}],"name":"setModifierContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"_holder","type":"address"}],"name":"declineManualUpgrade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"}],"name":"withdrawCollateral","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"_amount","type":"uint256"}],"name":"manualUpgradePartialTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"tokensList","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"tokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_receiver","type":"address"},{"name":"_amount","type":"uint256"}],"name":"rewardExternal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"contractProgress","outputs":[{"name":"epoch","type":"uint256"},{"name":"candidate","type":"uint256"},{"name":"round","type":"uint256"},{"name":"miningepoch","type":"uint256"},{"name":"globalreward","type":"uint256"},{"name":"powreward","type":"uint256"},{"name":"masternodereward","type":"uint256"},{"name":"usercounter","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"swapClosed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_contract_voting","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"_amount","type":"uint256"},{"name":"daysAllowed","type":"uint256"}],"name":"addToWhitelistExternal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"listAcceptedTokens","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"token","type":"address"}],"name":"getTokenDetails","outputs":[{"name":"ad","type":"address"},{"name":"required","type":"uint256"},{"name":"active","type":"bool"},{"name":"valid","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"}],"name":"upgradeTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"}],"name":"depositCollateral","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"}],"name":"manualUpgradeTokens","outputs":[],"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":"_contract","type":"address"},{"name":"_holder","type":"address"}],"name":"getLockedTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_contract_masternode","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_contract_token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_internalMod","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"masternodeCounter","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_contract","type":"address"},{"name":"_holder","type":"address"}],"name":"replaceLockedTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","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":false,"inputs":[{"name":"tokenAddress","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transferAnyERC20Token","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_holder","type":"address"}],"name":"approveManualUpgrade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rewardsMasternode","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"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_swapper","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"NewSwapRequest","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_swapper","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"TokenSwapped","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"user","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"balance","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"user","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"balance","type":"uint256"}],"name":"Withdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]
Contract Creation Code
6003805460ff191660011781556009805460a060020a61ffff021916750100000000000000000000000000000000000000000017905560c060405260808190527f434c4d000000000000000000000000000000000000000000000000000000000060a09081526200007491600a919062000245565b5060408051808201909152600c8082527f4361656c756d20546f6b656e00000000000000000000000000000000000000006020909201918252620000bb91600b9162000245565b50600c805460ff19166008179055660775f05a074000600d55600e8054600160a060020a0319908116737600bf5112945f9f006c216d5d6db0df2806edc617909155600f80549091167316da16948e5092a3d2aa71aca7b57b8a9cfd8ddb1790553480156200012957600080fd5b5060008054600160a060020a031916331790556200014f6401000000006200015a810204565b5042601055620002e7565b60035460009060ff1615156200016f57600080fd5b6200018c3064746a528800618e946401000000006200019d810204565b506003805460ff1916905560015b90565b600160a060020a039092166000818152600560205260408120805460018083019590955542600383018190556201518090960290950160028083019190915560a060020a60ff0219600160a060020a031996871685171674010000000000000000000000000000000000000000179091558054938401815590527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace9091018054909216179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200028857805160ff1916838001178555620002b8565b82800160010185558215620002b8579182015b82811115620002b85782518255916020019190600101906200029b565b50620002c6929150620002ca565b5090565b6200019a91905b80821115620002c65760008155600101620002d1565b61325e80620002f76000396000f3006080604052600436106102005763ffffffff60e060020a60003504166306fdde038114610205578063095ea7b31461028f5780630b2cb8a3146102c75780630de33210146102ee5780630e7b2f311461031f5780630ecf42531461033457806318160ddd146103575780631ad93a9b146102c75780631dfb396f1461036c57806323b872dd1461038d5780632ce85ad8146103b7578063313ce567146103de578063350c35e91461040957806342aef49d1461042d5780634d12e34e14610451578063508493bc146104695780636618846314610490578063680d5762146104b457806370a08231146104d8578063715018a6146104f95780637558d81e1461050e5780637d33bf541461056457806381ae8d861461057957806385ae7b2c1461058e5780638843c1ba146105b557806388aa8bee1461061a5780638da5cb5b1461066b57806395d89b4114610680578063a1c5032914610695578063a5d5db0c146106b6578063a88a7b46146106da578063a9059cbb146106fb578063a95bede41461071f578063aad5b4ae14610746578063be550be41461075b578063c28b294714610770578063c722cf4c14610785578063c7c811b21461079a578063d73dd623146107c1578063dc39d06d146107e5578063dd62ed3e14610809578063e114187614610830578063e1eca32714610851578063f2fde38b14610866575b600080fd5b34801561021157600080fd5b5061021a610887565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561025457818101518382015260200161023c565b50505050905090810190601f1680156102815780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561029b57600080fd5b506102b3600160a060020a0360043516602435610915565b604080519115158252519081900360200190f35b3480156102d357600080fd5b506102dc61097b565b60408051918252519081900360200190f35b3480156102fa57600080fd5b50610303610a0b565b60408051600160a060020a039092168252519081900360200190f35b34801561032b57600080fd5b50610303610a6a565b34801561034057600080fd5b50610355600160a060020a0360043516610a79565b005b34801561036357600080fd5b506102dc610ba1565b34801561037857600080fd5b50610355600160a060020a0360043516610ba7565b34801561039957600080fd5b506102b3600160a060020a0360043581169060243516604435610bd2565b3480156103c357600080fd5b50610355600160a060020a0360043581169060243516610d37565b3480156103ea57600080fd5b506103f3610e4d565b6040805160ff9092168252519081900360200190f35b34801561041557600080fd5b50610355600160a060020a0360043516602435610e56565b34801561043957600080fd5b50610355600160a060020a0360043516602435611109565b34801561045d57600080fd5b50610303600435611693565b34801561047557600080fd5b506102dc600160a060020a03600435811690602435166116bb565b34801561049c57600080fd5b506102b3600160a060020a03600435166024356116d8565b3480156104c057600080fd5b50610355600160a060020a03600435166024356117c7565b3480156104e457600080fd5b506102dc600160a060020a0360043516611915565b34801561050557600080fd5b50610355611930565b34801561051a57600080fd5b5061052361199c565b604080519889526020890197909752878701959095526060870193909352608086019190915260a085015260c084015260e083015251908190036101000190f35b34801561057057600080fd5b506102b3611a58565b34801561058557600080fd5b50610303611a79565b34801561059a57600080fd5b50610355600160a060020a0360043516602435604435611ad8565b3480156105c157600080fd5b506105ca611bc6565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156106065781810151838201526020016105ee565b505050509050019250505060405180910390f35b34801561062657600080fd5b5061063b600160a060020a0360043516611c28565b60408051600160a060020a0390951685526020850193909352901515838301526060830152519081900360800190f35b34801561067757600080fd5b50610303611c73565b34801561068c57600080fd5b5061021a611c82565b3480156106a157600080fd5b50610355600160a060020a0360043516611cdd565b3480156106c257600080fd5b50610355600160a060020a036004351660243561227f565b3480156106e657600080fd5b50610355600160a060020a0360043516612501565b34801561070757600080fd5b506102b3600160a060020a0360043516602435612a2f565b34801561072b57600080fd5b506102dc600160a060020a0360043581169060243516612afe565b34801561075257600080fd5b50610303612b9e565b34801561076757600080fd5b50610303612bfd565b34801561077c57600080fd5b50610303612c5c565b34801561079157600080fd5b506102dc612c6b565b3480156107a657600080fd5b50610355600160a060020a0360043581169060243516612cca565b3480156107cd57600080fd5b506102b3600160a060020a0360043516602435612d7a565b3480156107f157600080fd5b506102b3600160a060020a0360043516602435612e13565b34801561081557600080fd5b506102dc600160a060020a0360043581169060243516612e9b565b34801561083c57600080fd5b50610355600160a060020a0360043516612ec6565b34801561085d57600080fd5b506102dc612f60565b34801561087257600080fd5b50610355600160a060020a0360043516612fbf565b600b805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561090d5780601f106108e25761010080835404028352916020019161090d565b820191906000526020600020905b8154815290600101906020018083116108f057829003601f168201915b505050505081565b336000818152600860209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b600954604080517f1ad93a9b0000000000000000000000000000000000000000000000000000000081529051600092600160a060020a031691631ad93a9b91600480830192602092919082900301818787803b1580156109da57600080fd5b505af11580156109ee573d6000803e3d6000fd5b505050506040513d6020811015610a0457600080fd5b5051905090565b600154604080517f0de332100000000000000000000000000000000000000000000000000000000081529051600092600160a060020a031691630de3321091600480830192602092919082900301818787803b1580156109da57600080fd5b600954600160a060020a031681565b600160009054906101000a9004600160a060020a0316600160a060020a03166381ae8d866040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610acc57600080fd5b505af1158015610ae0573d6000803e3d6000fd5b505050506040513d6020811015610af657600080fd5b5051600160a060020a0316331480610b185750600054600160a060020a031633145b1515610b6e576040805160e560020a62461bcd02815260206004820152600c60248201527f57726f6e672073656e6465720000000000000000000000000000000000000000604482015290519081900360640190fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038316179055610b9e612fdf565b50565b600d5481565b600054600160a060020a03163314610bbe57600080fd5b601054620d2f0001421115610b6e57600080fd5b600160a060020a038316600090815260066020526040812054821115610bf757600080fd5b600160a060020a0384166000908152600860209081526040808320338452909152902054821115610c2757600080fd5b600160a060020a0383161515610c3c57600080fd5b600160a060020a038416600090815260066020526040902054610c65908363ffffffff61301616565b600160a060020a038086166000908152600660205260408082209390935590851681522054610c9a908363ffffffff61302d16565b600160a060020a038085166000908152600660209081526040808320949094559187168152600882528281203382529091522054610cde908363ffffffff61301616565b600160a060020a0380861660008181526008602090815260408083203384528252918290209490945580518681529051928716939192600080516020613213833981519152929181900390910190a35060019392505050565b600054600160a060020a03163314610d4e57600080fd5b600160a060020a0381811660008181526011602090815260408083205481517fa9059cbb00000000000000000000000000000000000000000000000000000000815260048101959095526024850152519386169363a9059cbb93604480820194918390030190829087803b158015610dc557600080fd5b505af1158015610dd9573d6000803e3d6000fd5b505050506040513d6020811015610def57600080fd5b50511515610dfc57600080fd5b600160a060020a03908116600081815260116020908152604080832080549690951683526004825280832093835292815282822080549590950390945591829055601290925220805460ff19169055565b600c5460ff1681565b6000600160a060020a0383161515610eb8576040805160e560020a62461bcd02815260206004820152601260248201527f4e6f20746f6b656e207370656369666965640000000000000000000000000000604482015290519081900360640190fd5b610ec183613046565b1515610f17576040805160e560020a62461bcd02815260206004820152601460248201527f4552433230206e6f7420617574686f7269736564000000000000000000000000604482015290519081900360640190fd5b610f208361307c565b8214610f2b57600080fd5b50600160a060020a0382166000818152600460209081526040808320338085529083529281902080548690039055805193845290830191909152818101839052606082018390525182917ff341246adaac6f497bc2a656f546ab9e182111d630394f0c57c710a59a2cb567919081900360800190a1604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018390529051600160a060020a0385169163a9059cbb9160448083019260209291908290030181600087803b15801561100857600080fd5b505af115801561101c573d6000803e3d6000fd5b505050506040513d602081101561103257600080fd5b5051151561108a576040805160e560020a62461bcd02815260206004820152601360248201527f6572726f722077697468207472616e7366657200000000000000000000000000604482015290519081900360640190fd5b611092612b9e565b600160a060020a031663c56280b1336040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b1580156110ec57600080fd5b505af1158015611100573d6000803e3d6000fd5b50505050505050565b33600090815260126020526040812054819060ff1615611173576040805160e560020a62461bcd02815260206004820152601460248201527f5573657220616c72656164792073776170706564000000000000000000000000604482015290519081900360640190fd5b60105462015180014210156111d2576040805160e560020a62461bcd02815260206004820152601360248201527f54696d656672616d6520696e636f727265637400000000000000000000000000604482015290519081900360640190fd5b600e54600160a060020a03858116911614806111fb5750600f54600160a060020a038581169116145b1515611251576040805160e560020a62461bcd02815260206004820152601a60248201527f546f6b656e206e6f7420616c6c6f77656420746f20737761702e000000000000604482015290519081900360640190fd5b604080517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523360048201523060248201529051849350600160a060020a0386169163dd62ed3e9160448083019260209291908290030181600087803b1580156112bb57600080fd5b505af11580156112cf573d6000803e3d6000fd5b505050506040513d60208110156112e557600080fd5b50518211156112f357600080fd5b6040805160e060020a6370a0823102815233600482015290518391600160a060020a038716916370a08231916024808201926020929091908290030181600087803b15801561134157600080fd5b505af1158015611355573d6000803e3d6000fd5b505050506040513d602081101561136b57600080fd5b50516040805160e060020a6323b872dd028152336004820152306024820152604481018690529051929091039250600160a060020a038616916323b872dd916064808201926020929091908290030181600087803b1580156113cc57600080fd5b505af11580156113e0573d6000803e3d6000fd5b505050506040513d60208110156113f657600080fd5b50511561168d576040805160e060020a6370a0823102815233600482015290518291600160a060020a038716916370a08231916024808201926020929091908290030181600087803b15801561144b57600080fd5b505af115801561145f573d6000803e3d6000fd5b505050506040513d602081101561147557600080fd5b5051146114cc576040805160e560020a62461bcd02815260206004820152600e60248201527f42616c616e6365206572726f722e000000000000000000000000000000000000604482015290519081900360640190fd5b600e546040805160e060020a6370a082310281523360048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b15801561151c57600080fd5b505af1158015611530573d6000803e3d6000fd5b505050506040513d602081101561154657600080fd5b50511580156115ce5750600f546040805160e060020a6370a082310281523360048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b1580156115a057600080fd5b505af11580156115b4573d6000803e3d6000fd5b505050506040513d60208110156115ca57600080fd5b5051155b156115ee57336000908152601260205260409020805460ff191660011790555b600160a060020a0384166000908152600460209081526040808320338452909152902054611622908363ffffffff61302d16565b600160a060020a0385166000908152600460209081526040808320338085529083528184209490945560118252918290208590558151928352820184905280517f773870998542487d493dab21355d6bf368d08d39e927b7ec1eecd3171707075e9281900390910190a15b50505050565b60028054829081106116a157fe5b600091825260209091200154600160a060020a0316905081565b600460209081526000928352604080842090915290825290205481565b336000908152600860209081526040808320600160a060020a038616845290915281205480831061172c57336000908152600860209081526040808320600160a060020a0388168452909152812055611761565b61173c818463ffffffff61301616565b336000908152600860209081526040808320600160a060020a03891684529091529020555b336000818152600860209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b600160009054906101000a9004600160a060020a0316600160a060020a0316630de332106040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561181a57600080fd5b505af115801561182e573d6000803e3d6000fd5b505050506040513d602081101561184457600080fd5b5051600160a060020a031633146118a5576040805160e560020a62461bcd02815260206004820152600c60248201527f57726f6e672073656e6465720000000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a0382166000908152600660205260409020546118ce908263ffffffff61302d16565b600160a060020a0383166000818152600660209081526040918290209390935580518481529051919230926000805160206132138339815191529281900390910190a35050565b600160a060020a031660009081526006602052604090205490565b600054600160a060020a0316331461194757600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b6000806000806000806000806119b0612b9e565b600160a060020a0316637558d81e6040518163ffffffff1660e060020a02815260040161010060405180830381600087803b1580156119ee57600080fd5b505af1158015611a02573d6000803e3d6000fd5b505050506040513d610100811015611a1957600080fd5b508051602082015160408301516060840151608085015160a086015160c087015160e090970151959f949e50929c50909a509850965091945092509050565b60095474010000000000000000000000000000000000000000900460ff1681565b600154604080517f81ae8d860000000000000000000000000000000000000000000000000000000081529051600092600160a060020a0316916381ae8d8691600480830192602092919082900301818787803b1580156109da57600080fd5b600160009054906101000a9004600160a060020a0316600160a060020a031663aad5b4ae6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015611b2b57600080fd5b505af1158015611b3f573d6000803e3d6000fd5b505050506040513d6020811015611b5557600080fd5b5051600160a060020a03163314611bb6576040805160e560020a62461bcd02815260206004820152600c60248201527f57726f6e672073656e6465720000000000000000000000000000000000000000604482015290519081900360640190fd5b611bc183838361309a565b505050565b60606002805480602002602001604051908101604052809291908181526020018280548015611c1e57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311611c00575b5050505050905090565b600160a060020a039081166000908152600560205260409020805460018201546002909201549281169391927401000000000000000000000000000000000000000090910460ff1691565b600054600160a060020a031681565b600a805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561090d5780601f106108e25761010080835404028352916020019161090d565b3360009081526012602052604081205460ff1615611d45576040805160e560020a62461bcd02815260206004820152601460248201527f5573657220616c72656164792073776170706564000000000000000000000000604482015290519081900360640190fd5b6010546201518001421115611dca576040805160e560020a62461bcd02815260206004820152603a60248201527f54696d656672616d6520657869707265642c20706c6561736520757365206d6160448201527f6e75616c55706772616465546f6b656e732066756e6374696f6e000000000000606482015290519081900360840190fd5b600e54600160a060020a0383811691161480611df35750600f54600160a060020a038381169116145b1515611e49576040805160e560020a62461bcd02815260206004820152601a60248201527f546f6b656e206e6f7420616c6c6f77656420746f20737761702e000000000000604482015290519081900360640190fd5b6040805160e060020a6370a082310281523360048201529051600160a060020a038416916370a082319160248083019260209291908290030181600087803b158015611e9457600080fd5b505af1158015611ea8573d6000803e3d6000fd5b505050506040513d6020811015611ebe57600080fd5b5051604080517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523360048201523060248201529051919250600160a060020a0384169163dd62ed3e916044808201926020929091908290030181600087803b158015611f2b57600080fd5b505af1158015611f3f573d6000803e3d6000fd5b505050506040513d6020811015611f5557600080fd5b5051811115611f6357600080fd5b6040805160e060020a6323b872dd028152336004820152306024820152604481018390529051600160a060020a038416916323b872dd9160648083019260209291908290030181600087803b158015611fbb57600080fd5b505af1158015611fcf573d6000803e3d6000fd5b505050506040513d6020811015611fe557600080fd5b50511515611ff257600080fd5b6040805160e060020a6370a082310281523360048201529051600160a060020a038416916370a082319160248083019260209291908290030181600087803b15801561203d57600080fd5b505af1158015612051573d6000803e3d6000fd5b505050506040513d602081101561206757600080fd5b50511561207357600080fd5b600160a060020a03821660009081526004602090815260408083203384529091529020546120a7908263ffffffff61302d16565b600160a060020a03831660009081526004602090815260408083203384528252808320939093556006905220546120e4908263ffffffff61302d16565b336000818152600660209081526040918290209390935580518481529051919230926000805160206132138339815191529281900390910190a3604080513381526020810183905281517f5cf069f6412972a6c15aa4f5d0a340bfc369c3118f4cf8960b568ffe7ae46213929181900390910190a1600e546040805160e060020a6370a082310281523360048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b1580156121a957600080fd5b505af11580156121bd573d6000803e3d6000fd5b505050506040513d60208110156121d357600080fd5b505115801561225b5750600f546040805160e060020a6370a082310281523360048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b15801561222d57600080fd5b505af1158015612241573d6000803e3d6000fd5b505050506040513d602081101561225757600080fd5b5051155b1561227b57336000908152601260205260409020805460ff191660011790555b5050565b61228882613046565b15156122de576040805160e560020a62461bcd02815260206004820152601460248201527f4552433230206e6f7420617574686f7269736564000000000000000000000000604482015290519081900360640190fd5b6122e78261307c565b81146122f257600080fd5b6122fb8261315d565b151561230657600080fd5b600160a060020a038216600090815260046020908152604080832033845290915290205461233a908263ffffffff61302d16565b600160a060020a03831660008181526004602090815260408083203380855290835292819020859055805193845290830191909152818101849052606082019290925290517fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d79181900360800190a16040805160e060020a6323b872dd028152336004820152306024820152604481018390529051600160a060020a038416916323b872dd9160648083019260209291908290030181600087803b15801561240157600080fd5b505af1158015612415573d6000803e3d6000fd5b505050506040513d602081101561242b57600080fd5b50511515612483576040805160e560020a62461bcd02815260206004820152601360248201527f6572726f722077697468207472616e7366657200000000000000000000000000604482015290519081900360640190fd5b61248b612b9e565b600160a060020a031663d230df6a336040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b1580156124e557600080fd5b505af11580156124f9573d6000803e3d6000fd5b505050505050565b3360009081526012602052604081205460ff1615612569576040805160e560020a62461bcd02815260206004820152601460248201527f5573657220616c72656164792073776170706564000000000000000000000000604482015290519081900360640190fd5b60105462015180014210156125c8576040805160e560020a62461bcd02815260206004820152601360248201527f54696d656672616d6520696e636f727265637400000000000000000000000000604482015290519081900360640190fd5b600e54600160a060020a03838116911614806125f15750600f54600160a060020a038381169116145b1515612647576040805160e560020a62461bcd02815260206004820152601a60248201527f546f6b656e206e6f7420616c6c6f77656420746f20737761702e000000000000604482015290519081900360640190fd5b6040805160e060020a6370a082310281523360048201529051600160a060020a038416916370a082319160248083019260209291908290030181600087803b15801561269257600080fd5b505af11580156126a6573d6000803e3d6000fd5b505050506040513d60208110156126bc57600080fd5b5051604080517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523360048201523060248201529051919250600160a060020a0384169163dd62ed3e916044808201926020929091908290030181600087803b15801561272957600080fd5b505af115801561273d573d6000803e3d6000fd5b505050506040513d602081101561275357600080fd5b505181111561276157600080fd5b6040805160e060020a6323b872dd028152336004820152306024820152604481018390529051600160a060020a038416916323b872dd9160648083019260209291908290030181600087803b1580156127b957600080fd5b505af11580156127cd573d6000803e3d6000fd5b505050506040513d60208110156127e357600080fd5b50511561227b576040805160e060020a6370a082310281523360048201529051600160a060020a038416916370a082319160248083019260209291908290030181600087803b15801561283557600080fd5b505af1158015612849573d6000803e3d6000fd5b505050506040513d602081101561285f57600080fd5b50511561286b57600080fd5b600e546040805160e060020a6370a082310281523360048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b1580156128bb57600080fd5b505af11580156128cf573d6000803e3d6000fd5b505050506040513d60208110156128e557600080fd5b505115801561296d5750600f546040805160e060020a6370a082310281523360048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b15801561293f57600080fd5b505af1158015612953573d6000803e3d6000fd5b505050506040513d602081101561296957600080fd5b5051155b1561298d57336000908152601260205260409020805460ff191660011790555b600160a060020a03821660009081526004602090815260408083203384529091529020546129c1908263ffffffff61302d16565b600160a060020a0383166000908152600460209081526040808320338085529083528184209490945560118252918290208490558151928352820183905280517f773870998542487d493dab21355d6bf368d08d39e927b7ec1eecd3171707075e9281900390910190a15050565b33600090815260066020526040812054821115612a4b57600080fd5b600160a060020a0383161515612a6057600080fd5b33600090815260066020526040902054612a80908363ffffffff61301616565b3360009081526006602052604080822092909255600160a060020a03851681522054612ab2908363ffffffff61302d16565b600160a060020a0384166000818152600660209081526040918290209390935580518581529051919233926000805160206132138339815191529281900390910190a350600192915050565b604080517f508493bc000000000000000000000000000000000000000000000000000000008152600160a060020a0380851660048301819052908416602483015291516000929163508493bc91604480830192602092919082900301818787803b158015612b6b57600080fd5b505af1158015612b7f573d6000803e3d6000fd5b505050506040513d6020811015612b9557600080fd5b50519392505050565b600154604080517faad5b4ae0000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169163aad5b4ae91600480830192602092919082900301818787803b1580156109da57600080fd5b600154604080517fbe550be40000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169163be550be491600480830192602092919082900301818787803b1580156109da57600080fd5b600154600160a060020a031681565b600954604080517ff0c37a590000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169163f0c37a5991600480830192602092919082900301818787803b1580156109da57600080fd5b60008054600160a060020a03163314612ce257600080fd5b612cec8383612afe565b600160a060020a038316600090815260066020526040902054909150612d18908263ffffffff61302d16565b600160a060020a0383166000818152600660209081526040918290209390935580518481529051919230926000805160206132138339815191529281900390910190a35050336000908152601260205260409020805460ff1916600117905550565b336000908152600860209081526040808320600160a060020a0386168452909152812054612dae908363ffffffff61302d16565b336000818152600860209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b60008054600160a060020a03163314612e2b57600080fd5b60008054604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0392831660048201526024810186905290519186169263a9059cbb926044808401936020939083900390910190829087803b158015612b6b57600080fd5b600160a060020a03918216600090815260086020908152604080832093909416825291909152205490565b600054600160a060020a03163314612edd57600080fd5b600160a060020a038116600090815260116020908152604080832054600690925290912054612f119163ffffffff61302d16565b600160a060020a0382166000818152600660209081526040808320949094556011815290839020548351908152925191923092600080516020613213833981519152929181900390910190a350565b600954604080517fe1eca3270000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169163e1eca32791600480830192602092919082900301818787803b1580156109da57600080fd5b600054600160a060020a03163314612fd657600080fd5b610b9e81613195565b612fe7612b9e565b6009805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000808383111561302657600080fd5b5050900390565b60008282018381101561303f57600080fd5b9392505050565b600160a060020a031660009081526005602052604090205474010000000000000000000000000000000000000000900460ff1690565b600160a060020a031660009081526005602052604090206001015490565b600160a060020a039092166000818152600560205260408120805460018083019590955542600383018190556201518090960290950160028083019190915574ff00000000000000000000000000000000000000001973ffffffffffffffffffffffffffffffffffffffff1996871685171674010000000000000000000000000000000000000000179091558054938401815590527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace9091018054909216179055565b600160a060020a0381166000908152600560205260408120600201544281111561318a576001915061318f565b600091505b50919050565b600160a060020a03811615156131aa57600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820d01f7e94808b4cf074389050506cd19a9090847c642adffd59ac38dcdb351eb00029
Deployed Bytecode
0x6080604052600436106102005763ffffffff60e060020a60003504166306fdde038114610205578063095ea7b31461028f5780630b2cb8a3146102c75780630de33210146102ee5780630e7b2f311461031f5780630ecf42531461033457806318160ddd146103575780631ad93a9b146102c75780631dfb396f1461036c57806323b872dd1461038d5780632ce85ad8146103b7578063313ce567146103de578063350c35e91461040957806342aef49d1461042d5780634d12e34e14610451578063508493bc146104695780636618846314610490578063680d5762146104b457806370a08231146104d8578063715018a6146104f95780637558d81e1461050e5780637d33bf541461056457806381ae8d861461057957806385ae7b2c1461058e5780638843c1ba146105b557806388aa8bee1461061a5780638da5cb5b1461066b57806395d89b4114610680578063a1c5032914610695578063a5d5db0c146106b6578063a88a7b46146106da578063a9059cbb146106fb578063a95bede41461071f578063aad5b4ae14610746578063be550be41461075b578063c28b294714610770578063c722cf4c14610785578063c7c811b21461079a578063d73dd623146107c1578063dc39d06d146107e5578063dd62ed3e14610809578063e114187614610830578063e1eca32714610851578063f2fde38b14610866575b600080fd5b34801561021157600080fd5b5061021a610887565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561025457818101518382015260200161023c565b50505050905090810190601f1680156102815780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561029b57600080fd5b506102b3600160a060020a0360043516602435610915565b604080519115158252519081900360200190f35b3480156102d357600080fd5b506102dc61097b565b60408051918252519081900360200190f35b3480156102fa57600080fd5b50610303610a0b565b60408051600160a060020a039092168252519081900360200190f35b34801561032b57600080fd5b50610303610a6a565b34801561034057600080fd5b50610355600160a060020a0360043516610a79565b005b34801561036357600080fd5b506102dc610ba1565b34801561037857600080fd5b50610355600160a060020a0360043516610ba7565b34801561039957600080fd5b506102b3600160a060020a0360043581169060243516604435610bd2565b3480156103c357600080fd5b50610355600160a060020a0360043581169060243516610d37565b3480156103ea57600080fd5b506103f3610e4d565b6040805160ff9092168252519081900360200190f35b34801561041557600080fd5b50610355600160a060020a0360043516602435610e56565b34801561043957600080fd5b50610355600160a060020a0360043516602435611109565b34801561045d57600080fd5b50610303600435611693565b34801561047557600080fd5b506102dc600160a060020a03600435811690602435166116bb565b34801561049c57600080fd5b506102b3600160a060020a03600435166024356116d8565b3480156104c057600080fd5b50610355600160a060020a03600435166024356117c7565b3480156104e457600080fd5b506102dc600160a060020a0360043516611915565b34801561050557600080fd5b50610355611930565b34801561051a57600080fd5b5061052361199c565b604080519889526020890197909752878701959095526060870193909352608086019190915260a085015260c084015260e083015251908190036101000190f35b34801561057057600080fd5b506102b3611a58565b34801561058557600080fd5b50610303611a79565b34801561059a57600080fd5b50610355600160a060020a0360043516602435604435611ad8565b3480156105c157600080fd5b506105ca611bc6565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156106065781810151838201526020016105ee565b505050509050019250505060405180910390f35b34801561062657600080fd5b5061063b600160a060020a0360043516611c28565b60408051600160a060020a0390951685526020850193909352901515838301526060830152519081900360800190f35b34801561067757600080fd5b50610303611c73565b34801561068c57600080fd5b5061021a611c82565b3480156106a157600080fd5b50610355600160a060020a0360043516611cdd565b3480156106c257600080fd5b50610355600160a060020a036004351660243561227f565b3480156106e657600080fd5b50610355600160a060020a0360043516612501565b34801561070757600080fd5b506102b3600160a060020a0360043516602435612a2f565b34801561072b57600080fd5b506102dc600160a060020a0360043581169060243516612afe565b34801561075257600080fd5b50610303612b9e565b34801561076757600080fd5b50610303612bfd565b34801561077c57600080fd5b50610303612c5c565b34801561079157600080fd5b506102dc612c6b565b3480156107a657600080fd5b50610355600160a060020a0360043581169060243516612cca565b3480156107cd57600080fd5b506102b3600160a060020a0360043516602435612d7a565b3480156107f157600080fd5b506102b3600160a060020a0360043516602435612e13565b34801561081557600080fd5b506102dc600160a060020a0360043581169060243516612e9b565b34801561083c57600080fd5b50610355600160a060020a0360043516612ec6565b34801561085d57600080fd5b506102dc612f60565b34801561087257600080fd5b50610355600160a060020a0360043516612fbf565b600b805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561090d5780601f106108e25761010080835404028352916020019161090d565b820191906000526020600020905b8154815290600101906020018083116108f057829003601f168201915b505050505081565b336000818152600860209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b600954604080517f1ad93a9b0000000000000000000000000000000000000000000000000000000081529051600092600160a060020a031691631ad93a9b91600480830192602092919082900301818787803b1580156109da57600080fd5b505af11580156109ee573d6000803e3d6000fd5b505050506040513d6020811015610a0457600080fd5b5051905090565b600154604080517f0de332100000000000000000000000000000000000000000000000000000000081529051600092600160a060020a031691630de3321091600480830192602092919082900301818787803b1580156109da57600080fd5b600954600160a060020a031681565b600160009054906101000a9004600160a060020a0316600160a060020a03166381ae8d866040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610acc57600080fd5b505af1158015610ae0573d6000803e3d6000fd5b505050506040513d6020811015610af657600080fd5b5051600160a060020a0316331480610b185750600054600160a060020a031633145b1515610b6e576040805160e560020a62461bcd02815260206004820152600c60248201527f57726f6e672073656e6465720000000000000000000000000000000000000000604482015290519081900360640190fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038316179055610b9e612fdf565b50565b600d5481565b600054600160a060020a03163314610bbe57600080fd5b601054620d2f0001421115610b6e57600080fd5b600160a060020a038316600090815260066020526040812054821115610bf757600080fd5b600160a060020a0384166000908152600860209081526040808320338452909152902054821115610c2757600080fd5b600160a060020a0383161515610c3c57600080fd5b600160a060020a038416600090815260066020526040902054610c65908363ffffffff61301616565b600160a060020a038086166000908152600660205260408082209390935590851681522054610c9a908363ffffffff61302d16565b600160a060020a038085166000908152600660209081526040808320949094559187168152600882528281203382529091522054610cde908363ffffffff61301616565b600160a060020a0380861660008181526008602090815260408083203384528252918290209490945580518681529051928716939192600080516020613213833981519152929181900390910190a35060019392505050565b600054600160a060020a03163314610d4e57600080fd5b600160a060020a0381811660008181526011602090815260408083205481517fa9059cbb00000000000000000000000000000000000000000000000000000000815260048101959095526024850152519386169363a9059cbb93604480820194918390030190829087803b158015610dc557600080fd5b505af1158015610dd9573d6000803e3d6000fd5b505050506040513d6020811015610def57600080fd5b50511515610dfc57600080fd5b600160a060020a03908116600081815260116020908152604080832080549690951683526004825280832093835292815282822080549590950390945591829055601290925220805460ff19169055565b600c5460ff1681565b6000600160a060020a0383161515610eb8576040805160e560020a62461bcd02815260206004820152601260248201527f4e6f20746f6b656e207370656369666965640000000000000000000000000000604482015290519081900360640190fd5b610ec183613046565b1515610f17576040805160e560020a62461bcd02815260206004820152601460248201527f4552433230206e6f7420617574686f7269736564000000000000000000000000604482015290519081900360640190fd5b610f208361307c565b8214610f2b57600080fd5b50600160a060020a0382166000818152600460209081526040808320338085529083529281902080548690039055805193845290830191909152818101839052606082018390525182917ff341246adaac6f497bc2a656f546ab9e182111d630394f0c57c710a59a2cb567919081900360800190a1604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018390529051600160a060020a0385169163a9059cbb9160448083019260209291908290030181600087803b15801561100857600080fd5b505af115801561101c573d6000803e3d6000fd5b505050506040513d602081101561103257600080fd5b5051151561108a576040805160e560020a62461bcd02815260206004820152601360248201527f6572726f722077697468207472616e7366657200000000000000000000000000604482015290519081900360640190fd5b611092612b9e565b600160a060020a031663c56280b1336040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b1580156110ec57600080fd5b505af1158015611100573d6000803e3d6000fd5b50505050505050565b33600090815260126020526040812054819060ff1615611173576040805160e560020a62461bcd02815260206004820152601460248201527f5573657220616c72656164792073776170706564000000000000000000000000604482015290519081900360640190fd5b60105462015180014210156111d2576040805160e560020a62461bcd02815260206004820152601360248201527f54696d656672616d6520696e636f727265637400000000000000000000000000604482015290519081900360640190fd5b600e54600160a060020a03858116911614806111fb5750600f54600160a060020a038581169116145b1515611251576040805160e560020a62461bcd02815260206004820152601a60248201527f546f6b656e206e6f7420616c6c6f77656420746f20737761702e000000000000604482015290519081900360640190fd5b604080517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523360048201523060248201529051849350600160a060020a0386169163dd62ed3e9160448083019260209291908290030181600087803b1580156112bb57600080fd5b505af11580156112cf573d6000803e3d6000fd5b505050506040513d60208110156112e557600080fd5b50518211156112f357600080fd5b6040805160e060020a6370a0823102815233600482015290518391600160a060020a038716916370a08231916024808201926020929091908290030181600087803b15801561134157600080fd5b505af1158015611355573d6000803e3d6000fd5b505050506040513d602081101561136b57600080fd5b50516040805160e060020a6323b872dd028152336004820152306024820152604481018690529051929091039250600160a060020a038616916323b872dd916064808201926020929091908290030181600087803b1580156113cc57600080fd5b505af11580156113e0573d6000803e3d6000fd5b505050506040513d60208110156113f657600080fd5b50511561168d576040805160e060020a6370a0823102815233600482015290518291600160a060020a038716916370a08231916024808201926020929091908290030181600087803b15801561144b57600080fd5b505af115801561145f573d6000803e3d6000fd5b505050506040513d602081101561147557600080fd5b5051146114cc576040805160e560020a62461bcd02815260206004820152600e60248201527f42616c616e6365206572726f722e000000000000000000000000000000000000604482015290519081900360640190fd5b600e546040805160e060020a6370a082310281523360048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b15801561151c57600080fd5b505af1158015611530573d6000803e3d6000fd5b505050506040513d602081101561154657600080fd5b50511580156115ce5750600f546040805160e060020a6370a082310281523360048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b1580156115a057600080fd5b505af11580156115b4573d6000803e3d6000fd5b505050506040513d60208110156115ca57600080fd5b5051155b156115ee57336000908152601260205260409020805460ff191660011790555b600160a060020a0384166000908152600460209081526040808320338452909152902054611622908363ffffffff61302d16565b600160a060020a0385166000908152600460209081526040808320338085529083528184209490945560118252918290208590558151928352820184905280517f773870998542487d493dab21355d6bf368d08d39e927b7ec1eecd3171707075e9281900390910190a15b50505050565b60028054829081106116a157fe5b600091825260209091200154600160a060020a0316905081565b600460209081526000928352604080842090915290825290205481565b336000908152600860209081526040808320600160a060020a038616845290915281205480831061172c57336000908152600860209081526040808320600160a060020a0388168452909152812055611761565b61173c818463ffffffff61301616565b336000908152600860209081526040808320600160a060020a03891684529091529020555b336000818152600860209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b600160009054906101000a9004600160a060020a0316600160a060020a0316630de332106040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561181a57600080fd5b505af115801561182e573d6000803e3d6000fd5b505050506040513d602081101561184457600080fd5b5051600160a060020a031633146118a5576040805160e560020a62461bcd02815260206004820152600c60248201527f57726f6e672073656e6465720000000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a0382166000908152600660205260409020546118ce908263ffffffff61302d16565b600160a060020a0383166000818152600660209081526040918290209390935580518481529051919230926000805160206132138339815191529281900390910190a35050565b600160a060020a031660009081526006602052604090205490565b600054600160a060020a0316331461194757600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b6000806000806000806000806119b0612b9e565b600160a060020a0316637558d81e6040518163ffffffff1660e060020a02815260040161010060405180830381600087803b1580156119ee57600080fd5b505af1158015611a02573d6000803e3d6000fd5b505050506040513d610100811015611a1957600080fd5b508051602082015160408301516060840151608085015160a086015160c087015160e090970151959f949e50929c50909a509850965091945092509050565b60095474010000000000000000000000000000000000000000900460ff1681565b600154604080517f81ae8d860000000000000000000000000000000000000000000000000000000081529051600092600160a060020a0316916381ae8d8691600480830192602092919082900301818787803b1580156109da57600080fd5b600160009054906101000a9004600160a060020a0316600160a060020a031663aad5b4ae6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015611b2b57600080fd5b505af1158015611b3f573d6000803e3d6000fd5b505050506040513d6020811015611b5557600080fd5b5051600160a060020a03163314611bb6576040805160e560020a62461bcd02815260206004820152600c60248201527f57726f6e672073656e6465720000000000000000000000000000000000000000604482015290519081900360640190fd5b611bc183838361309a565b505050565b60606002805480602002602001604051908101604052809291908181526020018280548015611c1e57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311611c00575b5050505050905090565b600160a060020a039081166000908152600560205260409020805460018201546002909201549281169391927401000000000000000000000000000000000000000090910460ff1691565b600054600160a060020a031681565b600a805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561090d5780601f106108e25761010080835404028352916020019161090d565b3360009081526012602052604081205460ff1615611d45576040805160e560020a62461bcd02815260206004820152601460248201527f5573657220616c72656164792073776170706564000000000000000000000000604482015290519081900360640190fd5b6010546201518001421115611dca576040805160e560020a62461bcd02815260206004820152603a60248201527f54696d656672616d6520657869707265642c20706c6561736520757365206d6160448201527f6e75616c55706772616465546f6b656e732066756e6374696f6e000000000000606482015290519081900360840190fd5b600e54600160a060020a0383811691161480611df35750600f54600160a060020a038381169116145b1515611e49576040805160e560020a62461bcd02815260206004820152601a60248201527f546f6b656e206e6f7420616c6c6f77656420746f20737761702e000000000000604482015290519081900360640190fd5b6040805160e060020a6370a082310281523360048201529051600160a060020a038416916370a082319160248083019260209291908290030181600087803b158015611e9457600080fd5b505af1158015611ea8573d6000803e3d6000fd5b505050506040513d6020811015611ebe57600080fd5b5051604080517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523360048201523060248201529051919250600160a060020a0384169163dd62ed3e916044808201926020929091908290030181600087803b158015611f2b57600080fd5b505af1158015611f3f573d6000803e3d6000fd5b505050506040513d6020811015611f5557600080fd5b5051811115611f6357600080fd5b6040805160e060020a6323b872dd028152336004820152306024820152604481018390529051600160a060020a038416916323b872dd9160648083019260209291908290030181600087803b158015611fbb57600080fd5b505af1158015611fcf573d6000803e3d6000fd5b505050506040513d6020811015611fe557600080fd5b50511515611ff257600080fd5b6040805160e060020a6370a082310281523360048201529051600160a060020a038416916370a082319160248083019260209291908290030181600087803b15801561203d57600080fd5b505af1158015612051573d6000803e3d6000fd5b505050506040513d602081101561206757600080fd5b50511561207357600080fd5b600160a060020a03821660009081526004602090815260408083203384529091529020546120a7908263ffffffff61302d16565b600160a060020a03831660009081526004602090815260408083203384528252808320939093556006905220546120e4908263ffffffff61302d16565b336000818152600660209081526040918290209390935580518481529051919230926000805160206132138339815191529281900390910190a3604080513381526020810183905281517f5cf069f6412972a6c15aa4f5d0a340bfc369c3118f4cf8960b568ffe7ae46213929181900390910190a1600e546040805160e060020a6370a082310281523360048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b1580156121a957600080fd5b505af11580156121bd573d6000803e3d6000fd5b505050506040513d60208110156121d357600080fd5b505115801561225b5750600f546040805160e060020a6370a082310281523360048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b15801561222d57600080fd5b505af1158015612241573d6000803e3d6000fd5b505050506040513d602081101561225757600080fd5b5051155b1561227b57336000908152601260205260409020805460ff191660011790555b5050565b61228882613046565b15156122de576040805160e560020a62461bcd02815260206004820152601460248201527f4552433230206e6f7420617574686f7269736564000000000000000000000000604482015290519081900360640190fd5b6122e78261307c565b81146122f257600080fd5b6122fb8261315d565b151561230657600080fd5b600160a060020a038216600090815260046020908152604080832033845290915290205461233a908263ffffffff61302d16565b600160a060020a03831660008181526004602090815260408083203380855290835292819020859055805193845290830191909152818101849052606082019290925290517fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d79181900360800190a16040805160e060020a6323b872dd028152336004820152306024820152604481018390529051600160a060020a038416916323b872dd9160648083019260209291908290030181600087803b15801561240157600080fd5b505af1158015612415573d6000803e3d6000fd5b505050506040513d602081101561242b57600080fd5b50511515612483576040805160e560020a62461bcd02815260206004820152601360248201527f6572726f722077697468207472616e7366657200000000000000000000000000604482015290519081900360640190fd5b61248b612b9e565b600160a060020a031663d230df6a336040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b1580156124e557600080fd5b505af11580156124f9573d6000803e3d6000fd5b505050505050565b3360009081526012602052604081205460ff1615612569576040805160e560020a62461bcd02815260206004820152601460248201527f5573657220616c72656164792073776170706564000000000000000000000000604482015290519081900360640190fd5b60105462015180014210156125c8576040805160e560020a62461bcd02815260206004820152601360248201527f54696d656672616d6520696e636f727265637400000000000000000000000000604482015290519081900360640190fd5b600e54600160a060020a03838116911614806125f15750600f54600160a060020a038381169116145b1515612647576040805160e560020a62461bcd02815260206004820152601a60248201527f546f6b656e206e6f7420616c6c6f77656420746f20737761702e000000000000604482015290519081900360640190fd5b6040805160e060020a6370a082310281523360048201529051600160a060020a038416916370a082319160248083019260209291908290030181600087803b15801561269257600080fd5b505af11580156126a6573d6000803e3d6000fd5b505050506040513d60208110156126bc57600080fd5b5051604080517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523360048201523060248201529051919250600160a060020a0384169163dd62ed3e916044808201926020929091908290030181600087803b15801561272957600080fd5b505af115801561273d573d6000803e3d6000fd5b505050506040513d602081101561275357600080fd5b505181111561276157600080fd5b6040805160e060020a6323b872dd028152336004820152306024820152604481018390529051600160a060020a038416916323b872dd9160648083019260209291908290030181600087803b1580156127b957600080fd5b505af11580156127cd573d6000803e3d6000fd5b505050506040513d60208110156127e357600080fd5b50511561227b576040805160e060020a6370a082310281523360048201529051600160a060020a038416916370a082319160248083019260209291908290030181600087803b15801561283557600080fd5b505af1158015612849573d6000803e3d6000fd5b505050506040513d602081101561285f57600080fd5b50511561286b57600080fd5b600e546040805160e060020a6370a082310281523360048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b1580156128bb57600080fd5b505af11580156128cf573d6000803e3d6000fd5b505050506040513d60208110156128e557600080fd5b505115801561296d5750600f546040805160e060020a6370a082310281523360048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b15801561293f57600080fd5b505af1158015612953573d6000803e3d6000fd5b505050506040513d602081101561296957600080fd5b5051155b1561298d57336000908152601260205260409020805460ff191660011790555b600160a060020a03821660009081526004602090815260408083203384529091529020546129c1908263ffffffff61302d16565b600160a060020a0383166000908152600460209081526040808320338085529083528184209490945560118252918290208490558151928352820183905280517f773870998542487d493dab21355d6bf368d08d39e927b7ec1eecd3171707075e9281900390910190a15050565b33600090815260066020526040812054821115612a4b57600080fd5b600160a060020a0383161515612a6057600080fd5b33600090815260066020526040902054612a80908363ffffffff61301616565b3360009081526006602052604080822092909255600160a060020a03851681522054612ab2908363ffffffff61302d16565b600160a060020a0384166000818152600660209081526040918290209390935580518581529051919233926000805160206132138339815191529281900390910190a350600192915050565b604080517f508493bc000000000000000000000000000000000000000000000000000000008152600160a060020a0380851660048301819052908416602483015291516000929163508493bc91604480830192602092919082900301818787803b158015612b6b57600080fd5b505af1158015612b7f573d6000803e3d6000fd5b505050506040513d6020811015612b9557600080fd5b50519392505050565b600154604080517faad5b4ae0000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169163aad5b4ae91600480830192602092919082900301818787803b1580156109da57600080fd5b600154604080517fbe550be40000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169163be550be491600480830192602092919082900301818787803b1580156109da57600080fd5b600154600160a060020a031681565b600954604080517ff0c37a590000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169163f0c37a5991600480830192602092919082900301818787803b1580156109da57600080fd5b60008054600160a060020a03163314612ce257600080fd5b612cec8383612afe565b600160a060020a038316600090815260066020526040902054909150612d18908263ffffffff61302d16565b600160a060020a0383166000818152600660209081526040918290209390935580518481529051919230926000805160206132138339815191529281900390910190a35050336000908152601260205260409020805460ff1916600117905550565b336000908152600860209081526040808320600160a060020a0386168452909152812054612dae908363ffffffff61302d16565b336000818152600860209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b60008054600160a060020a03163314612e2b57600080fd5b60008054604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0392831660048201526024810186905290519186169263a9059cbb926044808401936020939083900390910190829087803b158015612b6b57600080fd5b600160a060020a03918216600090815260086020908152604080832093909416825291909152205490565b600054600160a060020a03163314612edd57600080fd5b600160a060020a038116600090815260116020908152604080832054600690925290912054612f119163ffffffff61302d16565b600160a060020a0382166000818152600660209081526040808320949094556011815290839020548351908152925191923092600080516020613213833981519152929181900390910190a350565b600954604080517fe1eca3270000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169163e1eca32791600480830192602092919082900301818787803b1580156109da57600080fd5b600054600160a060020a03163314612fd657600080fd5b610b9e81613195565b612fe7612b9e565b6009805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000808383111561302657600080fd5b5050900390565b60008282018381101561303f57600080fd5b9392505050565b600160a060020a031660009081526005602052604090205474010000000000000000000000000000000000000000900460ff1690565b600160a060020a031660009081526005602052604090206001015490565b600160a060020a039092166000818152600560205260408120805460018083019590955542600383018190556201518090960290950160028083019190915574ff00000000000000000000000000000000000000001973ffffffffffffffffffffffffffffffffffffffff1996871685171674010000000000000000000000000000000000000000179091558054938401815590527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace9091018054909216179055565b600160a060020a0381166000908152600560205260408120600201544281111561318a576001915061318f565b600091505b50919050565b600160a060020a03811615156131aa57600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820d01f7e94808b4cf074389050506cd19a9090847c642adffd59ac38dcdb351eb00029
Swarm Source
bzzr://d01f7e94808b4cf074389050506cd19a9090847c642adffd59ac38dcdb351eb0
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.