Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
67 CC2
Holders
40
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 0 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
CityToken
Compiler Version
v0.4.24+commit.e67f0147
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-07-11 */ pragma solidity ^0.4.24; /* CryptoCountries.io Cities */ library SafeMath { function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; assert(c / a == b); return c; } 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 c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } } contract Managed { event DeclareEmergency (string _reason); event ResolveEmergency (); address private addressOfOwner; address[] private addressesOfAdmins; bool private isInEmergency; constructor () public { addressOfOwner = msg.sender; isInEmergency = false; } /* Modifiers */ modifier onlyOwner () { require(addressOfOwner == msg.sender); _; } modifier onlyAdmins () { require(isAdmin(msg.sender)); _; } modifier notEmergency () { require(!isInEmergency); _; } /* Admin */ function transferOwnership (address _owner) onlyOwner() public { clearAdmins(); addressOfOwner = _owner; } function addAdmin (address _admin) onlyOwner() public { addressesOfAdmins.push(_admin); } function removeAdmin (address _admin) onlyOwner() public { require(isAdmin(_admin)); uint256 length = addressesOfAdmins.length; address swap = addressesOfAdmins[length - 1]; uint256 index = 0; for (uint256 i = 0; i < length; i++) { if (addressesOfAdmins[i] == _admin) { index = i; } } addressesOfAdmins[index] = swap; delete addressesOfAdmins[length - 1]; addressesOfAdmins.length--; } function clearAdmins () onlyOwner() public { require(addressesOfAdmins.length > 0); addressesOfAdmins.length = 0; } /* Emergency protocol */ function declareEmergency (string _reason) onlyOwner() public { require(!isInEmergency); isInEmergency = true; emit DeclareEmergency(_reason); } function resolveEmergency () onlyOwner() public { require(isInEmergency); isInEmergency = false; emit ResolveEmergency(); } /* Read */ function owner () public view returns (address _owner) { return addressOfOwner; } function admins () public view returns (address[] _admins) { return addressesOfAdmins; } function emergency () public view returns (bool _emergency) { return isInEmergency; } function isAdmin (address _admin) public view returns (bool _isAdmin) { if (_admin == addressOfOwner) { return true; } for (uint256 i = 0; i < addressesOfAdmins.length; i++) { if (addressesOfAdmins[i] == _admin) { return true; } } return false; } } interface ICountryToken { function ownerOf (uint256) external view returns (address); function priceOf (uint256) external view returns (uint256); } contract CityToken is Managed { using SafeMath for uint256; event List (uint256 indexed _itemId, address indexed _owner, uint256 _price); event Bought (uint256 indexed _itemId, address indexed _owner, uint256 _price); event Sold (uint256 indexed _itemId, address indexed _owner, uint256 _price); event Transfer(address indexed _from, address indexed _to, uint256 _tokenId); event Approval(address indexed _owner, address indexed _approved, uint256 _tokenId); ICountryToken private countryToken; bool private erc721Enabled = false; uint256[] private listedItems; mapping (uint256 => address) private ownerOfItem; mapping (uint256 => uint256) private priceOfItem; mapping (uint256 => uint256) private countryOfItem; mapping (uint256 => uint256[]) private itemsOfCountry; mapping (uint256 => address) private approvedOfItem; /* Constructor */ constructor () public { } /* Modifiers */ modifier hasCountryToken () { require(countryToken != address(0)); _; } modifier onlyERC721() { require(erc721Enabled); _; } /* Initilization */ function setCountryToken (address _countryToken) onlyOwner() public { countryToken = ICountryToken(_countryToken); } /* Withdraw */ /* NOTICE: These functions withdraw the developer's cut which is left in the contract by `buy`. User funds are immediately sent to the old owner in `buy`, no user funds are left in the contract. */ function withdrawAll () onlyOwner() public { owner().transfer(address(this).balance); } function withdrawAmount (uint256 _amount) onlyOwner() public { owner().transfer(_amount); } // Unlocks ERC721 behaviour, allowing for trading on third party platforms. function enableERC721 () onlyOwner() public { erc721Enabled = true; } /* Listing */ function listMultipleItems (uint256[] _itemIds, uint256[] _countryIds, uint256 _price, address _owner) onlyAdmins() notEmergency() hasCountryToken() external { require(_itemIds.length == _countryIds.length); for (uint256 i = 0; i < _itemIds.length; i++) { listItem(_itemIds[i], _countryIds[i], _price, _owner); } } function listItem (uint256 _itemId, uint256 _countryId, uint256 _price, address _owner) onlyAdmins() notEmergency() hasCountryToken() public { require(countryToken != address(0)); require(_price > 0); require(priceOf(_itemId) == 0); require(ownerOf(_itemId) == address(0)); require(countryToken.ownerOf(_countryId) != address(0)); require(countryToken.priceOf(_countryId) > 0); ownerOfItem[_itemId] = _owner; priceOfItem[_itemId] = _price; countryOfItem[_itemId] = _countryId; listedItems.push(_itemId); itemsOfCountry[_countryId].push(_itemId); emit List(_itemId, _owner, _price); } /* Market */ function calculateNextPrice (uint256 _price) public pure returns (uint256 _nextPrice) { return _price.mul(120).div(94); } function calculateDevCut (uint256 _price) public pure returns (uint256 _devCut) { return _price.mul(3).div(100); // 3% } function calculateCountryCut (uint256 _price) public pure returns (uint256 _countryCut) { return _price.mul(3).div(100); // 3% } function buy (uint256 _itemId) notEmergency() hasCountryToken() payable public { require(priceOf(_itemId) > 0); require(ownerOf(_itemId) != address(0)); require(msg.value >= priceOf(_itemId)); require(ownerOf(_itemId) != msg.sender); require(msg.sender != address(0)); require(countryToken.ownerOf(countryOf(_itemId)) != address(0)); address oldOwner = ownerOf(_itemId); address newOwner = msg.sender; address countryOwner = countryToken.ownerOf(countryOf(_itemId)); uint256 price = priceOf(_itemId); uint256 excess = msg.value.sub(price); _transfer(oldOwner, newOwner, _itemId); priceOfItem[_itemId] = nextPriceOf(_itemId); emit Bought(_itemId, newOwner, price); emit Sold(_itemId, oldOwner, price); uint256 devCut = calculateDevCut(price); uint256 countryCut = calculateCountryCut(price); uint256 totalCut = devCut + countryCut; countryOwner.transfer(countryCut); oldOwner.transfer(price.sub(totalCut)); if (excess > 0) { newOwner.transfer(excess); } } /* Read */ function tokenExists (uint256 _itemId) public view returns (bool _exists) { return priceOf(_itemId) > 0; } function countrySupply (uint256 _countryId) public view returns (uint256 _countrySupply) { return itemsOfCountry[_countryId].length; } function priceOf (uint256 _itemId) public view returns (uint256 _price) { return priceOfItem[_itemId]; } function nextPriceOf (uint256 _itemId) public view returns (uint256 _nextPrice) { return calculateNextPrice(priceOf(_itemId)); } function countryOf (uint256 _itemId) public view returns (uint256 _countryId) { return countryOfItem[_itemId]; } function allOf (uint256 _itemId) external view returns (address _owner, uint256 _price, uint256 _nextPrice, uint256 _countryId) { return (ownerOf(_itemId), priceOf(_itemId), nextPriceOf(_itemId), countryOf(_itemId)); } function allItems (uint256 _from, uint256 _take) public view returns (uint256[] _items) { if (totalSupply() == 0) { return new uint256[](0); } uint256[] memory items = new uint256[](_take); for (uint256 i = 0; i < _take; i++) { items[i] = listedItems[_from + i]; } return items; } function countryItems (uint256 _countryId, uint256 _from, uint256 _take) public view returns (uint256[] _items) { if (countrySupply(_countryId) == 0) { return new uint256[](0); } uint256[] memory items = new uint256[](_take); for (uint256 i = 0; i < _take; i++) { items[i] = itemsOfCountry[_countryId][_from + i]; } return items; } function tokensOf (address _owner) public view returns (uint256[] _tokenIds) { uint256[] memory items = new uint256[](balanceOf(_owner)); uint256 itemCounter = 0; for (uint256 i = 0; i < listedItems.length; i++) { if (ownerOf(listedItems[i]) == _owner) { items[itemCounter] = listedItems[i]; itemCounter += 1; } } return items; } /* ERC721 */ function implementsERC721 () public view returns (bool _implements) { return erc721Enabled; } function balanceOf (address _owner) public view returns (uint256 _balance) { uint256 counter = 0; for (uint256 i = 0; i < listedItems.length; i++) { if (ownerOf(listedItems[i]) == _owner) { counter++; } } return counter; } function ownerOf (uint256 _itemId) public view returns (address _owner) { return ownerOfItem[_itemId]; } function transfer(address _to, uint256 _itemId) onlyERC721() public { require(msg.sender == ownerOf(_itemId)); _transfer(msg.sender, _to, _itemId); } function transferFrom(address _from, address _to, uint256 _itemId) onlyERC721() public { require(getApproved(_itemId) == msg.sender); _transfer(_from, _to, _itemId); } function approve(address _to, uint256 _itemId) onlyERC721() public { require(msg.sender != _to); require(tokenExists(_itemId)); require(ownerOf(_itemId) == msg.sender); if (_to == 0) { if (approvedOfItem[_itemId] != 0) { delete approvedOfItem[_itemId]; emit Approval(msg.sender, 0, _itemId); } } else { approvedOfItem[_itemId] = _to; emit Approval(msg.sender, _to, _itemId); } } function getApproved (uint256 _itemId) public view returns (address _approved) { require(tokenExists(_itemId)); return approvedOfItem[_itemId]; } function name () public pure returns (string _name) { return "CryptoCountries.io Cities"; } function symbol () public pure returns (string _symbol) { return "CC2"; } function tokenURI (uint256 _itemId) public pure returns (string) { return _concat("https://cryptocountries.io/api/metadata/city/", _uintToString(_itemId)); } function totalSupply () public view returns (uint256 _totalSupply) { return listedItems.length; } function tokenByIndex (uint256 _index) public view returns (uint256 _itemId) { require(_index < totalSupply()); return listedItems[_index]; } function tokenOfOwnerByIndex (address _owner, uint256 _index) public view returns (uint256 _itemId) { require(_index < balanceOf(_owner)); uint count = 0; for (uint i = 0; i < listedItems.length; i++) { uint itemId = listedItems[i]; if (ownerOf(itemId) == _owner) { if (count == _index) { return itemId; } count += 1; } } assert(false); } /* Internal */ function _transfer(address _from, address _to, uint256 _itemId) internal { require(tokenExists(_itemId)); require(ownerOf(_itemId) == _from); require(_to != address(0)); require(_to != address(this)); ownerOfItem[_itemId] = _to; approvedOfItem[_itemId] = 0; emit Transfer(_from, _to, _itemId); } function _uintToString (uint i) internal pure returns (string) { if (i == 0) return "0"; uint j = i; uint len; while (j != 0){ len++; j /= 10; } bytes memory bstr = new bytes(len); uint k = len - 1; while (i != 0) { bstr[k--] = byte(48 + i % 10); i /= 10; } return string(bstr); } function _concat(string _a, string _b) internal pure returns (string) { bytes memory _ba = bytes(_a); bytes memory _bb = bytes(_b); string memory ab = new string(_ba.length + _bb.length); bytes memory bab = bytes(ab); uint k = 0; for (uint i = 0; i < _ba.length; i++) bab[k++] = _ba[i]; for (i = 0; i < _bb.length; i++) bab[k++] = _bb[i]; return string(bab); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[{"name":"_itemId","type":"uint256"}],"name":"tokenExists","outputs":[{"name":"_exists","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"withdrawAmount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"_name","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"_itemId","type":"uint256"}],"name":"getApproved","outputs":[{"name":"_approved","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_itemId","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"implementsERC721","outputs":[{"name":"_implements","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"clearAdmins","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"resolveEmergency","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_admin","type":"address"}],"name":"removeAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"_totalSupply","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_itemId","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_admin","type":"address"}],"name":"isAdmin","outputs":[{"name":"_isAdmin","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_itemId","type":"uint256"}],"name":"allOf","outputs":[{"name":"_owner","type":"address"},{"name":"_price","type":"uint256"},{"name":"_nextPrice","type":"uint256"},{"name":"_countryId","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"name":"_itemId","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_countryToken","type":"address"}],"name":"setCountryToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_price","type":"uint256"}],"name":"calculateCountryCut","outputs":[{"name":"_countryCut","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"_index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"name":"_itemId","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_countryId","type":"uint256"},{"name":"_from","type":"uint256"},{"name":"_take","type":"uint256"}],"name":"countryItems","outputs":[{"name":"_items","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"tokensOf","outputs":[{"name":"_tokenIds","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_itemId","type":"uint256"}],"name":"nextPriceOf","outputs":[{"name":"_nextPrice","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_itemId","type":"uint256"}],"name":"ownerOf","outputs":[{"name":"_owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_price","type":"uint256"}],"name":"calculateDevCut","outputs":[{"name":"_devCut","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"_countryId","type":"uint256"}],"name":"countrySupply","outputs":[{"name":"_countrySupply","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_admin","type":"address"}],"name":"addAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"_balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"enableERC721","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_itemId","type":"uint256"},{"name":"_countryId","type":"uint256"},{"name":"_price","type":"uint256"},{"name":"_owner","type":"address"}],"name":"listItem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"_owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"_symbol","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_reason","type":"string"}],"name":"declareEmergency","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"admins","outputs":[{"name":"_admins","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_itemId","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_itemId","type":"uint256"}],"name":"priceOf","outputs":[{"name":"_price","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_itemId","type":"uint256"}],"name":"tokenURI","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"emergency","outputs":[{"name":"_emergency","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_itemId","type":"uint256"}],"name":"buy","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"_from","type":"uint256"},{"name":"_take","type":"uint256"}],"name":"allItems","outputs":[{"name":"_items","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_price","type":"uint256"}],"name":"calculateNextPrice","outputs":[{"name":"_nextPrice","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_itemIds","type":"uint256[]"},{"name":"_countryIds","type":"uint256[]"},{"name":"_price","type":"uint256"},{"name":"_owner","type":"address"}],"name":"listMultipleItems","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_itemId","type":"uint256"}],"name":"countryOf","outputs":[{"name":"_countryId","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_itemId","type":"uint256"},{"indexed":true,"name":"_owner","type":"address"},{"indexed":false,"name":"_price","type":"uint256"}],"name":"List","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_itemId","type":"uint256"},{"indexed":true,"name":"_owner","type":"address"},{"indexed":false,"name":"_price","type":"uint256"}],"name":"Bought","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_itemId","type":"uint256"},{"indexed":true,"name":"_owner","type":"address"},{"indexed":false,"name":"_price","type":"uint256"}],"name":"Sold","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_approved","type":"address"},{"indexed":false,"name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_reason","type":"string"}],"name":"DeclareEmergency","type":"event"},{"anonymous":false,"inputs":[],"name":"ResolveEmergency","type":"event"}]
Contract Creation Code
60806040526002805460a860020a60ff021916905534801561002057600080fd5b5060008054600160a060020a031916331790556002805460ff19169055611f388061004c6000396000f3006080604052600436106101e95763ffffffff60e060020a600035041662923f9e81146101ee5780630562b9f71461021a57806306fdde0314610234578063081812fc146102be578063095ea7b3146102f25780631051db34146103165780631114fce51461032b57806315c73afd146103405780631785f53c1461035557806318160ddd1461037657806323b872dd1461039d57806324d7806c146103c75780632e4f43bf146103e85780632f745c5914610430578063320e028d1461045457806349f73d3d146104755780634f6ccce71461048d57806354b8dd66146104a55780635a3f2672146105135780635ba9e48e146105345780636352211e1461054c57806365121205146104755780636d2c51a714610564578063704802751461057c57806370a082311461059d57806371dc761e146105be57806383d8bae3146105d3578063853828b6146105fd5780638da5cb5b1461061257806395d89b4114610627578063a55231f41461063c578063a5de361914610695578063a9059cbb146106aa578063b9186d7d146106ce578063c87b56dd146106e6578063caa6fea4146106fe578063d96a094a14610713578063de21cd781461071e578063e08503ec14610739578063f2fde38b14610751578063f567a72a14610772578063fce48558146107ad575b600080fd5b3480156101fa57600080fd5b506102066004356107c5565b604080519115158252519081900360200190f35b34801561022657600080fd5b506102326004356107d8565b005b34801561024057600080fd5b50610249610833565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561028357818101518382015260200161026b565b50505050905090810190601f1680156102b05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102ca57600080fd5b506102d660043561086b565b60408051600160a060020a039092168252519081900360200190f35b3480156102fe57600080fd5b50610232600160a060020a036004351660243561089d565b34801561032257600080fd5b506102066109e5565b34801561033757600080fd5b506102326109f5565b34801561034c57600080fd5b50610232610a2b565b34801561036157600080fd5b50610232600160a060020a0360043516610a88565b34801561038257600080fd5b5061038b610bb1565b60408051918252519081900360200190f35b3480156103a957600080fd5b50610232600160a060020a0360043581169060243516604435610bb7565b3480156103d357600080fd5b50610206600160a060020a0360043516610bfc565b3480156103f457600080fd5b50610400600435610c7c565b60408051600160a060020a0390951685526020850193909352838301919091526060830152519081900360800190f35b34801561043c57600080fd5b5061038b600160a060020a0360043516602435610cb5565b34801561046057600080fd5b50610232600160a060020a0360043516610d4c565b34801561048157600080fd5b5061038b600435610d98565b34801561049957600080fd5b5061038b600435610dc2565b3480156104b157600080fd5b506104c3600435602435604435610df7565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156104ff5781810151838201526020016104e7565b505050509050019250505060405180910390f35b34801561051f57600080fd5b506104c3600160a060020a0360043516610eaf565b34801561054057600080fd5b5061038b600435610f82565b34801561055857600080fd5b506102d6600435610f95565b34801561057057600080fd5b5061038b600435610fb0565b34801561058857600080fd5b50610232600160a060020a0360043516610fc2565b3480156105a957600080fd5b5061038b600160a060020a036004351661102a565b3480156105ca57600080fd5b5061023261107a565b3480156105df57600080fd5b50610232600435602435604435600160a060020a03606435166110b8565b34801561060957600080fd5b50610232611364565b34801561061e57600080fd5b506102d66113bb565b34801561063357600080fd5b506102496113ca565b34801561064857600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526102329436949293602493928401919081908401838280828437509497506114019650505050505050565b3480156106a157600080fd5b506104c36114d0565b3480156106b657600080fd5b50610232600160a060020a0360043516602435611532565b3480156106da57600080fd5b5061038b600435611572565b3480156106f257600080fd5b50610249600435611584565b34801561070a57600080fd5b506102066115f4565b6102326004356115fd565b34801561072a57600080fd5b506104c360043560243561198c565b34801561074557600080fd5b5061038b600435611a36565b34801561075d57600080fd5b50610232600160a060020a0360043516611a4e565b34801561077e57600080fd5b506102326024600480358281019290820135918135918201910135604435600160a060020a0360643516611a8f565b3480156107b957600080fd5b5061038b600435611b2c565b6000806107d183611572565b1192915050565b600054600160a060020a031633146107ef57600080fd5b6107f76113bb565b600160a060020a03166108fc829081150290604051600060405180830381858888f1935050505015801561082f573d6000803e3d6000fd5b5050565b60408051808201909152601981527f43727970746f436f756e74726965732e696f204369746965730000000000000060208201525b90565b6000610876826107c5565b151561088157600080fd5b50600090815260086020526040902054600160a060020a031690565b60025460a860020a900460ff1615156108b557600080fd5b33600160a060020a03831614156108cb57600080fd5b6108d4816107c5565b15156108df57600080fd5b336108e982610f95565b600160a060020a0316146108fc57600080fd5b600160a060020a038216151561097f57600081815260086020526040902054600160a060020a03161561097a5760008181526008602090815260408083208054600160a060020a03191690558051848152905133927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35b61082f565b6000818152600860209081526040918290208054600160a060020a031916600160a060020a03861690811790915582518481529251909233927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92592918290030190a35050565b60025460a860020a900460ff1690565b600054600160a060020a03163314610a0c57600080fd5b600154600010610a1b57600080fd5b6000610a28600182611ecf565b50565b600054600160a060020a03163314610a4257600080fd5b60025460ff161515610a5357600080fd5b6002805460ff191690556040517fcd1edd3018973cd5506b3cbfbd904dac48d81ad72345b4f4e0b08b198e787e2f90600090a1565b60008054819081908190600160a060020a03163314610aa657600080fd5b610aaf85610bfc565b1515610aba57600080fd5b6001805494506000198501858110610ace57fe5b6000918252602082200154600160a060020a0316935091508190505b83811015610b325784600160a060020a0316600182815481101515610b0b57fe5b600091825260209091200154600160a060020a03161415610b2a578091505b600101610aea565b82600183815481101515610b4257fe5b60009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055600180546000198601908110610b7d57fe5b60009182526020909120018054600160a060020a03191690556001805490610ba9906000198301611ecf565b505050505050565b60035490565b60025460a860020a900460ff161515610bcf57600080fd5b33610bd98261086b565b600160a060020a031614610bec57600080fd5b610bf7838383611b3e565b505050565b600080548190600160a060020a0384811691161415610c1e5760019150610c76565b5060005b600154811015610c715782600160a060020a0316600182815481101515610c4557fe5b600091825260209091200154600160a060020a03161415610c695760019150610c76565b600101610c22565b600091505b50919050565b600080600080610c8b85610f95565b610c9486611572565b610c9d87610f82565b610ca688611b2c565b93509350935093509193509193565b600080600080610cc48661102a565b8510610ccf57600080fd5b60009250600091505b600354821015610d41576003805483908110610cf057fe5b9060005260206000200154905085600160a060020a0316610d1082610f95565b600160a060020a03161415610d365784831415610d2f57809350610d43565b6001830192505b600190910190610cd8565bfe5b50505092915050565b600054600160a060020a03163314610d6357600080fd5b60028054600160a060020a039092166101000274ffffffffffffffffffffffffffffffffffffffff0019909216919091179055565b6000610dbc6064610db084600363ffffffff611c1a16565b9063ffffffff611c4c16565b92915050565b6000610dcc610bb1565b8210610dd757600080fd5b6003805483908110610de557fe5b90600052602060002001549050919050565b6060806000610e0586610fb0565b1515610e21576040805160008152602081019091529250610ea6565b83604051908082528060200260200182016040528015610e4b578160200160208202803883390190505b509150600090505b83811015610ea25760008681526007602052604090208054868301908110610e7757fe5b90600052602060002001548282815181101515610e9057fe5b60209081029091010152600101610e53565b8192505b50509392505050565b606080600080610ebe8561102a565b604051908082528060200260200182016040528015610ee7578160200160208202803883390190505b50925060009150600090505b600354811015610f795784600160a060020a0316610f29600383815481101515610f1957fe5b9060005260206000200154610f95565b600160a060020a03161415610f71576003805482908110610f4657fe5b90600052602060002001548383815181101515610f5f57fe5b60209081029091010152600191909101905b600101610ef3565b50909392505050565b6000610dbc610f9083611572565b611a36565b600090815260046020526040902054600160a060020a031690565b60009081526007602052604090205490565b600054600160a060020a03163314610fd957600080fd5b6001805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6018054600160a060020a031916600160a060020a0392909216919091179055565b600080805b6003548110156110735783600160a060020a0316611055600383815481101515610f1957fe5b600160a060020a0316141561106b576001909101905b60010161102f565b5092915050565b600054600160a060020a0316331461109157600080fd5b6002805475ff000000000000000000000000000000000000000000191660a860020a179055565b6110c133610bfc565b15156110cc57600080fd5b60025460ff16156110dc57600080fd5b6002546101009004600160a060020a031615156110f857600080fd5b6002546101009004600160a060020a0316151561111457600080fd5b6000821161112157600080fd5b61112a84611572565b1561113457600080fd5b600061113f85610f95565b600160a060020a03161461115257600080fd5b600254604080517f6352211e0000000000000000000000000000000000000000000000000000000081526004810186905290516000926101009004600160a060020a031691636352211e91602480830192602092919082900301818787803b1580156111bd57600080fd5b505af11580156111d1573d6000803e3d6000fd5b505050506040513d60208110156111e757600080fd5b5051600160a060020a031614156111fd57600080fd5b600254604080517fb9186d7d0000000000000000000000000000000000000000000000000000000081526004810186905290516000926101009004600160a060020a03169163b9186d7d91602480830192602092919082900301818787803b15801561126857600080fd5b505af115801561127c573d6000803e3d6000fd5b505050506040513d602081101561129257600080fd5b50511161129e57600080fd5b60008481526004602090815260408083208054600160a060020a031916600160a060020a03861690811790915560058352818420869055600683528184208790556003805460018181019092557fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0189905587855260078452828520805491820181558552938390209093018790558051858152905187927f656fea2aeb2af9841f5b2d9a77be15564d1a00f76fff68c5435aec927eb4d5d6928290030190a350505050565b600054600160a060020a0316331461137b57600080fd5b6113836113bb565b604051600160a060020a039190911690303180156108fc02916000818181858888f19350505050158015610a28573d6000803e3d6000fd5b600054600160a060020a031690565b60408051808201909152600381527f4343320000000000000000000000000000000000000000000000000000000000602082015290565b600054600160a060020a0316331461141857600080fd5b60025460ff161561142857600080fd5b6002805460ff1916600117905560408051602080825283518183015283517f8892ac824b5e54f09f85ea6b8f828f57615a4a95070a702c56ac74d15d4f10e4938593928392918301919085019080838360005b8381101561149357818101518382015260200161147b565b50505050905090810190601f1680156114c05780820380516001836020036101000a031916815260200191505b509250505060405180910390a150565b6060600180548060200260200160405190810160405280929190818152602001828054801561152857602002820191906000526020600020905b8154600160a060020a0316815260019091019060200180831161150a575b5050505050905090565b60025460a860020a900460ff16151561154a57600080fd5b61155381610f95565b600160a060020a0316331461156757600080fd5b61082f338383611b3e565b60009081526005602052604090205490565b6060610dbc606060405190810160405280602d81526020017f68747470733a2f2f63727970746f636f756e74726965732e696f2f6170692f6d81526020017f657461646174612f636974792f000000000000000000000000000000000000008152506115ef84611c63565b611d6e565b60025460ff1690565b600254600090819081908190819081908190819060ff161561161e57600080fd5b6002546101009004600160a060020a0316151561163a57600080fd5b60006116458a611572565b1161164f57600080fd5b600061165a8a610f95565b600160a060020a0316141561166e57600080fd5b61167789611572565b34101561168357600080fd5b3361168d8a610f95565b600160a060020a031614156116a157600080fd5b3315156116ad57600080fd5b6002546000906101009004600160a060020a0316636352211e6116cf8c611b2c565b6040518263ffffffff1660e060020a02815260040180828152602001915050602060405180830381600087803b15801561170857600080fd5b505af115801561171c573d6000803e3d6000fd5b505050506040513d602081101561173257600080fd5b5051600160a060020a0316141561174857600080fd5b61175189610f95565b6002549098503397506101009004600160a060020a0316636352211e6117768b611b2c565b6040518263ffffffff1660e060020a02815260040180828152602001915050602060405180830381600087803b1580156117af57600080fd5b505af11580156117c3573d6000803e3d6000fd5b505050506040513d60208110156117d957600080fd5b505195506117e689611572565b94506117f8348663ffffffff611ebd16565b935061180588888b611b3e565b61180e89610f82565b600560008b81526020019081526020016000208190555086600160a060020a0316897fd2728f908c7e0feb83c6278798370fcb86b62f236c9dbf1a3f541096c2159040876040518082815260200191505060405180910390a3604080518681529051600160a060020a038a16918b917f66f5cd880edf48cdde6c966e5da0784fcc4c5e85572b8b3b62c4357798d447d79181900360200190a36118b085610d98565b92506118bb85610d98565b6040519092508383019150600160a060020a0387169083156108fc029084906000818181858888f193505050501580156118f9573d6000803e3d6000fd5b50600160a060020a0388166108fc611917878463ffffffff611ebd16565b6040518115909202916000818181858888f1935050505015801561193f573d6000803e3d6000fd5b50600084111561198157604051600160a060020a0388169085156108fc029086906000818181858888f1935050505015801561197f573d6000803e3d6000fd5b505b505050505050505050565b6060806000611999610bb1565b15156119b5576040805160008152602081019091529250611a2e565b836040519080825280602002602001820160405280156119df578160200160208202803883390190505b509150600090505b83811015611a2a57600380548683019081106119ff57fe5b90600052602060002001548282815181101515611a1857fe5b602090810290910101526001016119e7565b8192505b505092915050565b6000610dbc605e610db084607863ffffffff611c1a16565b600054600160a060020a03163314611a6557600080fd5b611a6d6109f5565b60008054600160a060020a031916600160a060020a0392909216919091179055565b6000611a9a33610bfc565b1515611aa557600080fd5b60025460ff1615611ab557600080fd5b6002546101009004600160a060020a03161515611ad157600080fd5b858414611add57600080fd5b5060005b85811015611b2357611b1b878783818110611af857fe5b905060200201358686848181101515611b0d57fe5b9050602002013585856110b8565b600101611ae1565b50505050505050565b60009081526006602052604090205490565b611b47816107c5565b1515611b5257600080fd5b82600160a060020a0316611b6582610f95565b600160a060020a031614611b7857600080fd5b600160a060020a0382161515611b8d57600080fd5b600160a060020a038216301415611ba357600080fd5b60008181526004602090815260408083208054600160a060020a03808816600160a060020a031992831681179093556008855294839020805490911690558151858152915190938716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef928290030190a3505050565b600080831515611c2d5760009150611073565b50828202828482811515611c3d57fe5b0414611c4557fe5b9392505050565b6000808284811515611c5a57fe5b04949350505050565b60606000808281851515611cac5760408051808201909152600181527f300000000000000000000000000000000000000000000000000000000000000060208201529450611d65565b8593505b8315611cc757600190920191600a84049350611cb0565b826040519080825280601f01601f191660200182016040528015611cf5578160200160208202803883390190505b5091505060001982015b8515611d6157815160001982019160f860020a6030600a8a060102918491908110611d2657fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a86049550611cff565b8194505b50505050919050565b606080606080606060008088955087945084518651016040519080825280601f01601f191660200182016040528015611db1578160200160208202803883390190505b50935083925060009150600090505b8551811015611e36578581815181101515611dd757fe5b90602001015160f860020a900460f860020a028383806001019450815181101515611dfe57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600101611dc0565b5060005b8451811015611eb0578481815181101515611e5157fe5b90602001015160f860020a900460f860020a028383806001019450815181101515611e7857fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600101611e3a565b5090979650505050505050565b600082821115611ec957fe5b50900390565b815481835581811115610bf757600083815260209020610bf791810190830161086891905b80821115611f085760008155600101611ef4565b50905600a165627a7a72305820dbb7c5f77cafc38fe8a52b4fdedc19d1906b2e63ac88af071819189f778d35a30029
Deployed Bytecode
0x6080604052600436106101e95763ffffffff60e060020a600035041662923f9e81146101ee5780630562b9f71461021a57806306fdde0314610234578063081812fc146102be578063095ea7b3146102f25780631051db34146103165780631114fce51461032b57806315c73afd146103405780631785f53c1461035557806318160ddd1461037657806323b872dd1461039d57806324d7806c146103c75780632e4f43bf146103e85780632f745c5914610430578063320e028d1461045457806349f73d3d146104755780634f6ccce71461048d57806354b8dd66146104a55780635a3f2672146105135780635ba9e48e146105345780636352211e1461054c57806365121205146104755780636d2c51a714610564578063704802751461057c57806370a082311461059d57806371dc761e146105be57806383d8bae3146105d3578063853828b6146105fd5780638da5cb5b1461061257806395d89b4114610627578063a55231f41461063c578063a5de361914610695578063a9059cbb146106aa578063b9186d7d146106ce578063c87b56dd146106e6578063caa6fea4146106fe578063d96a094a14610713578063de21cd781461071e578063e08503ec14610739578063f2fde38b14610751578063f567a72a14610772578063fce48558146107ad575b600080fd5b3480156101fa57600080fd5b506102066004356107c5565b604080519115158252519081900360200190f35b34801561022657600080fd5b506102326004356107d8565b005b34801561024057600080fd5b50610249610833565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561028357818101518382015260200161026b565b50505050905090810190601f1680156102b05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102ca57600080fd5b506102d660043561086b565b60408051600160a060020a039092168252519081900360200190f35b3480156102fe57600080fd5b50610232600160a060020a036004351660243561089d565b34801561032257600080fd5b506102066109e5565b34801561033757600080fd5b506102326109f5565b34801561034c57600080fd5b50610232610a2b565b34801561036157600080fd5b50610232600160a060020a0360043516610a88565b34801561038257600080fd5b5061038b610bb1565b60408051918252519081900360200190f35b3480156103a957600080fd5b50610232600160a060020a0360043581169060243516604435610bb7565b3480156103d357600080fd5b50610206600160a060020a0360043516610bfc565b3480156103f457600080fd5b50610400600435610c7c565b60408051600160a060020a0390951685526020850193909352838301919091526060830152519081900360800190f35b34801561043c57600080fd5b5061038b600160a060020a0360043516602435610cb5565b34801561046057600080fd5b50610232600160a060020a0360043516610d4c565b34801561048157600080fd5b5061038b600435610d98565b34801561049957600080fd5b5061038b600435610dc2565b3480156104b157600080fd5b506104c3600435602435604435610df7565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156104ff5781810151838201526020016104e7565b505050509050019250505060405180910390f35b34801561051f57600080fd5b506104c3600160a060020a0360043516610eaf565b34801561054057600080fd5b5061038b600435610f82565b34801561055857600080fd5b506102d6600435610f95565b34801561057057600080fd5b5061038b600435610fb0565b34801561058857600080fd5b50610232600160a060020a0360043516610fc2565b3480156105a957600080fd5b5061038b600160a060020a036004351661102a565b3480156105ca57600080fd5b5061023261107a565b3480156105df57600080fd5b50610232600435602435604435600160a060020a03606435166110b8565b34801561060957600080fd5b50610232611364565b34801561061e57600080fd5b506102d66113bb565b34801561063357600080fd5b506102496113ca565b34801561064857600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526102329436949293602493928401919081908401838280828437509497506114019650505050505050565b3480156106a157600080fd5b506104c36114d0565b3480156106b657600080fd5b50610232600160a060020a0360043516602435611532565b3480156106da57600080fd5b5061038b600435611572565b3480156106f257600080fd5b50610249600435611584565b34801561070a57600080fd5b506102066115f4565b6102326004356115fd565b34801561072a57600080fd5b506104c360043560243561198c565b34801561074557600080fd5b5061038b600435611a36565b34801561075d57600080fd5b50610232600160a060020a0360043516611a4e565b34801561077e57600080fd5b506102326024600480358281019290820135918135918201910135604435600160a060020a0360643516611a8f565b3480156107b957600080fd5b5061038b600435611b2c565b6000806107d183611572565b1192915050565b600054600160a060020a031633146107ef57600080fd5b6107f76113bb565b600160a060020a03166108fc829081150290604051600060405180830381858888f1935050505015801561082f573d6000803e3d6000fd5b5050565b60408051808201909152601981527f43727970746f436f756e74726965732e696f204369746965730000000000000060208201525b90565b6000610876826107c5565b151561088157600080fd5b50600090815260086020526040902054600160a060020a031690565b60025460a860020a900460ff1615156108b557600080fd5b33600160a060020a03831614156108cb57600080fd5b6108d4816107c5565b15156108df57600080fd5b336108e982610f95565b600160a060020a0316146108fc57600080fd5b600160a060020a038216151561097f57600081815260086020526040902054600160a060020a03161561097a5760008181526008602090815260408083208054600160a060020a03191690558051848152905133927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35b61082f565b6000818152600860209081526040918290208054600160a060020a031916600160a060020a03861690811790915582518481529251909233927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92592918290030190a35050565b60025460a860020a900460ff1690565b600054600160a060020a03163314610a0c57600080fd5b600154600010610a1b57600080fd5b6000610a28600182611ecf565b50565b600054600160a060020a03163314610a4257600080fd5b60025460ff161515610a5357600080fd5b6002805460ff191690556040517fcd1edd3018973cd5506b3cbfbd904dac48d81ad72345b4f4e0b08b198e787e2f90600090a1565b60008054819081908190600160a060020a03163314610aa657600080fd5b610aaf85610bfc565b1515610aba57600080fd5b6001805494506000198501858110610ace57fe5b6000918252602082200154600160a060020a0316935091508190505b83811015610b325784600160a060020a0316600182815481101515610b0b57fe5b600091825260209091200154600160a060020a03161415610b2a578091505b600101610aea565b82600183815481101515610b4257fe5b60009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055600180546000198601908110610b7d57fe5b60009182526020909120018054600160a060020a03191690556001805490610ba9906000198301611ecf565b505050505050565b60035490565b60025460a860020a900460ff161515610bcf57600080fd5b33610bd98261086b565b600160a060020a031614610bec57600080fd5b610bf7838383611b3e565b505050565b600080548190600160a060020a0384811691161415610c1e5760019150610c76565b5060005b600154811015610c715782600160a060020a0316600182815481101515610c4557fe5b600091825260209091200154600160a060020a03161415610c695760019150610c76565b600101610c22565b600091505b50919050565b600080600080610c8b85610f95565b610c9486611572565b610c9d87610f82565b610ca688611b2c565b93509350935093509193509193565b600080600080610cc48661102a565b8510610ccf57600080fd5b60009250600091505b600354821015610d41576003805483908110610cf057fe5b9060005260206000200154905085600160a060020a0316610d1082610f95565b600160a060020a03161415610d365784831415610d2f57809350610d43565b6001830192505b600190910190610cd8565bfe5b50505092915050565b600054600160a060020a03163314610d6357600080fd5b60028054600160a060020a039092166101000274ffffffffffffffffffffffffffffffffffffffff0019909216919091179055565b6000610dbc6064610db084600363ffffffff611c1a16565b9063ffffffff611c4c16565b92915050565b6000610dcc610bb1565b8210610dd757600080fd5b6003805483908110610de557fe5b90600052602060002001549050919050565b6060806000610e0586610fb0565b1515610e21576040805160008152602081019091529250610ea6565b83604051908082528060200260200182016040528015610e4b578160200160208202803883390190505b509150600090505b83811015610ea25760008681526007602052604090208054868301908110610e7757fe5b90600052602060002001548282815181101515610e9057fe5b60209081029091010152600101610e53565b8192505b50509392505050565b606080600080610ebe8561102a565b604051908082528060200260200182016040528015610ee7578160200160208202803883390190505b50925060009150600090505b600354811015610f795784600160a060020a0316610f29600383815481101515610f1957fe5b9060005260206000200154610f95565b600160a060020a03161415610f71576003805482908110610f4657fe5b90600052602060002001548383815181101515610f5f57fe5b60209081029091010152600191909101905b600101610ef3565b50909392505050565b6000610dbc610f9083611572565b611a36565b600090815260046020526040902054600160a060020a031690565b60009081526007602052604090205490565b600054600160a060020a03163314610fd957600080fd5b6001805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6018054600160a060020a031916600160a060020a0392909216919091179055565b600080805b6003548110156110735783600160a060020a0316611055600383815481101515610f1957fe5b600160a060020a0316141561106b576001909101905b60010161102f565b5092915050565b600054600160a060020a0316331461109157600080fd5b6002805475ff000000000000000000000000000000000000000000191660a860020a179055565b6110c133610bfc565b15156110cc57600080fd5b60025460ff16156110dc57600080fd5b6002546101009004600160a060020a031615156110f857600080fd5b6002546101009004600160a060020a0316151561111457600080fd5b6000821161112157600080fd5b61112a84611572565b1561113457600080fd5b600061113f85610f95565b600160a060020a03161461115257600080fd5b600254604080517f6352211e0000000000000000000000000000000000000000000000000000000081526004810186905290516000926101009004600160a060020a031691636352211e91602480830192602092919082900301818787803b1580156111bd57600080fd5b505af11580156111d1573d6000803e3d6000fd5b505050506040513d60208110156111e757600080fd5b5051600160a060020a031614156111fd57600080fd5b600254604080517fb9186d7d0000000000000000000000000000000000000000000000000000000081526004810186905290516000926101009004600160a060020a03169163b9186d7d91602480830192602092919082900301818787803b15801561126857600080fd5b505af115801561127c573d6000803e3d6000fd5b505050506040513d602081101561129257600080fd5b50511161129e57600080fd5b60008481526004602090815260408083208054600160a060020a031916600160a060020a03861690811790915560058352818420869055600683528184208790556003805460018181019092557fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0189905587855260078452828520805491820181558552938390209093018790558051858152905187927f656fea2aeb2af9841f5b2d9a77be15564d1a00f76fff68c5435aec927eb4d5d6928290030190a350505050565b600054600160a060020a0316331461137b57600080fd5b6113836113bb565b604051600160a060020a039190911690303180156108fc02916000818181858888f19350505050158015610a28573d6000803e3d6000fd5b600054600160a060020a031690565b60408051808201909152600381527f4343320000000000000000000000000000000000000000000000000000000000602082015290565b600054600160a060020a0316331461141857600080fd5b60025460ff161561142857600080fd5b6002805460ff1916600117905560408051602080825283518183015283517f8892ac824b5e54f09f85ea6b8f828f57615a4a95070a702c56ac74d15d4f10e4938593928392918301919085019080838360005b8381101561149357818101518382015260200161147b565b50505050905090810190601f1680156114c05780820380516001836020036101000a031916815260200191505b509250505060405180910390a150565b6060600180548060200260200160405190810160405280929190818152602001828054801561152857602002820191906000526020600020905b8154600160a060020a0316815260019091019060200180831161150a575b5050505050905090565b60025460a860020a900460ff16151561154a57600080fd5b61155381610f95565b600160a060020a0316331461156757600080fd5b61082f338383611b3e565b60009081526005602052604090205490565b6060610dbc606060405190810160405280602d81526020017f68747470733a2f2f63727970746f636f756e74726965732e696f2f6170692f6d81526020017f657461646174612f636974792f000000000000000000000000000000000000008152506115ef84611c63565b611d6e565b60025460ff1690565b600254600090819081908190819081908190819060ff161561161e57600080fd5b6002546101009004600160a060020a0316151561163a57600080fd5b60006116458a611572565b1161164f57600080fd5b600061165a8a610f95565b600160a060020a0316141561166e57600080fd5b61167789611572565b34101561168357600080fd5b3361168d8a610f95565b600160a060020a031614156116a157600080fd5b3315156116ad57600080fd5b6002546000906101009004600160a060020a0316636352211e6116cf8c611b2c565b6040518263ffffffff1660e060020a02815260040180828152602001915050602060405180830381600087803b15801561170857600080fd5b505af115801561171c573d6000803e3d6000fd5b505050506040513d602081101561173257600080fd5b5051600160a060020a0316141561174857600080fd5b61175189610f95565b6002549098503397506101009004600160a060020a0316636352211e6117768b611b2c565b6040518263ffffffff1660e060020a02815260040180828152602001915050602060405180830381600087803b1580156117af57600080fd5b505af11580156117c3573d6000803e3d6000fd5b505050506040513d60208110156117d957600080fd5b505195506117e689611572565b94506117f8348663ffffffff611ebd16565b935061180588888b611b3e565b61180e89610f82565b600560008b81526020019081526020016000208190555086600160a060020a0316897fd2728f908c7e0feb83c6278798370fcb86b62f236c9dbf1a3f541096c2159040876040518082815260200191505060405180910390a3604080518681529051600160a060020a038a16918b917f66f5cd880edf48cdde6c966e5da0784fcc4c5e85572b8b3b62c4357798d447d79181900360200190a36118b085610d98565b92506118bb85610d98565b6040519092508383019150600160a060020a0387169083156108fc029084906000818181858888f193505050501580156118f9573d6000803e3d6000fd5b50600160a060020a0388166108fc611917878463ffffffff611ebd16565b6040518115909202916000818181858888f1935050505015801561193f573d6000803e3d6000fd5b50600084111561198157604051600160a060020a0388169085156108fc029086906000818181858888f1935050505015801561197f573d6000803e3d6000fd5b505b505050505050505050565b6060806000611999610bb1565b15156119b5576040805160008152602081019091529250611a2e565b836040519080825280602002602001820160405280156119df578160200160208202803883390190505b509150600090505b83811015611a2a57600380548683019081106119ff57fe5b90600052602060002001548282815181101515611a1857fe5b602090810290910101526001016119e7565b8192505b505092915050565b6000610dbc605e610db084607863ffffffff611c1a16565b600054600160a060020a03163314611a6557600080fd5b611a6d6109f5565b60008054600160a060020a031916600160a060020a0392909216919091179055565b6000611a9a33610bfc565b1515611aa557600080fd5b60025460ff1615611ab557600080fd5b6002546101009004600160a060020a03161515611ad157600080fd5b858414611add57600080fd5b5060005b85811015611b2357611b1b878783818110611af857fe5b905060200201358686848181101515611b0d57fe5b9050602002013585856110b8565b600101611ae1565b50505050505050565b60009081526006602052604090205490565b611b47816107c5565b1515611b5257600080fd5b82600160a060020a0316611b6582610f95565b600160a060020a031614611b7857600080fd5b600160a060020a0382161515611b8d57600080fd5b600160a060020a038216301415611ba357600080fd5b60008181526004602090815260408083208054600160a060020a03808816600160a060020a031992831681179093556008855294839020805490911690558151858152915190938716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef928290030190a3505050565b600080831515611c2d5760009150611073565b50828202828482811515611c3d57fe5b0414611c4557fe5b9392505050565b6000808284811515611c5a57fe5b04949350505050565b60606000808281851515611cac5760408051808201909152600181527f300000000000000000000000000000000000000000000000000000000000000060208201529450611d65565b8593505b8315611cc757600190920191600a84049350611cb0565b826040519080825280601f01601f191660200182016040528015611cf5578160200160208202803883390190505b5091505060001982015b8515611d6157815160001982019160f860020a6030600a8a060102918491908110611d2657fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a86049550611cff565b8194505b50505050919050565b606080606080606060008088955087945084518651016040519080825280601f01601f191660200182016040528015611db1578160200160208202803883390190505b50935083925060009150600090505b8551811015611e36578581815181101515611dd757fe5b90602001015160f860020a900460f860020a028383806001019450815181101515611dfe57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600101611dc0565b5060005b8451811015611eb0578481815181101515611e5157fe5b90602001015160f860020a900460f860020a028383806001019450815181101515611e7857fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600101611e3a565b5090979650505050505050565b600082821115611ec957fe5b50900390565b815481835581811115610bf757600083815260209020610bf791810190830161086891905b80821115611f085760008155600101611ef4565b50905600a165627a7a72305820dbb7c5f77cafc38fe8a52b4fdedc19d1906b2e63ac88af071819189f778d35a30029
Swarm Source
bzzr://dbb7c5f77cafc38fe8a52b4fdedc19d1906b2e63ac88af071819189f778d35a3
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.