Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
4 YTIcon
Holders
1
Total Transfers
-
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 |
---|
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x990c2463...52dA8E666 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
YTIcons
Compiler Version
v0.4.18+commit.9cf6e910
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-03-27 */ pragma solidity ^0.4.18; /// @title Interface for contracts conforming to ERC-721: Non-Fungible Tokens /// @author Dieter Shirley <[email protected]> (https://github.com/dete) contract ERC721 { // Required methods function implementsERC721() public pure returns (bool); // ERC20 compatible methods function name() public pure returns (string); function symbol() public pure returns (string); function balanceOf(address _owner) public view returns (uint256 balance); function totalSupply() public view returns (uint256 total); // Methods defining ownership function ownerOf(uint256 _tokenId) public view returns (address addr); function approve(address _to, uint256 _tokenId) public; function takeOwnership(uint256 _tokenId) public; function transferFrom(address _from, address _to, uint256 _tokenId) public; function transfer(address _to, uint256 _tokenId) public; // Events event Transfer(address indexed from, address indexed to, uint256 tokenId); event Approval(address indexed owner, address indexed approved, uint256 tokenId); } contract YTIcons is ERC721 { /* CONSTANTS */ /// Name and symbol of the non-fungible token (ERC721) string public constant NAME = "YTIcons"; string public constant SYMBOL = "YTIcon"; /// The corporation address that will be used for its development (giveaway, game events...) address private _utilityFund = 0x6B06a2a15dCf3AE45b9F133Be6FD0Be5a9FAedC2; /// When a card isn't verified, the normal share given to the beneficiary linked /// to the card is given to the charity fund's address instead. address private _charityFund = 0xF9864660c4aa89E241d7D44903D3c8A207644332; uint16 public _generation = 0; uint256 private _defaultPrice = 0.001 ether; uint256 private firstLimit = 0.05 ether; uint256 private secondLimit = 0.5 ether; uint256 private thirdLimit = 1 ether; /* STORAGE */ /// An array containing all of the owners addresses : /// those addresses are the only ones that can execute actions requiring an admin. address private _owner0x = 0x8E787E0c0B05BE25Ec993C5e109881166b675b31; address private _ownerA = 0x97fEA5464539bfE3810b8185E9Fa9D2D6d68a52c; address private _ownerB = 0x0678Ecc4Db075F89B966DE7Ea945C4A866966b0e; address private _ownerC = 0xC39574B02b76a43B03747641612c3d332Dec679B; address private _ownerD = 0x1282006521647ca094503219A61995C8142a9824; Card[] private _cards; /// A mapping from cards' IDs to their prices [0], the last investment* [1] and their highest price [2]. /// *If someone buys an icon for 0.001 ETH, then the last investment of the card will be 0.001 ETH. If someone else buys it back at 0.002 ETH, /// then the last investment will be 0.002 ETH. mapping (uint256 => uint256[3]) private _cardsPrices; /// A mapping from cards' names to the beneficiary addresses mapping (uint256 => address) private _beneficiaryAddresses; /// A mapping from cards' IDs to their owners mapping (uint256 => address) private _cardsOwners; /// A mapping from owner address to count of tokens that address owns. /// Used for ERC721's method 'balanceOf()' to resolve ownership count. mapping (address => uint256) private _tokenPerOwners; /// A mapping from cards' ids to an address that has been approved to call /// transferFrom(). Each Card can only have one approved address for transfer /// at any time. A zero value means no approval is outstanding. mapping (uint256 => address) public _allowedAddresses; /* STRUCTURES */ struct Card { uint16 generation; string name; bool isLocked; } /* EVENTS */ event YTIconSold(uint256 tokenId, uint256 newPrice, address newOwner); event PriceModified(uint256 tokenId, uint256 newPrice); /* ACCESS MODIFIERS */ /// Access modifier for owner's functionalities and actions only modifier ownerOnly() { require(msg.sender == _owner0x || msg.sender == _ownerA || msg.sender == _ownerB || msg.sender == _ownerC || msg.sender == _ownerD); _; } /* PROTOCOL METHODS (ERC721) */ function implementsERC721() public pure returns (bool) { return true; } /**************/ /* ERC20 compatible methods */ /**************/ /// This function is used to tell outside contracts and applications the name of this token. function name() public pure returns (string) { return NAME; } /// It provides outside programs with the token’s shorthand name, or symbol. function symbol() public pure returns (string) { return SYMBOL; } /// This function returns the total number of coins available on the blockchain. /// The supply does not have to be constant. function totalSupply() public view returns (uint256 supply) { return _cards.length; } /// This function is used to find the number of tokens that a given address owns. function balanceOf(address _owner) public view returns (uint balance) { return _tokenPerOwners[_owner]; } /**************/ /* Ownership methods */ /**************/ /// This function returns the address of the owner of a token. Because each ERC721 token is non-fungible and, /// therefore, unique, it’s referenced on the blockchain via a unique ID. /// We can determine the owner of a token using its ID. function ownerOf(uint256 _tokenId) public view returns (address owner) { require(_addressNotNull(_cardsOwners[_tokenId])); return _cardsOwners[_tokenId]; } /// This function approves, or grants, another entity permission to transfer a token on the owner’s behalf. function approve(address _to, uint256 _tokenId) public { require(bytes(_cards[_tokenId].name).length != 0); require(!_cards[_tokenId].isLocked); require(_owns(msg.sender, _tokenId)); require(msg.sender != _to); _allowedAddresses[_tokenId] = _to; Approval(msg.sender, _to, _tokenId); } /// This function acts like a withdraw function, since an outside party can call it in order /// to take tokens out of another user’s account. /// Therefore, takeOwnership can be used to when a user has been approved to own a certain amount of /// tokens and wishes to withdraw said tokens from another user’s balance. function takeOwnership(uint256 _tokenId) public { require(bytes(_cards[_tokenId].name).length != 0); require(!_cards[_tokenId].isLocked); address newOwner = msg.sender; address oldOwner = _cardsOwners[_tokenId]; require(_addressNotNull(newOwner)); require(newOwner != oldOwner); require(_isAllowed(newOwner, _tokenId)); _transfer(oldOwner, newOwner, _tokenId); } /// "transfer" lets the owner of a token send it to another user, similar to a standalone cryptocurrency. function transfer(address _to, uint256 _tokenId) public { require(bytes(_cards[_tokenId].name).length != 0); require(!_cards[_tokenId].isLocked); require(_owns(msg.sender, _tokenId)); require(msg.sender != _to); require(_addressNotNull(_to)); _transfer(msg.sender, _to, _tokenId); } function _transfer(address from, address to, uint256 tokenId) private { // Transfer ownership to the new owner _cardsOwners[tokenId] = to; // Increase the number of tokens own by the new owner _tokenPerOwners[to] += 1; // When creating new cards, from is address(0) if (from != address(0)) { _tokenPerOwners[from] -= 1; // clear any previously approved ownership exchange delete _allowedAddresses[tokenId]; } // Emit the transfer event. Transfer(from, to, tokenId); } /// Third-party initiates transfer of token from address from to address to function transferFrom(address from, address to, uint256 tokenId) public { require(!_cards[tokenId].isLocked); require(_owns(from, tokenId)); require(_isAllowed(to, tokenId)); require(_addressNotNull(to)); _transfer(from, to, tokenId); } /* MANAGEMENT FUNCTIONS -- ONLY USABLE BY ADMINS */ function createCard(string cardName, uint price, address cardOwner, address beneficiary, bool isLocked) public ownerOnly { require(bytes(cardName).length != 0); price = price == 0 ? _defaultPrice : price; _createCard(cardName, price, cardOwner, beneficiary, isLocked); } function createCardFromName(string cardName) public ownerOnly { require(bytes(cardName).length != 0); _createCard(cardName, _defaultPrice, address(0), address(0), false); } /// Create card function _createCard(string cardName, uint price, address cardOwner, address beneficiary, bool isLocked) private { require(_cards.length < 2^256 - 1); Card memory card = Card({ generation: _generation, name: cardName, isLocked: isLocked }); _cardsPrices[_cards.length][0] = price; // Current price _cardsPrices[_cards.length][1] = price; // Last bought price _cardsPrices[_cards.length][2] = price; // Highest _cardsOwners[_cards.length] = cardOwner; _beneficiaryAddresses[_cards.length] = beneficiary; _tokenPerOwners[cardOwner] += 1; _cards.push(card); } /// Change the current generation function evolveGeneration(uint16 newGeneration) public ownerOnly { _generation = newGeneration; } /// Change the address of one owner. function setOwner(address currentAddress, address newAddress) public ownerOnly { require(_addressNotNull(newAddress)); if (currentAddress == _ownerA) { _ownerA = newAddress; } else if (currentAddress == _ownerB) { _ownerB = newAddress; } else if (currentAddress == _ownerC) { _ownerC = newAddress; } else if (currentAddress == _ownerD) { _ownerD = newAddress; } } /// Set the charity fund. function setCharityFund(address newCharityFund) public ownerOnly { _charityFund = newCharityFund; } /// Set the beneficiary ETH address. function setBeneficiaryAddress(uint256 tokenId, address beneficiaryAddress) public ownerOnly { require(bytes(_cards[tokenId].name).length != 0); _beneficiaryAddresses[tokenId] = beneficiaryAddress; } /// Lock a card and make it unusable function lock(uint256 tokenId) public ownerOnly { require(!_cards[tokenId].isLocked); _cards[tokenId].isLocked = true; } /// Unlock a YTIcon and make it usable function unlock(uint256 tokenId) public ownerOnly { require(_cards[tokenId].isLocked); _cards[tokenId].isLocked = false; } /// Get the smart contract's balance out of the contract and transfers it to every related account. function payout() public ownerOnly { _payout(); } function _payout() private { uint256 balance = this.balance; _ownerA.transfer(SafeMath.div(SafeMath.mul(balance, 20), 100)); _ownerB.transfer(SafeMath.div(SafeMath.mul(balance, 20), 100)); _ownerC.transfer(SafeMath.div(SafeMath.mul(balance, 20), 100)); _ownerD.transfer(SafeMath.div(SafeMath.mul(balance, 20), 100)); _utilityFund.transfer(SafeMath.div(SafeMath.mul(balance, 20), 100)); } /* UTILS */ /// Check if the address is valid by checking if it is not equal to 0x0. function _addressNotNull(address target) private pure returns (bool) { return target != address(0); } /// Check for token ownership function _owns(address pretender, uint256 tokenId) private view returns (bool) { return pretender == _cardsOwners[tokenId]; } function _isAllowed(address claimant, uint256 tokenId) private view returns (bool) { return _allowedAddresses[tokenId] == claimant; } /* PUBLIC FUNCTIONS */ /// Get all of the useful card's informations. function getCard(uint256 tokenId) public view returns (string cardName, uint16 generation, bool isLocked, uint256 price, address owner, address beneficiary, bool isVerified) { Card storage card = _cards[tokenId]; cardName = card.name; require(bytes(cardName).length != 0); generation = card.generation; isLocked = card.isLocked; price = _cardsPrices[tokenId][0]; owner = _cardsOwners[tokenId]; beneficiary = _beneficiaryAddresses[tokenId]; isVerified = _addressNotNull(_beneficiaryAddresses[tokenId]) ? true : false; } /// Set a lower price if the sender is the card's owner. function setPrice(uint256 tokenId, uint256 newPrice) public { require(!_cards[tokenId].isLocked); // If new price > 0 // If the new price is higher or equal to the basic investment of the owner (e.g. if someone buys a card 0.001 ETH, then the default investment will be 0.001) // If the new price is lower or equal than the highest price set by the algorithm. require(newPrice > 0 && newPrice >= _cardsPrices[tokenId][1] && newPrice <= _cardsPrices[tokenId][2]); require(msg.sender == _cardsOwners[tokenId]); _cardsPrices[tokenId][0] = newPrice; PriceModified(tokenId, newPrice); } function purchase(uint256 tokenId) public payable { require(!_cards[tokenId].isLocked); require(_cardsPrices[tokenId][0] > 0); address oldOwner = _cardsOwners[tokenId]; address newOwner = msg.sender; uint256 sellingPrice = _cardsPrices[tokenId][0]; // Making sure the token owner isn't trying to purchase his/her own token. require(oldOwner != newOwner); require(_addressNotNull(newOwner)); // Making sure the amount sent is greater than or equal to the sellingPrice. require(msg.value >= sellingPrice); uint256 payment = uint256(SafeMath.div(SafeMath.mul(sellingPrice, 92), 100)); uint256 beneficiaryPayment = uint256(SafeMath.div(SafeMath.mul(sellingPrice, 3), 100)); uint256 purchaseExcess = SafeMath.sub(msg.value, sellingPrice); uint256 newPrice = 0; // Update prices if (sellingPrice < firstLimit) { newPrice = SafeMath.div(SafeMath.mul(sellingPrice, 200), 92); } else if (sellingPrice < secondLimit) { newPrice = SafeMath.div(SafeMath.mul(sellingPrice, 150), 92); } else if (sellingPrice < thirdLimit) { newPrice = SafeMath.div(SafeMath.mul(sellingPrice, 125), 92); } else { newPrice = SafeMath.div(SafeMath.mul(sellingPrice, 115), 92); } _cardsPrices[tokenId][0] = newPrice; // New price _cardsPrices[tokenId][1] = sellingPrice; // Last bought price _cardsPrices[tokenId][2] = newPrice; // New highest price _transfer(oldOwner, newOwner, tokenId); // Pay previous owner if (oldOwner != address(this) && oldOwner != address(0)) { oldOwner.transfer(payment); } if (_beneficiaryAddresses[tokenId] != address(0)) { _beneficiaryAddresses[tokenId].transfer(beneficiaryPayment); } else { _charityFund.transfer(beneficiaryPayment); } YTIconSold(tokenId, newPrice, newOwner); msg.sender.transfer(purchaseExcess); } function getOwnerCards(address owner) public view returns(uint256[] ownerTokens) { uint256 balance = balanceOf(owner); if (balance == 0) { return new uint256[](0); } else { uint256[] memory result = new uint256[](balance); uint256 total = totalSupply(); uint256 resultIndex = 0; uint256 cardId; for (cardId = 0; cardId <= total; cardId++) { if (_cardsOwners[cardId] == owner) { result[resultIndex] = cardId; resultIndex++; } } return result; } } function getHighestPrice(uint256 tokenId) public view returns(uint256 highestPrice) { highestPrice = _cardsPrices[tokenId][1]; } } /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { /** * @dev Multiplies two numbers, throws on overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; assert(c / a == b); return c; } /** * @dev Integer division of two numbers, truncating the quotient. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // assert(b > 0); // Solidity automatically throws when dividing by 0 uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Substracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"tokenId","type":"uint256"},{"name":"beneficiaryAddress","type":"address"}],"name":"setBeneficiaryAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"implementsERC721","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"supply","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newCharityFund","type":"address"}],"name":"setCharityFund","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"currentAddress","type":"address"},{"name":"newAddress","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"_allowedAddresses","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenId","type":"uint256"}],"name":"unlock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"name":"owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"payout","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":"cardName","type":"string"}],"name":"createCardFromName","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"tokenId","type":"uint256"}],"name":"getHighestPrice","outputs":[{"name":"highestPrice","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenId","type":"uint256"}],"name":"getCard","outputs":[{"name":"cardName","type":"string"},{"name":"generation","type":"uint16"},{"name":"isLocked","type":"bool"},{"name":"price","type":"uint256"},{"name":"owner","type":"address"},{"name":"beneficiary","type":"address"},{"name":"isVerified","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"NAME","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"takeOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"}],"name":"getOwnerCards","outputs":[{"name":"ownerTokens","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_generation","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenId","type":"uint256"}],"name":"lock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"tokenId","type":"uint256"}],"name":"purchase","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"newGeneration","type":"uint16"}],"name":"evolveGeneration","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"SYMBOL","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenId","type":"uint256"},{"name":"newPrice","type":"uint256"}],"name":"setPrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"cardName","type":"string"},{"name":"price","type":"uint256"},{"name":"cardOwner","type":"address"},{"name":"beneficiary","type":"address"},{"name":"isLocked","type":"bool"}],"name":"createCard","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"newPrice","type":"uint256"},{"indexed":false,"name":"newOwner","type":"address"}],"name":"YTIconSold","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"newPrice","type":"uint256"}],"name":"PriceModified","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"}]
Contract Creation Code
6060604052736b06a2a15dcf3ae45b9f133be6fd0be5a9faedc26000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f9864660c4aa89e241d7d44903d3c8a207644332600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160146101000a81548161ffff021916908361ffff16021790555066038d7ea4c6800060025566b1a2bc2ec500006003556706f05b59d3b20000600455670de0b6b3a7640000600555738e787e0c0b05be25ec993c5e109881166b675b31600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507397fea5464539bfe3810b8185e9fa9d2d6d68a52c600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550730678ecc4db075f89b966de7ea945c4a866966b0e600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c39574b02b76a43b03747641612c3d332dec679b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731282006521647ca094503219a61995c8142a9824600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034156102ad57600080fd5b6139c9806102bc6000396000f30060606040526004361061016a576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461016f5780630869b302146101fd578063095ea7b31461023f5780631051db341461028157806318160ddd146102ae5780631ff2c22b146102d757806323b872dd14610310578063299a7bcc146103715780633e929d32146103c95780636198e3391461042c5780636352211e1461044f57806363bd1d4a146104b257806370a08231146104c75780638fcf31e3146105145780638ff255d6146105715780639188d312146105a857806395d89b41146106d6578063a3f4df7e14610764578063a9059cbb146107f2578063b2e6ceeb14610834578063bec77cb114610857578063d4f3dd84146108e5578063dd46706414610916578063efef39a114610939578063f52fa89b14610951578063f76f8d7814610978578063f7d9757714610a06578063fbcfa0d714610a32575b600080fd5b341561017a57600080fd5b610182610ae1565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101c25780820151818401526020810190506101a7565b50505050905090810190601f1680156101ef5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561020857600080fd5b61023d600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b24565b005b341561024a57600080fd5b61027f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610d7a565b005b341561028c57600080fd5b610294610f03565b604051808215151515815260200191505060405180910390f35b34156102b957600080fd5b6102c1610f0c565b6040518082815260200191505060405180910390f35b34156102e257600080fd5b61030e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610f19565b005b341561031b57600080fd5b61036f600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611119565b005b341561037c57600080fd5b6103c7600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111a1565b005b34156103d457600080fd5b6103ea60048080359060200190919050506115e4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561043757600080fd5b61044d6004808035906020019091905050611617565b005b341561045a57600080fd5b6104706004808035906020019091905050611848565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156104bd57600080fd5b6104c56118cc565b005b34156104d257600080fd5b6104fe600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611a92565b6040518082815260200191505060405180910390f35b341561051f57600080fd5b61056f600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611adb565b005b341561057c57600080fd5b6105926004808035906020019091905050611cbc565b6040518082815260200191505060405180910390f35b34156105b357600080fd5b6105c96004808035906020019091905050611ce8565b60405180806020018861ffff1661ffff168152602001871515151581526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183151515158152602001828103825289818151815260200191508051906020019080838360005b8381101561069557808201518184015260208101905061067a565b50505050905090810190601f1680156106c25780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b34156106e157600080fd5b6106e9611edc565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561072957808201518184015260208101905061070e565b50505050905090810190601f1680156107565780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561076f57600080fd5b610777611f1f565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107b757808201518184015260208101905061079c565b50505050905090810190601f1680156107e45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156107fd57600080fd5b610832600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611f58565b005b341561083f57600080fd5b6108556004808035906020019091905050612049565b005b341561086257600080fd5b61088e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612177565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156108d15780820151818401526020810190506108b6565b505050509050019250505060405180910390f35b34156108f057600080fd5b6108f86122ae565b604051808261ffff1661ffff16815260200191505060405180910390f35b341561092157600080fd5b61093760048080359060200190919050506122c2565b005b61094f60048080359060200190919050506124f4565b005b341561095c57600080fd5b610976600480803561ffff16906020019091905050612a20565b005b341561098357600080fd5b61098b612bfc565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156109cb5780820151818401526020810190506109b0565b50505050905090810190601f1680156109f85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610a1157600080fd5b610a306004808035906020019091908035906020019091905050612c35565b005b3415610a3d57600080fd5b610adf600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080351515906020019091905050612db1565b005b610ae96137bc565b6040805190810160405280600781526020017f595449636f6e7300000000000000000000000000000000000000000000000000815250905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610bcd5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80610c255750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80610c7d5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80610cd55750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515610ce057600080fd5b6000600b83815481101515610cf157fe5b906000526020600020906003020160010180546001816001161561010002031660029004905014151515610d2457600080fd5b80600d600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000600b82815481101515610d8b57fe5b906000526020600020906003020160010180546001816001161561010002031660029004905014151515610dbe57600080fd5b600b81815481101515610dcd57fe5b906000526020600020906003020160020160009054906101000a900460ff16151515610df857600080fd5b610e023382612fa6565b1515610e0d57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151515610e4857600080fd5b816010600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a35050565b60006001905090565b6000600b80549050905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610fc25750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b8061101a5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806110725750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806110ca5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156110d557600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b8181548110151561112857fe5b906000526020600020906003020160020160009054906101000a900460ff1615151561115357600080fd5b61115d8382612fa6565b151561116857600080fd5b6111728282613012565b151561117d57600080fd5b6111868261307e565b151561119157600080fd5b61119c8383836130b7565b505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061124a5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806112a25750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806112fa5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806113525750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561135d57600080fd5b6113668161307e565b151561137157600080fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561140d5780600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506115e0565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114a95780600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506115df565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115455780600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506115de565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115dd5780600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5b5b5050565b60106020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806116c05750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806117185750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806117705750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806117c85750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156117d357600080fd5b600b818154811015156117e257fe5b906000526020600020906003020160020160009054906101000a900460ff16151561180c57600080fd5b6000600b8281548110151561181d57fe5b906000526020600020906003020160020160006101000a81548160ff02191690831515021790555050565b6000611886600e600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661307e565b151561189157600080fd5b600e600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806119755750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806119cd5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80611a255750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80611a7d5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515611a8857600080fd5b611a9061327c565b565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611b845750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80611bdc5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80611c345750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80611c8c5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515611c9757600080fd5b6000815114151515611ca857600080fd5b611cb98160025460008060006134e8565b50565b6000600c60008381526020019081526020016000206001600381101515611cdf57fe5b01549050919050565b611cf06137bc565b6000806000806000806000600b89815481101515611d0a57fe5b90600052602060002090600302019050806001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611db25780601f10611d8757610100808354040283529160200191611db2565b820191906000526020600020905b815481529060010190602001808311611d9557829003601f168201915b505050505097506000885114151515611dca57600080fd5b8060000160009054906101000a900461ffff1696508060020160009054906101000a900460ff169550600c60008a81526020019081526020016000206000600381101515611e1457fe5b01549450600e60008a815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169350600d60008a815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169250611ec0600d60008b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661307e565b611ecb576000611ece565b60015b915050919395979092949650565b611ee46137bc565b6040805190810160405280600681526020017f595449636f6e0000000000000000000000000000000000000000000000000000815250905090565b6040805190810160405280600781526020017f595449636f6e730000000000000000000000000000000000000000000000000081525081565b6000600b82815481101515611f6957fe5b906000526020600020906003020160010180546001816001161561010002031660029004905014151515611f9c57600080fd5b600b81815481101515611fab57fe5b906000526020600020906003020160020160009054906101000a900460ff16151515611fd657600080fd5b611fe03382612fa6565b1515611feb57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415151561202657600080fd5b61202f8261307e565b151561203a57600080fd5b6120453383836130b7565b5050565b6000806000600b8481548110151561205d57fe5b90600052602060002090600302016001018054600181600116156101000203166002900490501415151561209057600080fd5b600b8381548110151561209f57fe5b906000526020600020906003020160020160009054906101000a900460ff161515156120ca57600080fd5b339150600e600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061210c8261307e565b151561211757600080fd5b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561215257600080fd5b61215c8284613012565b151561216757600080fd5b6121728183856130b7565b505050565b61217f6137d0565b60006121896137d0565b600080600061219787611a92565b945060008514156121c95760006040518059106121b15750595b908082528060200260200182016040525095506122a4565b846040518059106121d75750595b908082528060200260200182016040525093506121f2610f0c565b925060009150600090505b82811115156122a0578673ffffffffffffffffffffffffffffffffffffffff16600e600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156122935780848381518110151561227c57fe5b906020019060200201818152505081806001019250505b80806001019150506121fd565b8395505b5050505050919050565b600160149054906101000a900461ffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061236b5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806123c35750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b8061241b5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806124735750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561247e57600080fd5b600b8181548110151561248d57fe5b906000526020600020906003020160020160009054906101000a900460ff161515156124b857600080fd5b6001600b828154811015156124c957fe5b906000526020600020906003020160020160006101000a81548160ff02191690831515021790555050565b6000806000806000806000600b8881548110151561250e57fe5b906000526020600020906003020160020160009054906101000a900460ff1615151561253957600080fd5b6000600c60008a8152602001908152602001600020600060038110151561255c57fe5b015411151561256a57600080fd5b600e600089815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169650339550600c600089815260200190815260200160002060006003811015156125c457fe5b015494508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415151561260357600080fd5b61260c8661307e565b151561261757600080fd5b84341015151561262657600080fd5b61263b61263486605c61374d565b6064613788565b935061265261264b86600361374d565b6064613788565b925061265e34866137a3565b91506000905060035485101561268a5761268361267c8660c861374d565b605c613788565b90506126f0565b6004548510156126b0576126a96126a286609661374d565b605c613788565b90506126ef565b6005548510156126d6576126cf6126c886607d61374d565b605c613788565b90506126ee565b6126eb6126e486607361374d565b605c613788565b90505b5b5b80600c60008a8152602001908152602001600020600060038110151561271257fe5b018190555084600c60008a8152602001908152602001600020600160038110151561273957fe5b018190555080600c60008a8152602001908152602001600020600260038110151561276057fe5b018190555061277087878a6130b7565b3073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141580156127d95750600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b1561281f578673ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f19350505050151561281e57600080fd5b5b600073ffffffffffffffffffffffffffffffffffffffff16600d60008a815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561290057600d600089815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f1935050505015156128fb57600080fd5b612963565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050151561296257600080fd5b5b7f22c48bafafcdd8644b8a7d55c07e77f573da18583b4325a29562316548d6bec4888288604051808481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405180910390a13373ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501515612a1657600080fd5b5050505050505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612ac95750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80612b215750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80612b795750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80612bd15750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515612bdc57600080fd5b80600160146101000a81548161ffff021916908361ffff16021790555050565b6040805190810160405280600681526020017f595449636f6e000000000000000000000000000000000000000000000000000081525081565b600b82815481101515612c4457fe5b906000526020600020906003020160020160009054906101000a900460ff16151515612c6f57600080fd5b600081118015612ca15750600c60008381526020019081526020016000206001600381101515612c9b57fe5b01548110155b8015612ccf5750600c60008381526020019081526020016000206002600381101515612cc957fe5b01548111155b1515612cda57600080fd5b600e600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612d4757600080fd5b80600c60008481526020019081526020016000206000600381101515612d6957fe5b01819055507ffbaac357beea4d2420de45899585c6b8bae92a6effc61fb6000b5da0c0e283c78282604051808381526020018281526020019250505060405180910390a15050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612e5a5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80612eb25750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80612f0a5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80612f625750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515612f6d57600080fd5b6000855114151515612f7e57600080fd5b60008414612f8c5783612f90565b6002545b9350612f9f85858585856134e8565b5050505050565b6000600e600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614905092915050565b60008273ffffffffffffffffffffffffffffffffffffffff166010600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614159050919050565b81600e600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515613212576001600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506010600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60003073ffffffffffffffffffffffffffffffffffffffff16319050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6132e96132e284601461374d565b6064613788565b9081150290604051600060405180830381858888f19350505050151561330e57600080fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61335f61335884601461374d565b6064613788565b9081150290604051600060405180830381858888f19350505050151561338457600080fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6133d56133ce84601461374d565b6064613788565b9081150290604051600060405180830381858888f1935050505015156133fa57600080fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61344b61344484601461374d565b6064613788565b9081150290604051600060405180830381858888f19350505050151561347057600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6134c06134b984601461374d565b6064613788565b9081150290604051600060405180830381858888f1935050505015156134e557600080fd5b50565b6134f06137e4565b60fd600b8054905010151561350457600080fd5b606060405190810160405280600160149054906101000a900461ffff1661ffff168152602001878152602001831515815250905084600c6000600b805490508152602001908152602001600020600060038110151561355f57fe5b018190555084600c6000600b805490508152602001908152602001600020600160038110151561358b57fe5b018190555084600c6000600b80549050815260200190815260200160002060026003811015156135b757fe5b018190555083600e6000600b80549050815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600d6000600b80549050815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600b80548060010182816136cc9190613812565b9160005260206000209060030201600083909190915060008201518160000160006101000a81548161ffff021916908361ffff1602179055506020820151816001019080519060200190613721929190613844565b5060408201518160020160006101000a81548160ff021916908315150217905550505050505050505050565b60008060008414156137625760009150613781565b828402905082848281151561377357fe5b0414151561377d57fe5b8091505b5092915050565b600080828481151561379657fe5b0490508091505092915050565b60008282111515156137b157fe5b818303905092915050565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b606060405190810160405280600061ffff1681526020016138036138c4565b81526020016000151581525090565b81548183558181151161383f5760030281600302836000526020600020918201910161383e91906138d8565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061388557805160ff19168380011785556138b3565b828001600101855582156138b3579182015b828111156138b2578251825591602001919060010190613897565b5b5090506138c09190613930565b5090565b602060405190810160405280600081525090565b61392d91905b8082111561392957600080820160006101000a81549061ffff021916905560018201600061390c9190613955565b6002820160006101000a81549060ff0219169055506003016138de565b5090565b90565b61395291905b8082111561394e576000816000905550600101613936565b5090565b90565b50805460018160011615610100020316600290046000825580601f1061397b575061399a565b601f0160209004906000526020600020908101906139999190613930565b5b505600a165627a7a72305820a1a1d476d88a7fccbb4d02160dc3f16b56c23e11efba6c3db9a28cde09ee1bf50029
Deployed Bytecode
0x60606040526004361061016a576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461016f5780630869b302146101fd578063095ea7b31461023f5780631051db341461028157806318160ddd146102ae5780631ff2c22b146102d757806323b872dd14610310578063299a7bcc146103715780633e929d32146103c95780636198e3391461042c5780636352211e1461044f57806363bd1d4a146104b257806370a08231146104c75780638fcf31e3146105145780638ff255d6146105715780639188d312146105a857806395d89b41146106d6578063a3f4df7e14610764578063a9059cbb146107f2578063b2e6ceeb14610834578063bec77cb114610857578063d4f3dd84146108e5578063dd46706414610916578063efef39a114610939578063f52fa89b14610951578063f76f8d7814610978578063f7d9757714610a06578063fbcfa0d714610a32575b600080fd5b341561017a57600080fd5b610182610ae1565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101c25780820151818401526020810190506101a7565b50505050905090810190601f1680156101ef5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561020857600080fd5b61023d600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b24565b005b341561024a57600080fd5b61027f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610d7a565b005b341561028c57600080fd5b610294610f03565b604051808215151515815260200191505060405180910390f35b34156102b957600080fd5b6102c1610f0c565b6040518082815260200191505060405180910390f35b34156102e257600080fd5b61030e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610f19565b005b341561031b57600080fd5b61036f600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611119565b005b341561037c57600080fd5b6103c7600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111a1565b005b34156103d457600080fd5b6103ea60048080359060200190919050506115e4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561043757600080fd5b61044d6004808035906020019091905050611617565b005b341561045a57600080fd5b6104706004808035906020019091905050611848565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156104bd57600080fd5b6104c56118cc565b005b34156104d257600080fd5b6104fe600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611a92565b6040518082815260200191505060405180910390f35b341561051f57600080fd5b61056f600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611adb565b005b341561057c57600080fd5b6105926004808035906020019091905050611cbc565b6040518082815260200191505060405180910390f35b34156105b357600080fd5b6105c96004808035906020019091905050611ce8565b60405180806020018861ffff1661ffff168152602001871515151581526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183151515158152602001828103825289818151815260200191508051906020019080838360005b8381101561069557808201518184015260208101905061067a565b50505050905090810190601f1680156106c25780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b34156106e157600080fd5b6106e9611edc565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561072957808201518184015260208101905061070e565b50505050905090810190601f1680156107565780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561076f57600080fd5b610777611f1f565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107b757808201518184015260208101905061079c565b50505050905090810190601f1680156107e45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156107fd57600080fd5b610832600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611f58565b005b341561083f57600080fd5b6108556004808035906020019091905050612049565b005b341561086257600080fd5b61088e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612177565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156108d15780820151818401526020810190506108b6565b505050509050019250505060405180910390f35b34156108f057600080fd5b6108f86122ae565b604051808261ffff1661ffff16815260200191505060405180910390f35b341561092157600080fd5b61093760048080359060200190919050506122c2565b005b61094f60048080359060200190919050506124f4565b005b341561095c57600080fd5b610976600480803561ffff16906020019091905050612a20565b005b341561098357600080fd5b61098b612bfc565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156109cb5780820151818401526020810190506109b0565b50505050905090810190601f1680156109f85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610a1157600080fd5b610a306004808035906020019091908035906020019091905050612c35565b005b3415610a3d57600080fd5b610adf600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080351515906020019091905050612db1565b005b610ae96137bc565b6040805190810160405280600781526020017f595449636f6e7300000000000000000000000000000000000000000000000000815250905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610bcd5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80610c255750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80610c7d5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80610cd55750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515610ce057600080fd5b6000600b83815481101515610cf157fe5b906000526020600020906003020160010180546001816001161561010002031660029004905014151515610d2457600080fd5b80600d600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000600b82815481101515610d8b57fe5b906000526020600020906003020160010180546001816001161561010002031660029004905014151515610dbe57600080fd5b600b81815481101515610dcd57fe5b906000526020600020906003020160020160009054906101000a900460ff16151515610df857600080fd5b610e023382612fa6565b1515610e0d57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151515610e4857600080fd5b816010600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a35050565b60006001905090565b6000600b80549050905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610fc25750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b8061101a5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806110725750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806110ca5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156110d557600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b8181548110151561112857fe5b906000526020600020906003020160020160009054906101000a900460ff1615151561115357600080fd5b61115d8382612fa6565b151561116857600080fd5b6111728282613012565b151561117d57600080fd5b6111868261307e565b151561119157600080fd5b61119c8383836130b7565b505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061124a5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806112a25750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806112fa5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806113525750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561135d57600080fd5b6113668161307e565b151561137157600080fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561140d5780600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506115e0565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114a95780600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506115df565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115455780600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506115de565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115dd5780600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5b5b5050565b60106020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806116c05750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806117185750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806117705750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806117c85750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156117d357600080fd5b600b818154811015156117e257fe5b906000526020600020906003020160020160009054906101000a900460ff16151561180c57600080fd5b6000600b8281548110151561181d57fe5b906000526020600020906003020160020160006101000a81548160ff02191690831515021790555050565b6000611886600e600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661307e565b151561189157600080fd5b600e600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806119755750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806119cd5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80611a255750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80611a7d5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515611a8857600080fd5b611a9061327c565b565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611b845750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80611bdc5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80611c345750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80611c8c5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515611c9757600080fd5b6000815114151515611ca857600080fd5b611cb98160025460008060006134e8565b50565b6000600c60008381526020019081526020016000206001600381101515611cdf57fe5b01549050919050565b611cf06137bc565b6000806000806000806000600b89815481101515611d0a57fe5b90600052602060002090600302019050806001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611db25780601f10611d8757610100808354040283529160200191611db2565b820191906000526020600020905b815481529060010190602001808311611d9557829003601f168201915b505050505097506000885114151515611dca57600080fd5b8060000160009054906101000a900461ffff1696508060020160009054906101000a900460ff169550600c60008a81526020019081526020016000206000600381101515611e1457fe5b01549450600e60008a815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169350600d60008a815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169250611ec0600d60008b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661307e565b611ecb576000611ece565b60015b915050919395979092949650565b611ee46137bc565b6040805190810160405280600681526020017f595449636f6e0000000000000000000000000000000000000000000000000000815250905090565b6040805190810160405280600781526020017f595449636f6e730000000000000000000000000000000000000000000000000081525081565b6000600b82815481101515611f6957fe5b906000526020600020906003020160010180546001816001161561010002031660029004905014151515611f9c57600080fd5b600b81815481101515611fab57fe5b906000526020600020906003020160020160009054906101000a900460ff16151515611fd657600080fd5b611fe03382612fa6565b1515611feb57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415151561202657600080fd5b61202f8261307e565b151561203a57600080fd5b6120453383836130b7565b5050565b6000806000600b8481548110151561205d57fe5b90600052602060002090600302016001018054600181600116156101000203166002900490501415151561209057600080fd5b600b8381548110151561209f57fe5b906000526020600020906003020160020160009054906101000a900460ff161515156120ca57600080fd5b339150600e600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061210c8261307e565b151561211757600080fd5b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561215257600080fd5b61215c8284613012565b151561216757600080fd5b6121728183856130b7565b505050565b61217f6137d0565b60006121896137d0565b600080600061219787611a92565b945060008514156121c95760006040518059106121b15750595b908082528060200260200182016040525095506122a4565b846040518059106121d75750595b908082528060200260200182016040525093506121f2610f0c565b925060009150600090505b82811115156122a0578673ffffffffffffffffffffffffffffffffffffffff16600e600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156122935780848381518110151561227c57fe5b906020019060200201818152505081806001019250505b80806001019150506121fd565b8395505b5050505050919050565b600160149054906101000a900461ffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061236b5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806123c35750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b8061241b5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806124735750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561247e57600080fd5b600b8181548110151561248d57fe5b906000526020600020906003020160020160009054906101000a900460ff161515156124b857600080fd5b6001600b828154811015156124c957fe5b906000526020600020906003020160020160006101000a81548160ff02191690831515021790555050565b6000806000806000806000600b8881548110151561250e57fe5b906000526020600020906003020160020160009054906101000a900460ff1615151561253957600080fd5b6000600c60008a8152602001908152602001600020600060038110151561255c57fe5b015411151561256a57600080fd5b600e600089815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169650339550600c600089815260200190815260200160002060006003811015156125c457fe5b015494508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415151561260357600080fd5b61260c8661307e565b151561261757600080fd5b84341015151561262657600080fd5b61263b61263486605c61374d565b6064613788565b935061265261264b86600361374d565b6064613788565b925061265e34866137a3565b91506000905060035485101561268a5761268361267c8660c861374d565b605c613788565b90506126f0565b6004548510156126b0576126a96126a286609661374d565b605c613788565b90506126ef565b6005548510156126d6576126cf6126c886607d61374d565b605c613788565b90506126ee565b6126eb6126e486607361374d565b605c613788565b90505b5b5b80600c60008a8152602001908152602001600020600060038110151561271257fe5b018190555084600c60008a8152602001908152602001600020600160038110151561273957fe5b018190555080600c60008a8152602001908152602001600020600260038110151561276057fe5b018190555061277087878a6130b7565b3073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141580156127d95750600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b1561281f578673ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f19350505050151561281e57600080fd5b5b600073ffffffffffffffffffffffffffffffffffffffff16600d60008a815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561290057600d600089815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f1935050505015156128fb57600080fd5b612963565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050151561296257600080fd5b5b7f22c48bafafcdd8644b8a7d55c07e77f573da18583b4325a29562316548d6bec4888288604051808481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405180910390a13373ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501515612a1657600080fd5b5050505050505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612ac95750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80612b215750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80612b795750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80612bd15750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515612bdc57600080fd5b80600160146101000a81548161ffff021916908361ffff16021790555050565b6040805190810160405280600681526020017f595449636f6e000000000000000000000000000000000000000000000000000081525081565b600b82815481101515612c4457fe5b906000526020600020906003020160020160009054906101000a900460ff16151515612c6f57600080fd5b600081118015612ca15750600c60008381526020019081526020016000206001600381101515612c9b57fe5b01548110155b8015612ccf5750600c60008381526020019081526020016000206002600381101515612cc957fe5b01548111155b1515612cda57600080fd5b600e600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612d4757600080fd5b80600c60008481526020019081526020016000206000600381101515612d6957fe5b01819055507ffbaac357beea4d2420de45899585c6b8bae92a6effc61fb6000b5da0c0e283c78282604051808381526020018281526020019250505060405180910390a15050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612e5a5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80612eb25750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80612f0a5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80612f625750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515612f6d57600080fd5b6000855114151515612f7e57600080fd5b60008414612f8c5783612f90565b6002545b9350612f9f85858585856134e8565b5050505050565b6000600e600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614905092915050565b60008273ffffffffffffffffffffffffffffffffffffffff166010600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614159050919050565b81600e600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515613212576001600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506010600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60003073ffffffffffffffffffffffffffffffffffffffff16319050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6132e96132e284601461374d565b6064613788565b9081150290604051600060405180830381858888f19350505050151561330e57600080fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61335f61335884601461374d565b6064613788565b9081150290604051600060405180830381858888f19350505050151561338457600080fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6133d56133ce84601461374d565b6064613788565b9081150290604051600060405180830381858888f1935050505015156133fa57600080fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61344b61344484601461374d565b6064613788565b9081150290604051600060405180830381858888f19350505050151561347057600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6134c06134b984601461374d565b6064613788565b9081150290604051600060405180830381858888f1935050505015156134e557600080fd5b50565b6134f06137e4565b60fd600b8054905010151561350457600080fd5b606060405190810160405280600160149054906101000a900461ffff1661ffff168152602001878152602001831515815250905084600c6000600b805490508152602001908152602001600020600060038110151561355f57fe5b018190555084600c6000600b805490508152602001908152602001600020600160038110151561358b57fe5b018190555084600c6000600b80549050815260200190815260200160002060026003811015156135b757fe5b018190555083600e6000600b80549050815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600d6000600b80549050815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600b80548060010182816136cc9190613812565b9160005260206000209060030201600083909190915060008201518160000160006101000a81548161ffff021916908361ffff1602179055506020820151816001019080519060200190613721929190613844565b5060408201518160020160006101000a81548160ff021916908315150217905550505050505050505050565b60008060008414156137625760009150613781565b828402905082848281151561377357fe5b0414151561377d57fe5b8091505b5092915050565b600080828481151561379657fe5b0490508091505092915050565b60008282111515156137b157fe5b818303905092915050565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b606060405190810160405280600061ffff1681526020016138036138c4565b81526020016000151581525090565b81548183558181151161383f5760030281600302836000526020600020918201910161383e91906138d8565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061388557805160ff19168380011785556138b3565b828001600101855582156138b3579182015b828111156138b2578251825591602001919060010190613897565b5b5090506138c09190613930565b5090565b602060405190810160405280600081525090565b61392d91905b8082111561392957600080820160006101000a81549061ffff021916905560018201600061390c9190613955565b6002820160006101000a81549060ff0219169055506003016138de565b5090565b90565b61395291905b8082111561394e576000816000905550600101613936565b5090565b90565b50805460018160011615610100020316600290046000825580601f1061397b575061399a565b601f0160209004906000526020600020908101906139999190613930565b5b505600a165627a7a72305820a1a1d476d88a7fccbb4d02160dc3f16b56c23e11efba6c3db9a28cde09ee1bf50029
Swarm Source
bzzr://a1a1d476d88a7fccbb4d02160dc3f16b56c23e11efba6c3db9a28cde09ee1bf5
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.