ERC-20
Overview
Max Total Supply
0 ITM
Holders
2,443
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Aphrodite
Compiler Version
v0.4.21+commit.dfe3193c
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-04-30 */ pragma solidity ^0.4.21; // File: contracts/auth/AuthorizedList.sol /* * Created by: alexo (Big Deeper Advisors, Inc) * For: Input Strategic Partners (ISP) and Intimate.io * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, * TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE * SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ pragma solidity ^0.4.21; contract AuthorizedList { bytes32 constant APHRODITE = keccak256("Goddess of Love!"); bytes32 constant CUPID = keccak256("Aphrodite's Little Helper."); bytes32 constant BULKTRANSFER = keccak256("Bulk Transfer User."); mapping (address => mapping(bytes32 => bool)) internal authorized; mapping (bytes32 => bool) internal contractPermissions; } // File: contracts/auth/Authorized.sol /* * Created by: alexo (Big Deeper Advisors, Inc) * For: Input Strategic Partners (ISP) and Intimate.io * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, * TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE * SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ pragma solidity ^0.4.21; contract Authorized is AuthorizedList { function Authorized() public { /// Set the initial permission for msg.sender (contract creator), it can then add permissions for others authorized[msg.sender][APHRODITE] = true; } /// Check if _address is authorized to access functionality with _authorization level modifier ifAuthorized(address _address, bytes32 _authorization) { require(authorized[_address][_authorization] || authorized[_address][APHRODITE]); _; } /// @dev Check if _address is authorized for _authorization function isAuthorized(address _address, bytes32 _authorization) public view returns (bool) { return authorized[_address][_authorization]; } /// @dev Change authorization for _address /// @param _address Address whose permission is to be changed /// @param _authorization Authority to be changed function toggleAuthorization(address _address, bytes32 _authorization) public ifAuthorized(msg.sender, APHRODITE) { /// Prevent inadvertent self locking out, cannot change own authority require(_address != msg.sender); /// No need for lower level authorization to linger if (_authorization == APHRODITE && !authorized[_address][APHRODITE]) { authorized[_address][CUPID] = false; } authorized[_address][_authorization] = !authorized[_address][_authorization]; } } // File: contracts/math/SafeMath.sol library SafeMath { function mul(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a * b; require(a == 0 || c / a == b); return c; } /* Not needed function div(uint256 a, uint256 b) internal pure returns (uint256) { // require(b > 0); // Solidity automatically throws when dividing by 0 uint256 c = a / b; // require(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) { require(b <= a); return a - b; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a); return c; } } // File: contracts/token/IERC20Basic.sol /* * Created by: alexo (Big Deeper Advisors, Inc) * For: Input Strategic Partners (ISP) and Intimate.io * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, * TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE * SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ pragma solidity ^0.4.21; contract IERC20Basic { function totalSupply() public view returns (uint256); function balanceOf(address _who) public view returns (uint256); function transfer(address _to, uint256 _value) public returns (bool); event Transfer(address indexed _from, address indexed _to, uint256 _value); } // File: contracts/token/RecoverCurrency.sol /* * Created by: alexo (Big Deeper Advisors, Inc) * For: Input Strategic Partners (ISP) and Intimate.io * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, * TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE * SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ pragma solidity ^0.4.21; /// @title Authorized account can reclaim ERC20Basic tokens. contract RecoverCurrency is AuthorizedList, Authorized { event EtherRecovered(address indexed _to, uint256 _value); function recoverEther() external ifAuthorized(msg.sender, APHRODITE) { msg.sender.transfer(address(this).balance); emit EtherRecovered(msg.sender, address(this).balance); } /// @dev Reclaim all ERC20Basic compatible tokens /// @param _address The address of the token contract function recoverToken(address _address) external ifAuthorized(msg.sender, APHRODITE) { require(_address != address(0)); IERC20Basic token = IERC20Basic(_address); uint256 balance = token.balanceOf(address(this)); token.transfer(msg.sender, balance); } } // File: contracts/managed/Freezable.sol /* * Created by Input Strategic Partners (ISP) and Intimate.io * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, * TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE * SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ pragma solidity ^0.4.21; /** * @title Freezable * @dev allows authorized accounts to add/remove other accounts to the list of fozen accounts. * Accounts in the list cannot transfer and approve and their balances and allowances cannot be retrieved. */ contract Freezable is AuthorizedList, Authorized { event Frozen(address indexed _account); event Unfrozen(address indexed _account); mapping (address => bool) public frozenAccounts; /// Make sure access control is initialized function Freezable() public AuthorizedList() Authorized() { } /** * @dev Throws if called by any account that's frozen. */ modifier notFrozen { require(!frozenAccounts[msg.sender]); _; } /** * @dev check if an account is frozen * @param account address to check * @return true iff the address is in the list of frozen accounts and hasn't been unfrozen */ function isFrozen(address account) public view returns (bool) { return frozenAccounts[account]; } /** * @dev add an address to the list of frozen accounts * @param account address to freeze * @return true if the address was added to the list of frozen accounts, false if the address was already in the list */ function freezeAccount(address account) public ifAuthorized(msg.sender, APHRODITE) returns (bool success) { if (!frozenAccounts[account]) { frozenAccounts[account] = true; emit Frozen(account); success = true; } } /** * @dev remove an address from the list of frozen accounts * @param account address to unfreeze * @return true if the address was removed from the list of frozen accounts, * false if the address wasn't in the list in the first place */ function unfreezeAccount(address account) public ifAuthorized(msg.sender, APHRODITE) returns (bool success) { if (frozenAccounts[account]) { frozenAccounts[account] = false; emit Unfrozen(account); success = true; } } } // File: contracts/managed/Pausable.sol /* * Created by: alexo (Big Deeper Advisors, Inc) * For: Input Strategic Partners (ISP) and Intimate.io * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, * TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE * SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ pragma solidity ^0.4.21; contract Pausable is AuthorizedList, Authorized { event Pause(); event Unpause(); /// @dev We deploy in UNpaused state, should it be paused? bool public paused = false; /// Make sure access control is initialized function Pausable() public AuthorizedList() Authorized() { } /// @dev modifier to allow actions only when the contract IS NOT paused modifier whenNotPaused { require(!paused); _; } /// @dev modifier to allow actions only when the contract is paused modifier whenPaused { require(paused); _; } /// @dev called by an authorized msg.sender to pause, triggers stopped state /// Multiple addresses may be authorized to call this method function pause() public whenNotPaused ifAuthorized(msg.sender, CUPID) returns (bool) { emit Pause(); paused = true; return true; } /// @dev called by an authorized msg.sender to unpause, returns to normal state /// Multiple addresses may be authorized to call this method function unpause() public whenPaused ifAuthorized(msg.sender, CUPID) returns (bool) { emit Unpause(); paused = false; return true; } } // File: contracts/storage/AllowancesLedger.sol /* * Created by: alexo (Big Deeper Advisors, Inc) * For: Input Strategic Partners (ISP) and intimate.io * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, * TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE * SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ pragma solidity ^0.4.21; contract AllowancesLedger { mapping (address => mapping (address => uint256)) public allowances; } // File: contracts/storage/TokenLedger.sol /* * Created by: alexo (Big Deeper Advisors, Inc) * For: Input Strategic Partners (ISP) and Intimate.io * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, * TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE * SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ pragma solidity ^0.4.21; contract TokenLedger is AuthorizedList, Authorized { mapping(address => uint256) public balances; uint256 public totalsupply; struct SeenAddressRecord { bool seen; uint256 accountArrayIndex; } // Iterable accounts address[] internal accounts; mapping(address => SeenAddressRecord) internal seenBefore; /// @dev Keeping track of addresses in an array is useful as mappings are not iterable /// @return Number of addresses holding this token function numberAccounts() public view ifAuthorized(msg.sender, APHRODITE) returns (uint256) { return accounts.length; } /// @dev Keeping track of addresses in an array is useful as mappings are not iterable function returnAccounts() public view ifAuthorized(msg.sender, APHRODITE) returns (address[] holders) { return accounts; } function balanceOf(uint256 _id) public view ifAuthorized(msg.sender, CUPID) returns (uint256 balance) { require (_id < accounts.length); return balances[accounts[_id]]; } } // File: contracts/storage/TokenSettings.sol /* * Created by: alexo (Big Deeper Advisors, Inc) * For: Input Strategic Partners (ISP) and Intimate.io * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, * TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE * SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ pragma solidity ^0.4.21; contract TokenSettings is AuthorizedList, Authorized { /// These strings should be set temporarily for testing on Rinkeby/Ropsten/Kovan to somethin else /// to avoid people squatting on names /// Change back to "intimate" and "ITM" for mainnet deployment string public name = "intimate"; string public symbol = "ITM"; uint256 public INITIAL_SUPPLY = 100000000 * 10**18; // 100 million of subdivisible tokens uint8 public constant decimals = 18; /// @dev Change token name /// @param _name string function setName(string _name) public ifAuthorized(msg.sender, APHRODITE) { name = _name; } /// @dev Change token symbol /// @param _symbol string function setSymbol(string _symbol) public ifAuthorized(msg.sender, APHRODITE) { symbol = _symbol; } } // File: contracts/storage/BasicTokenStorage.sol /* * Created by: alexo (Big Deeper Advisors, Inc) * For: Input Strategic Partners (ISP) and Intimate.io * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, * TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE * SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ pragma solidity ^0.4.21; /// Collect all the state variables for the token's functions into a single contract contract BasicTokenStorage is AuthorizedList, Authorized, TokenSettings, AllowancesLedger, TokenLedger { /// @dev Ensure that authorization is set function BasicTokenStorage() public Authorized() TokenSettings() AllowancesLedger() TokenLedger() { } /// @dev Keep track of addresses seen before, push new ones into accounts list /// @param _tokenholder address to check for "newness" function trackAddresses(address _tokenholder) internal { if (!seenBefore[_tokenholder].seen) { seenBefore[_tokenholder].seen = true; accounts.push(_tokenholder); seenBefore[_tokenholder].accountArrayIndex = accounts.length - 1; } } /// @dev remove address from seenBefore and accounts /// @param _tokenholder address to remove function removeSeenAddress(address _tokenholder) internal { uint index = seenBefore[_tokenholder].accountArrayIndex; require(index < accounts.length); if (index != accounts.length - 1) { accounts[index] = accounts[accounts.length - 1]; } accounts.length--; delete seenBefore[_tokenholder]; } } // File: contracts/token/BasicToken.sol /* * Created by: alexo (Big Deeper Advisors, Inc) * For: Input Strategic Partners (ISP) and Intimate.io * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, * TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE * SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ pragma solidity ^0.4.21; contract BasicToken is IERC20Basic, BasicTokenStorage, Pausable, Freezable { using SafeMath for uint256; event Transfer(address indexed _tokenholder, address indexed _tokenrecipient, uint256 _value); event BulkTransfer(address indexed _tokenholder, uint256 _howmany); /// @dev Return the total token supply function totalSupply() public view whenNotPaused returns (uint256) { return totalsupply; } /// @dev transfer token for a specified address /// @param _to The address to transfer to. /// @param _value The amount to be transferred. function transfer(address _to, uint256 _value) public whenNotPaused notFrozen returns (bool) { /// No transfers to 0x0 address, use burn instead, if implemented require(_to != address(0)); /// No useless operations require(msg.sender != _to); /// This will revert if not enough funds balances[msg.sender] = balances[msg.sender].sub(_value); if (balances[msg.sender] == 0) { removeSeenAddress(msg.sender); } /// _to might be a completely new address, so check and store if so trackAddresses(_to); /// This will revert on overflow balances[_to] = balances[_to].add(_value); /// Emit the Transfer event emit Transfer(msg.sender, _to, _value); return true; } /// @dev bulkTransfer tokens to a list of specified addresses, not an ERC20 function /// @param _tos The list of addresses to transfer to. /// @param _values The list of amounts to be transferred. function bulkTransfer(address[] _tos, uint256[] _values) public whenNotPaused notFrozen ifAuthorized(msg.sender, BULKTRANSFER) returns (bool) { require (_tos.length == _values.length); uint256 sourceBalance = balances[msg.sender]; /// Temporarily set balance to 0 to mitigate the possibility of re-entrancy attacks balances[msg.sender] = 0; for (uint256 i = 0; i < _tos.length; i++) { uint256 currentValue = _values[i]; address _to = _tos[i]; require(_to != address(0)); require(currentValue <= sourceBalance); require(msg.sender != _to); sourceBalance = sourceBalance.sub(currentValue); balances[_to] = balances[_to].add(currentValue); trackAddresses(_to); emit Transfer(msg.sender, _tos[i], currentValue); } /// Set to the remaining balance balances[msg.sender] = sourceBalance; emit BulkTransfer(msg.sender, _tos.length); if (balances[msg.sender] == 0) { removeSeenAddress(msg.sender); } return true; } /// @dev Gets balance of the specified account. /// @param _tokenholder Address of interest /// @return Balance for the passed address function balanceOf(address _tokenholder) public view whenNotPaused returns (uint256 balance) { require(!isFrozen(_tokenholder)); return balances[_tokenholder]; } } // File: contracts/token/IERC20.sol /* * Created by: alexo (Big Deeper Advisors, Inc) * For: Input Strategic Partners (ISP) and Intimate.io * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, * TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE * SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ pragma solidity ^0.4.21; contract IERC20 is IERC20Basic { function allowance(address _tokenholder, address _tokenspender) view public returns (uint256); function transferFrom(address _from, address _to, uint256 _value) public returns (bool); function approve(address _tokenspender, uint256 _value) public returns (bool); event Approval(address indexed _tokenholder, address indexed _tokenspender, uint256 _value); } // File: contracts/token/StandardToken.sol /* * Created by: alexo (Big Deeper Advisors, Inc) * For: Input Strategic Partners (ISP) and Intimate.io * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, * TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE * SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ pragma solidity ^0.4.21; contract StandardToken is IERC20Basic, BasicToken, IERC20 { using SafeMath for uint256; event Approval(address indexed _tokenholder, address indexed _tokenspender, uint256 _value); /// @dev Implements ERC20 transferFrom from one address to another /// @param _from The source address for tokens /// @param _to The destination address for tokens /// @param _value The number/amount to transfer function transferFrom(address _from, address _to, uint256 _value) public whenNotPaused notFrozen returns (bool) { // Don't send tokens to 0x0 address, use burn function that updates totalSupply // and don't waste gas sending tokens to yourself require(_to != address(0) && _from != _to); require(!isFrozen(_from) && !isFrozen(_to)); /// This will revert if _value is larger than the allowance allowances[_from][msg.sender] = allowances[_from][msg.sender].sub(_value); balances[_from] = balances[_from].sub(_value); /// _to might be a completely new address, so check and store if so trackAddresses(_to); balances[_to] = balances[_to].add(_value); /// Emit the Transfer event emit Transfer(_from, _to, _value); return true; } /// @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. /// @param _tokenspender The address which will spend the funds. /// @param _value The amount of tokens to be spent. function approve(address _tokenspender, uint256 _value) public whenNotPaused notFrozen returns (bool) { require(_tokenspender != address(0) && msg.sender != _tokenspender); require(!isFrozen(_tokenspender)); /// To mitigate reentrancy race condition, set allowance for _tokenspender to 0 /// first and then set the new value /// https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 require((_value == 0) || (allowances[msg.sender][_tokenspender] == 0)); /// Allow _tokenspender to transfer up to _value in tokens from msg.sender allowances[msg.sender][_tokenspender] = _value; /// Emit the Approval event emit Approval(msg.sender, _tokenspender, _value); return true; } /// @dev Function to check the amount of tokens that a spender can spend /// @param _tokenholder Token owner account address /// @param _tokenspender Account address authorized to transfer tokens /// @return Amount of tokens still available to _tokenspender to transfer. function allowance(address _tokenholder, address _tokenspender) public view whenNotPaused returns (uint256) { require(!isFrozen(_tokenholder) && !isFrozen(_tokenspender)); return allowances[_tokenholder][_tokenspender]; } } // File: contracts/token/Aphrodite.sol /* * Created by: alexo (Big Deeper Advisors, Inc) * For: Input Strategic Partners (ISP) and Intimate.io * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, * TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE * SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ pragma solidity ^0.4.21; contract Aphrodite is AuthorizedList, Authorized, RecoverCurrency, StandardToken { event DonationAccepted(address indexed _from, uint256 _value); /// @dev Constructor that gives msg.sender/creator all of existing tokens. function Aphrodite() Authorized() public { /// We need to initialize totalsupply and creator's balance totalsupply = INITIAL_SUPPLY; balances[msg.sender] = INITIAL_SUPPLY; /// Record that the creator is a holder of this token trackAddresses(msg.sender); } /// @dev If one prefers to not accept Ether, comment out the next iine out or put revert(); inside function () public payable { emit DonationAccepted(msg.sender, msg.value); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenspender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tos","type":"address[]"},{"name":"_values","type":"uint256[]"}],"name":"bulkTransfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"returnAccounts","outputs":[{"name":"holders","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balances","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"INITIAL_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"},{"name":"_authorization","type":"bytes32"}],"name":"toggleAuthorization","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"recoverEther","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"allowances","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenholder","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalsupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"unfreezeAccount","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"numberAccounts","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"frozenAccounts","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"recoverToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_id","type":"uint256"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_symbol","type":"string"}],"name":"setSymbol","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"}],"name":"setName","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenholder","type":"address"},{"name":"_tokenspender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"},{"name":"_authorization","type":"bytes32"}],"name":"isAuthorized","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isFrozen","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"freezeAccount","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"DonationAccepted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_tokenholder","type":"address"},{"indexed":true,"name":"_tokenspender","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_tokenholder","type":"address"},{"indexed":true,"name":"_tokenrecipient","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_tokenholder","type":"address"},{"indexed":false,"name":"_howmany","type":"uint256"}],"name":"BulkTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_account","type":"address"}],"name":"Frozen","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_account","type":"address"}],"name":"Unfrozen","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"EtherRecovered","type":"event"}]
Contract Creation Code
60606040526040805190810160405280600881526020017f696e74696d617465000000000000000000000000000000000000000000000000815250600290805190602001906200005192919062000359565b506040805190810160405280600381526020017f49544d0000000000000000000000000000000000000000000000000000000000815250600390805190602001906200009f92919062000359565b506a52b7d2dcc80cd2e40000006004556000600a60006101000a81548160ff0219169083151502179055503415620000d657600080fd5b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600454600781905550600454600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620001e933620001ef6401000000000262003692176401000000009004565b62000437565b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16151562000356576001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff02191690831515021790555060088054806001018281620002b79190620003e0565b9160005260206000209001600083909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050600160088054905003600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b50565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200039c57805160ff1916838001178555620003cd565b82800160010185558215620003cd579182015b82811115620003cc578251825591602001919060010190620003af565b5b509050620003dc91906200040f565b5090565b8154818355818115116200040a578183600052602060002091820191016200040991906200040f565b5b505050565b6200043491905b808211156200043057600081600090555060010162000416565b5090565b90565b613ab580620004476000396000f300606060405260043610610180576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146101d0578063095ea7b31461025e578063153a1f3e146102b857806318160ddd1461036a5780631ef604851461039357806323b872dd146103fd57806327e235e3146104765780632ff2e9dc146104c3578063313ce567146104ec5780633b06a6fc1461051b5780633f4ba83a1461056157806352d8bfc21461058e57806355b6ed5c146105a35780635c975abb1461060f57806370a082311461063c57806372dd529b14610689578063788649ea146106b257806380059593146107035780638456cb591461072c578063860838a51461075957806395d89b41146107aa5780639be65a60146108385780639cc7f70814610871578063a9059cbb146108a8578063b84c824614610902578063c47f00271461095f578063dd62ed3e146109bc578063de11892b14610a28578063e583983614610a86578063f26c159f14610ad7575b3373ffffffffffffffffffffffffffffffffffffffff167f5d7b332009e5ea66f8cd6b2238038a62b1614c1a9df2ea82cb185ba7db1e047a346040518082815260200191505060405180910390a2005b34156101db57600080fd5b6101e3610b28565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610223578082015181840152602081019050610208565b50505050905090810190601f1680156102505780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561026957600080fd5b61029e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610bc6565b604051808215151515815260200191505060405180910390f35b34156102c357600080fd5b61035060048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050610e4c565b604051808215151515815260200191505060405180910390f35b341561037557600080fd5b61037d6113a1565b6040518082815260200191505060405180910390f35b341561039e57600080fd5b6103a66113c7565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156103e95780820151818401526020810190506103ce565b505050509050019250505060405180910390f35b341561040857600080fd5b61045c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506115a5565b604051808215151515815260200191505060405180910390f35b341561048157600080fd5b6104ad600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611969565b6040518082815260200191505060405180910390f35b34156104ce57600080fd5b6104d6611981565b6040518082815260200191505060405180910390f35b34156104f757600080fd5b6104ff611987565b604051808260ff1660ff16815260200191505060405180910390f35b341561052657600080fd5b61055f600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356000191690602001909190505061198c565b005b341561056c57600080fd5b610574611d77565b604051808215151515815260200191505060405180910390f35b341561059957600080fd5b6105a1611f2c565b005b34156105ae57600080fd5b6105f9600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612134565b6040518082815260200191505060405180910390f35b341561061a57600080fd5b610622612159565b604051808215151515815260200191505060405180910390f35b341561064757600080fd5b610673600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061216c565b6040518082815260200191505060405180910390f35b341561069457600080fd5b61069c6121e6565b6040518082815260200191505060405180910390f35b34156106bd57600080fd5b6106e9600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506121ec565b604051808215151515815260200191505060405180910390f35b341561070e57600080fd5b61071661242f565b6040518082815260200191505060405180910390f35b341561073757600080fd5b61073f612586565b604051808215151515815260200191505060405180910390f35b341561076457600080fd5b610790600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061273c565b604051808215151515815260200191505060405180910390f35b34156107b557600080fd5b6107bd61275c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107fd5780820151818401526020810190506107e2565b50505050905090810190601f16801561082a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561084357600080fd5b61086f600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506127fa565b005b341561087c57600080fd5b6108926004808035906020019091905050612af8565b6040518082815260200191505060405180910390f35b34156108b357600080fd5b6108e8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612cd8565b604051808215151515815260200191505060405180910390f35b341561090d57600080fd5b61095d600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612fba565b005b341561096a57600080fd5b6109ba600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061311e565b005b34156109c757600080fd5b610a12600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613282565b6040518082815260200191505060405180910390f35b3415610a3357600080fd5b610a6c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356000191690602001909190505061334c565b604051808215151515815260200191505060405180910390f35b3415610a9157600080fd5b610abd600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506133bb565b604051808215151515815260200191505060405180910390f35b3415610ae257600080fd5b610b0e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613411565b604051808215151515815260200191505060405180910390f35b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bbe5780601f10610b9357610100808354040283529160200191610bbe565b820191906000526020600020905b815481529060010190602001808311610ba157829003601f168201915b505050505081565b6000600a60009054906101000a900460ff16151515610be457600080fd5b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610c3d57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610ca657508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b1515610cb157600080fd5b610cba836133bb565b151515610cc657600080fd5b6000821480610d5157506000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b1515610d5c57600080fd5b81600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000806000806000600a60009054906101000a900460ff16151515610e7057600080fd5b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610ec957600080fd5b3360405180807f42756c6b205472616e7366657220557365722e00000000000000000000000000815250601301905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff168061100657506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b151561101157600080fd5b8751895114151561102157600080fd5b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205495506000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600094505b88518510156112ac5787858151811015156110c457fe5b90602001906020020151935088858151811015156110de57fe5b906020019060200201519250600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561112657600080fd5b85841115151561113557600080fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415151561117057600080fd5b611183848761365590919063ffffffff16565b95506111d784600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461367190919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061122383613692565b888581518110151561123157fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a384806001019550506110ad565b85600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167f21f0d47b1fb5dbc8be145db4deb26c6217476813ca3bc738a0a3d831325469638a516040518082815260200191505060405180910390a26000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561139157611390336137f9565b5b6001965050505050505092915050565b6000600a60009054906101000a900460ff161515156113bf57600080fd5b600754905090565b6113cf613978565b3360405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff168061150c57506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b151561151757600080fd5b600880548060200260200160405190810160405280929190818152602001828054801561159957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161154f575b50505050509250505090565b6000600a60009054906101000a900460ff161515156115c357600080fd5b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561161c57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561168557508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b151561169057600080fd5b611699846133bb565b1580156116ac57506116aa836133bb565b155b15156116b757600080fd5b61174682600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461365590919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061181882600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461365590919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061186483613692565b6118b682600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461367190919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b60066020528060005260406000206000915090505481565b60045481565b601281565b3360405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff1680611ac957506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b1515611ad457600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515611b0f57600080fd5b60405180807f476f6464657373206f66204c6f7665210000000000000000000000000000000081525060100190506040518091039020600019168360001916148015611bf257506000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff16155b15611c9d5760008060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f417068726f646974652773204c6974746c652048656c7065722e000000000000815250601a01905060405180910390206000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055505b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000846000191660001916815260200190815260200160002060009054906101000a900460ff16156000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000856000191660001916815260200190815260200160002060006101000a81548160ff02191690831515021790555050505050565b6000600a60009054906101000a900460ff161515611d9457600080fd5b3360405180807f417068726f646974652773204c6974746c652048656c7065722e000000000000815250601a01905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff1680611ed157506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b1515611edc57600080fd5b7f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a16000600a60006101000a81548160ff02191690831515021790555060019250505090565b3360405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff168061206957506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b151561207457600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f1935050505015156120cb57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff167f8e274e42262a7f013b700b35c2b4629ccce1702f8fe83f8dfb7eacbb26a4382c3073ffffffffffffffffffffffffffffffffffffffff16316040518082815260200191505060405180910390a25050565b6005602052816000526040600020602052806000526040600020600091509150505481565b600a60009054906101000a900460ff1681565b6000600a60009054906101000a900460ff1615151561218a57600080fd5b612193826133bb565b15151561219f57600080fd5b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60075481565b60003360405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff168061232b57506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b151561233657600080fd5b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612428576000600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508373ffffffffffffffffffffffffffffffffffffffff167f4feb53e305297ab8fb8f3420c95ea04737addc254a7270d8fc4605d2b9c61dba60405160405180910390a2600192505b5050919050565b60003360405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff168061256e57506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b151561257957600080fd5b6008805490509250505090565b6000600a60009054906101000a900460ff161515156125a457600080fd5b3360405180807f417068726f646974652773204c6974746c652048656c7065722e000000000000815250601a01905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff16806126e157506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b15156126ec57600080fd5b7f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a16001600a60006101000a81548160ff02191690831515021790555060019250505090565b600b6020528060005260406000206000915054906101000a900460ff1681565b60038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156127f25780601f106127c7576101008083540402835291602001916127f2565b820191906000526020600020905b8154815290600101906020018083116127d557829003601f168201915b505050505081565b6000803360405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff168061293a57506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b151561294557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415151561298157600080fd5b8493508373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1515612a1e57600080fd5b5af11515612a2b57600080fd5b5050506040518051905092508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515612ad957600080fd5b5af11515612ae657600080fd5b50505060405180519050505050505050565b60003360405180807f417068726f646974652773204c6974746c652048656c7065722e000000000000815250601a01905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff1680612c3757506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b1515612c4257600080fd5b60088054905084101515612c5557600080fd5b60066000600886815481101515612c6857fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205492505050919050565b6000600a60009054906101000a900460ff16151515612cf657600080fd5b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515612d4f57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515612d8b57600080fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151515612dc657600080fd5b612e1882600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461365590919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415612ead57612eac336137f9565b5b612eb683613692565b612f0882600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461367190919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b3360405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff16806130f757506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b151561310257600080fd5b826003908051906020019061311892919061398c565b50505050565b3360405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff168061325b57506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b151561326657600080fd5b826002908051906020019061327c92919061398c565b50505050565b6000600a60009054906101000a900460ff161515156132a057600080fd5b6132a9836133bb565b1580156132bc57506132ba826133bb565b155b15156132c757600080fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000836000191660001916815260200190815260200160002060009054906101000a900460ff16905092915050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60003360405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff168061355057506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b151561355b57600080fd5b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561364e576001600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508373ffffffffffffffffffffffffffffffffffffffff167f8a5c4736a33c7b7f29a2c34ea9ff9608afc5718d56f6fd6dcbd2d3711a1a491360405160405180910390a2600192505b5050919050565b600082821115151561366657600080fd5b818303905092915050565b600080828401905083811015151561368857600080fd5b8091505092915050565b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1615156137f6576001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff021916908315150217905550600880548060010182816137579190613a0c565b9160005260206000209001600083909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050600160088054905003600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b50565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490506008805490508110151561385357600080fd5b6001600880549050038114151561390057600860016008805490500381548110151561387b57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008828154811015156138b657fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60088054809190600190036139159190613a38565b50600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549060ff0219169055600182016000905550505050565b602060405190810160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106139cd57805160ff19168380011785556139fb565b828001600101855582156139fb579182015b828111156139fa5782518255916020019190600101906139df565b5b509050613a089190613a64565b5090565b815481835581811511613a3357818360005260206000209182019101613a329190613a64565b5b505050565b815481835581811511613a5f57818360005260206000209182019101613a5e9190613a64565b5b505050565b613a8691905b80821115613a82576000816000905550600101613a6a565b5090565b905600a165627a7a72305820149c2c383c3b9dddf3cf0b8cff3f407c1386fb950e40b8061526f8944ba98dd40029
Deployed Bytecode
0x606060405260043610610180576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146101d0578063095ea7b31461025e578063153a1f3e146102b857806318160ddd1461036a5780631ef604851461039357806323b872dd146103fd57806327e235e3146104765780632ff2e9dc146104c3578063313ce567146104ec5780633b06a6fc1461051b5780633f4ba83a1461056157806352d8bfc21461058e57806355b6ed5c146105a35780635c975abb1461060f57806370a082311461063c57806372dd529b14610689578063788649ea146106b257806380059593146107035780638456cb591461072c578063860838a51461075957806395d89b41146107aa5780639be65a60146108385780639cc7f70814610871578063a9059cbb146108a8578063b84c824614610902578063c47f00271461095f578063dd62ed3e146109bc578063de11892b14610a28578063e583983614610a86578063f26c159f14610ad7575b3373ffffffffffffffffffffffffffffffffffffffff167f5d7b332009e5ea66f8cd6b2238038a62b1614c1a9df2ea82cb185ba7db1e047a346040518082815260200191505060405180910390a2005b34156101db57600080fd5b6101e3610b28565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610223578082015181840152602081019050610208565b50505050905090810190601f1680156102505780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561026957600080fd5b61029e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610bc6565b604051808215151515815260200191505060405180910390f35b34156102c357600080fd5b61035060048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050610e4c565b604051808215151515815260200191505060405180910390f35b341561037557600080fd5b61037d6113a1565b6040518082815260200191505060405180910390f35b341561039e57600080fd5b6103a66113c7565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156103e95780820151818401526020810190506103ce565b505050509050019250505060405180910390f35b341561040857600080fd5b61045c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506115a5565b604051808215151515815260200191505060405180910390f35b341561048157600080fd5b6104ad600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611969565b6040518082815260200191505060405180910390f35b34156104ce57600080fd5b6104d6611981565b6040518082815260200191505060405180910390f35b34156104f757600080fd5b6104ff611987565b604051808260ff1660ff16815260200191505060405180910390f35b341561052657600080fd5b61055f600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356000191690602001909190505061198c565b005b341561056c57600080fd5b610574611d77565b604051808215151515815260200191505060405180910390f35b341561059957600080fd5b6105a1611f2c565b005b34156105ae57600080fd5b6105f9600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612134565b6040518082815260200191505060405180910390f35b341561061a57600080fd5b610622612159565b604051808215151515815260200191505060405180910390f35b341561064757600080fd5b610673600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061216c565b6040518082815260200191505060405180910390f35b341561069457600080fd5b61069c6121e6565b6040518082815260200191505060405180910390f35b34156106bd57600080fd5b6106e9600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506121ec565b604051808215151515815260200191505060405180910390f35b341561070e57600080fd5b61071661242f565b6040518082815260200191505060405180910390f35b341561073757600080fd5b61073f612586565b604051808215151515815260200191505060405180910390f35b341561076457600080fd5b610790600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061273c565b604051808215151515815260200191505060405180910390f35b34156107b557600080fd5b6107bd61275c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107fd5780820151818401526020810190506107e2565b50505050905090810190601f16801561082a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561084357600080fd5b61086f600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506127fa565b005b341561087c57600080fd5b6108926004808035906020019091905050612af8565b6040518082815260200191505060405180910390f35b34156108b357600080fd5b6108e8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612cd8565b604051808215151515815260200191505060405180910390f35b341561090d57600080fd5b61095d600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612fba565b005b341561096a57600080fd5b6109ba600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061311e565b005b34156109c757600080fd5b610a12600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613282565b6040518082815260200191505060405180910390f35b3415610a3357600080fd5b610a6c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356000191690602001909190505061334c565b604051808215151515815260200191505060405180910390f35b3415610a9157600080fd5b610abd600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506133bb565b604051808215151515815260200191505060405180910390f35b3415610ae257600080fd5b610b0e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613411565b604051808215151515815260200191505060405180910390f35b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bbe5780601f10610b9357610100808354040283529160200191610bbe565b820191906000526020600020905b815481529060010190602001808311610ba157829003601f168201915b505050505081565b6000600a60009054906101000a900460ff16151515610be457600080fd5b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610c3d57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610ca657508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b1515610cb157600080fd5b610cba836133bb565b151515610cc657600080fd5b6000821480610d5157506000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b1515610d5c57600080fd5b81600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000806000806000600a60009054906101000a900460ff16151515610e7057600080fd5b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610ec957600080fd5b3360405180807f42756c6b205472616e7366657220557365722e00000000000000000000000000815250601301905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff168061100657506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b151561101157600080fd5b8751895114151561102157600080fd5b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205495506000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600094505b88518510156112ac5787858151811015156110c457fe5b90602001906020020151935088858151811015156110de57fe5b906020019060200201519250600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561112657600080fd5b85841115151561113557600080fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415151561117057600080fd5b611183848761365590919063ffffffff16565b95506111d784600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461367190919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061122383613692565b888581518110151561123157fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a384806001019550506110ad565b85600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167f21f0d47b1fb5dbc8be145db4deb26c6217476813ca3bc738a0a3d831325469638a516040518082815260200191505060405180910390a26000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561139157611390336137f9565b5b6001965050505050505092915050565b6000600a60009054906101000a900460ff161515156113bf57600080fd5b600754905090565b6113cf613978565b3360405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff168061150c57506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b151561151757600080fd5b600880548060200260200160405190810160405280929190818152602001828054801561159957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161154f575b50505050509250505090565b6000600a60009054906101000a900460ff161515156115c357600080fd5b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561161c57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561168557508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b151561169057600080fd5b611699846133bb565b1580156116ac57506116aa836133bb565b155b15156116b757600080fd5b61174682600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461365590919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061181882600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461365590919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061186483613692565b6118b682600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461367190919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b60066020528060005260406000206000915090505481565b60045481565b601281565b3360405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff1680611ac957506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b1515611ad457600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515611b0f57600080fd5b60405180807f476f6464657373206f66204c6f7665210000000000000000000000000000000081525060100190506040518091039020600019168360001916148015611bf257506000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff16155b15611c9d5760008060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f417068726f646974652773204c6974746c652048656c7065722e000000000000815250601a01905060405180910390206000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055505b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000846000191660001916815260200190815260200160002060009054906101000a900460ff16156000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000856000191660001916815260200190815260200160002060006101000a81548160ff02191690831515021790555050505050565b6000600a60009054906101000a900460ff161515611d9457600080fd5b3360405180807f417068726f646974652773204c6974746c652048656c7065722e000000000000815250601a01905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff1680611ed157506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b1515611edc57600080fd5b7f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a16000600a60006101000a81548160ff02191690831515021790555060019250505090565b3360405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff168061206957506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b151561207457600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f1935050505015156120cb57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff167f8e274e42262a7f013b700b35c2b4629ccce1702f8fe83f8dfb7eacbb26a4382c3073ffffffffffffffffffffffffffffffffffffffff16316040518082815260200191505060405180910390a25050565b6005602052816000526040600020602052806000526040600020600091509150505481565b600a60009054906101000a900460ff1681565b6000600a60009054906101000a900460ff1615151561218a57600080fd5b612193826133bb565b15151561219f57600080fd5b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60075481565b60003360405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff168061232b57506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b151561233657600080fd5b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612428576000600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508373ffffffffffffffffffffffffffffffffffffffff167f4feb53e305297ab8fb8f3420c95ea04737addc254a7270d8fc4605d2b9c61dba60405160405180910390a2600192505b5050919050565b60003360405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff168061256e57506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b151561257957600080fd5b6008805490509250505090565b6000600a60009054906101000a900460ff161515156125a457600080fd5b3360405180807f417068726f646974652773204c6974746c652048656c7065722e000000000000815250601a01905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff16806126e157506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b15156126ec57600080fd5b7f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a16001600a60006101000a81548160ff02191690831515021790555060019250505090565b600b6020528060005260406000206000915054906101000a900460ff1681565b60038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156127f25780601f106127c7576101008083540402835291602001916127f2565b820191906000526020600020905b8154815290600101906020018083116127d557829003601f168201915b505050505081565b6000803360405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff168061293a57506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b151561294557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415151561298157600080fd5b8493508373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1515612a1e57600080fd5b5af11515612a2b57600080fd5b5050506040518051905092508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515612ad957600080fd5b5af11515612ae657600080fd5b50505060405180519050505050505050565b60003360405180807f417068726f646974652773204c6974746c652048656c7065722e000000000000815250601a01905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff1680612c3757506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b1515612c4257600080fd5b60088054905084101515612c5557600080fd5b60066000600886815481101515612c6857fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205492505050919050565b6000600a60009054906101000a900460ff16151515612cf657600080fd5b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515612d4f57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515612d8b57600080fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151515612dc657600080fd5b612e1882600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461365590919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415612ead57612eac336137f9565b5b612eb683613692565b612f0882600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461367190919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b3360405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff16806130f757506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b151561310257600080fd5b826003908051906020019061311892919061398c565b50505050565b3360405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff168061325b57506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b151561326657600080fd5b826002908051906020019061327c92919061398c565b50505050565b6000600a60009054906101000a900460ff161515156132a057600080fd5b6132a9836133bb565b1580156132bc57506132ba826133bb565b155b15156132c757600080fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000836000191660001916815260200190815260200160002060009054906101000a900460ff16905092915050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60003360405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff168061355057506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060405180807f476f6464657373206f66204c6f76652100000000000000000000000000000000815250601001905060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b151561355b57600080fd5b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561364e576001600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508373ffffffffffffffffffffffffffffffffffffffff167f8a5c4736a33c7b7f29a2c34ea9ff9608afc5718d56f6fd6dcbd2d3711a1a491360405160405180910390a2600192505b5050919050565b600082821115151561366657600080fd5b818303905092915050565b600080828401905083811015151561368857600080fd5b8091505092915050565b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1615156137f6576001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff021916908315150217905550600880548060010182816137579190613a0c565b9160005260206000209001600083909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050600160088054905003600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b50565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490506008805490508110151561385357600080fd5b6001600880549050038114151561390057600860016008805490500381548110151561387b57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008828154811015156138b657fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60088054809190600190036139159190613a38565b50600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549060ff0219169055600182016000905550505050565b602060405190810160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106139cd57805160ff19168380011785556139fb565b828001600101855582156139fb579182015b828111156139fa5782518255916020019190600101906139df565b5b509050613a089190613a64565b5090565b815481835581811511613a3357818360005260206000209182019101613a329190613a64565b5b505050565b815481835581811511613a5f57818360005260206000209182019101613a5e9190613a64565b5b505050565b613a8691905b80821115613a82576000816000905550600101613a6a565b5090565b905600a165627a7a72305820149c2c383c3b9dddf3cf0b8cff3f407c1386fb950e40b8061526f8944ba98dd40029
Swarm Source
bzzr://149c2c383c3b9dddf3cf0b8cff3f407c1386fb950e40b8061526f8944ba98dd4
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.