ETH Price: $3,556.57 (-0.15%)
Gas: 3 Gwei

Token

FoodCoin (FOOD)
 

Overview

Max Total Supply

400,950,736.43445099 FOOD

Holders

1,791 ( -0.056%)

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

FoodCoin Ecosystem is a blockchain ecosystem, architecturally designed to create a global marketplace of food and agricultural products based on our experience with the active 1000 EcoFarms platform.

ICO Information

ICO Start Date : Dec 12, 2017  
ICO End Date : Dec 26, 2017
ICO Price  : $0.0774

# Exchange Pair Price  24H Volume % Volume

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x9f9e83F8...D4f33f7De
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
FoodcoinEcosystem

Compiler Version
v0.4.19+commit.c4cbbb05

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2017-12-27
*/

/*
	Utility functions for safe math operations.  See link below for more information:
	https://ethereum.stackexchange.com/questions/15258/safemath-safe-add-function-assertions-against-overflows
*/
pragma solidity ^0.4.19;

contract SafeMath {

    function safeAdd(uint256 x, uint256 y) pure internal returns (uint256) {
        uint256 z = x + y;
        assert((z >= x) && (z >= y));
        return z;
    }

    function safeSubtract(uint256 x, uint256 y) pure internal returns (uint256) {
        assert(x >= y);
        uint256 z = x - y;
        return z;
    }

    function safeMult(uint256 x, uint256 y) pure internal returns (uint256) {
        uint256 z = x * y;
        assert((x == 0) || (z / x == y));
        return z;
    }

    function safeDiv(uint256 a, uint256 b) pure internal returns (uint256) {
        assert(b > 0);
        uint c = a / b;
        assert(a == b * c + a % b);
        return c;
    }
}

contract Owner {
	
	// Token Name
	string public name = "FoodCoin";
	// Token Symbol
	string public symbol = "FOOD";
	// Decimals
	uint256 public decimals = 8;
	// Version 
	string public version = "v1";
	
	// Emission Address
	address public emissionAddress = address(0);
	// Withdraw address
	address public withdrawAddress = address(0);
	
	// Owners Addresses
	mapping ( address => bool ) public ownerAddressMap;
	// Owner Address/Number
	mapping ( address => uint256 ) public ownerAddressNumberMap;
	// Owners List
	mapping ( uint256 => address ) public ownerListMap;
	// Amount of owners
	uint256 public ownerCountInt = 0;

	// Modifier - Owner
	modifier isOwner {
        require( ownerAddressMap[msg.sender]==true );
        _;
    }
	
	// Owner Creation/Activation
	function ownerOn( address _onOwnerAddress ) external isOwner returns (bool retrnVal) {
		// Check if it's a non-zero address
		require( _onOwnerAddress != address(0) );
		// If the owner is already exist
		if ( ownerAddressNumberMap[ _onOwnerAddress ]>0 )
		{
			// If the owner is disablead, activate him again
			if ( !ownerAddressMap[ _onOwnerAddress ] )
			{
				ownerAddressMap[ _onOwnerAddress ] = true;
				retrnVal = true;
			}
			else
			{
				retrnVal = false;
			}
		}
		// If the owner is not exist
		else
		{
			ownerAddressMap[ _onOwnerAddress ] = true;
			ownerAddressNumberMap[ _onOwnerAddress ] = ownerCountInt;
			ownerListMap[ ownerCountInt ] = _onOwnerAddress;
			ownerCountInt++;
			retrnVal = true;
		}
	}
	
	// Owner disabled
	function ownerOff( address _offOwnerAddress ) external isOwner returns (bool retrnVal) {
		// If owner exist and he is not 0 and active
		// 0 owner can`t be off
		if ( ownerAddressNumberMap[ _offOwnerAddress ]>0 && ownerAddressMap[ _offOwnerAddress ] )
		{
			ownerAddressMap[ _offOwnerAddress ] = false;
			retrnVal = true;
		}
		else
		{
			retrnVal = false;
		}
	}
	
	// Token name changing function
	function contractNameUpdate( string _newName, bool updateConfirmation ) external isOwner returns (bool retrnVal) {
		
		if ( updateConfirmation )
		{
			name = _newName;
			retrnVal = true;
		}
		else
		{
			retrnVal = false;
		}
	}
	
	// Token symbol changing function
	function contractSymbolUpdate( string _newSymbol, bool updateConfirmation ) external isOwner returns (bool retrnVal) {

		if ( updateConfirmation )
		{
			symbol = _newSymbol;
			retrnVal = true;
		}
		else
		{
			retrnVal = false;
		}
	}
	
	// Token decimals changing function
	function contractDecimalsUpdate( uint256 _newDecimals, bool updateConfirmation ) external isOwner returns (bool retrnVal) {
		
		if ( updateConfirmation && _newDecimals != decimals )
		{
			decimals = _newDecimals;
			retrnVal = true;
		}
		else
		{
			retrnVal = false;
		}
	}
	
	// New token emission address setting up 
	function emissionAddressUpdate( address _newEmissionAddress ) external isOwner {
		emissionAddress = _newEmissionAddress;
	}
	
	// New token withdrawing address setting up
	function withdrawAddressUpdate( address _newWithdrawAddress ) external isOwner {
		withdrawAddress = _newWithdrawAddress;
	}

	// Constructor adds owner to undeletable list
	function Owner() public {
		// Owner creation
		ownerAddressMap[ msg.sender ] = true;
		ownerAddressNumberMap[ msg.sender ] = ownerCountInt;
		ownerListMap[ ownerCountInt ] = msg.sender;
		ownerCountInt++;
	}
}

contract SpecialManager is Owner {

	// Special Managers Addresses
	mapping ( address => bool ) public specialManagerAddressMap;
	// Special Manager Address/Number Mapping
	mapping ( address => uint256 ) public specialManagerAddressNumberMap;
	// Special Managers List
	mapping ( uint256 => address ) public specialManagerListMap;
	// Special Manager Amount
	uint256 public specialManagerCountInt = 0;
	
	// Special Manager or Owner modifier
	modifier isSpecialManagerOrOwner {
        require( specialManagerAddressMap[msg.sender]==true || ownerAddressMap[msg.sender]==true );
        _;
    }
	
	// Special Manager creation/actination
	function specialManagerOn( address _onSpecialManagerAddress ) external isOwner returns (bool retrnVal) {
		// Check if it's a non-zero address
		require( _onSpecialManagerAddress != address(0) );
		// If this special manager already exists
		if ( specialManagerAddressNumberMap[ _onSpecialManagerAddress ]>0 )
		{
			// If this special manager disabled, activate him again
			if ( !specialManagerAddressMap[ _onSpecialManagerAddress ] )
			{
				specialManagerAddressMap[ _onSpecialManagerAddress ] = true;
				retrnVal = true;
			}
			else
			{
				retrnVal = false;
			}
		}
		// If this special manager doesn`t exist
		else
		{
			specialManagerAddressMap[ _onSpecialManagerAddress ] = true;
			specialManagerAddressNumberMap[ _onSpecialManagerAddress ] = specialManagerCountInt;
			specialManagerListMap[ specialManagerCountInt ] = _onSpecialManagerAddress;
			specialManagerCountInt++;
			retrnVal = true;
		}
	}
	
	// Special manager disactivation
	function specialManagerOff( address _offSpecialManagerAddress ) external isOwner returns (bool retrnVal) {
		// If this special manager exists and he is non-zero and also active 
		// 0-number manager can`t be disactivated
		if ( specialManagerAddressNumberMap[ _offSpecialManagerAddress ]>0 && specialManagerAddressMap[ _offSpecialManagerAddress ] )
		{
			specialManagerAddressMap[ _offSpecialManagerAddress ] = false;
			retrnVal = true;
		}
		else
		{
			retrnVal = false;
		}
	}


	// Constructor adds owner to superowner list
	function SpecialManager() public {
		// owner creation
		specialManagerAddressMap[ msg.sender ] = true;
		specialManagerAddressNumberMap[ msg.sender ] = specialManagerCountInt;
		specialManagerListMap[ specialManagerCountInt ] = msg.sender;
		specialManagerCountInt++;
	}
}


contract Manager is SpecialManager {
	
	// Managers addresses
	mapping ( address => bool ) public managerAddressMap;
	// Manager Address/Number Mapping
	mapping ( address => uint256 ) public managerAddressNumberMap;
	// Managers` List
	mapping ( uint256 => address ) public managerListMap;
	// Amount of managers
	uint256 public managerCountInt = 0;
	
	// Modifier - Manager Or Owner
	modifier isManagerOrOwner {
        require( managerAddressMap[msg.sender]==true || ownerAddressMap[msg.sender]==true );
        _;
    }
	
	// Owner Creation/Activation
	function managerOn( address _onManagerAddress ) external isOwner returns (bool retrnVal) {
		// Check if it's a non-zero address
		require( _onManagerAddress != address(0) );
		// If this special manager exists
		if ( managerAddressNumberMap[ _onManagerAddress ]>0 )
		{
			// If this special manager disabled, activate him again
			if ( !managerAddressMap[ _onManagerAddress ] )
			{
				managerAddressMap[ _onManagerAddress ] = true;
				retrnVal = true;
			}
			else
			{
				retrnVal = false;
			}
		}
		// If this special manager doesn`t exist
		else
		{
			managerAddressMap[ _onManagerAddress ] = true;
			managerAddressNumberMap[ _onManagerAddress ] = managerCountInt;
			managerListMap[ managerCountInt ] = _onManagerAddress;
			managerCountInt++;
			retrnVal = true;
		}
	}
	
	// Manager disactivation
	function managerOff( address _offManagerAddress ) external isOwner returns (bool retrnVal) {
		// if it's a non-zero manager and already exists and active
		// 0-number manager can`t be disactivated
		if ( managerAddressNumberMap[ _offManagerAddress ]>0 && managerAddressMap[ _offManagerAddress ] )
		{
			managerAddressMap[ _offManagerAddress ] = false;
			retrnVal = true;
		}
		else
		{
			retrnVal = false;
		}
	}


	// Constructor adds owner to manager list 
	function Manager() public {
		// manager creation
		managerAddressMap[ msg.sender ] = true;
		managerAddressNumberMap[ msg.sender ] = managerCountInt;
		managerListMap[ managerCountInt ] = msg.sender;
		managerCountInt++;
	}
}


contract Management is Manager {
	
	// Description
	string public description = "";
	
	// Current tansaction status 
	// TRUE - tansaction available
	// FALSE - tansaction not available
	bool public transactionsOn = false;
	// Special permissions to allow/prohibit transactions to move tokens for specific accounts
	// 0 - depends on transactionsOn
	// 1 - always "forbidden"
	// 2 - always "allowed"
	mapping ( address => uint256 ) public transactionsOnForHolder;
	
	
	// Displaying tokens in the balanceOf function for all tokens
	// TRUE - Displaying available
	// FALSE - Displaying hidden, shows 0. Checking the token balance available in function balanceOfReal
	bool public balanceOfOn = true;
	// Displaying the token balance in function balanceOfReal for definit holder
	// 0 - depends on transactionsOn
	// 1 - always "forbidden"
	// 2 - always "allowed"
	mapping ( address => uint256 ) public balanceOfOnForHolder;
	
	
	// Current emission status
	// TRUE - emission is available, managers may add tokens to contract
	// FALSE - emission isn`t available, managers may not add tokens to contract
	bool public emissionOn = true;

	// emission cap
	uint256 public tokenCreationCap = 0;
	
	// Addresses list for verification of acoounts owners
	// Addresses
	mapping ( address => bool ) public verificationAddressMap;
	// Verification Address/Number Mapping
	mapping ( address => uint256 ) public verificationAddressNumberMap;
	// Verification List Mapping
	mapping ( uint256 => address ) public verificationListMap;
	// Amount of verifications
	uint256 public verificationCountInt = 1;
	
	// Verification holding
	// Verification Holders Timestamp
	mapping (address => uint256) public verificationHoldersTimestampMap;
	// Verification Holders Value
	mapping (address => uint256) public verificationHoldersValueMap;
	// Verification Holders Verifier Address
	mapping (address => address) public verificationHoldersVerifierAddressMap;
	// Verification Address Holders List Count
	mapping (address => uint256) public verificationAddressHoldersListCountMap;
	// Verification Address Holders List Number
	mapping (address => mapping ( uint256 => address )) public verificationAddressHoldersListNumberMap;
	
	// Modifier - Transactions On
	modifier isTransactionsOn( address addressFrom ) {
		
		require( transactionsOnNowVal( addressFrom ) );
		_;
    }
	
	// Modifier - Emission On
	modifier isEmissionOn{
        require( emissionOn );
        _;
    }
	
	// Function transactions On now validate for definit address 
	function transactionsOnNowVal( address addressFrom ) public view returns( bool )
	{
		return ( transactionsOnForHolder[ addressFrom ]==0 && transactionsOn ) || transactionsOnForHolder[ addressFrom ]==2 ;
	}
	
	// transaction allow/forbidden for definit token holder
	function transactionsOnForHolderUpdate( address _to, uint256 _newValue ) external isOwner
	{
		if ( transactionsOnForHolder[ _to ] != _newValue )
		{
			transactionsOnForHolder[ _to ] = _newValue;
		}
	}

	// Function of changing allow/forbidden transfer status
	function transactionsStatusUpdate( bool _on ) external isOwner
	{
		transactionsOn = _on;
	}
	
	// Function of changing emission status
	function emissionStatusUpdate( bool _on ) external isOwner
	{
		emissionOn = _on;
	}
	
	// Emission cap setting up
	function tokenCreationCapUpdate( uint256 _newVal ) external isOwner
	{
		tokenCreationCap = _newVal;
	}
	
	// balanceOfOnForHolder; balanceOfOn
	
	// Function on/off token displaying in function balanceOf
	function balanceOfOnUpdate( bool _on ) external isOwner
	{
		balanceOfOn = _on;
	}
	
	// Function on/off token displaying in function balanceOf for definit token holder
	function balanceOfOnForHolderUpdate( address _to, uint256 _newValue ) external isOwner
	{
		if ( balanceOfOnForHolder[ _to ] != _newValue )
		{
			balanceOfOnForHolder[ _to ] = _newValue;
		}
	}
	
	
	// Function adding of new verification address
	function verificationAddressOn( address _onVerificationAddress ) external isOwner returns (bool retrnVal) {
		// Check if it's a non-zero address
		require( _onVerificationAddress != address(0) );
		// If this address is already exists
		if ( verificationAddressNumberMap[ _onVerificationAddress ]>0 )
		{
			// If address off, activate it again
			if ( !verificationAddressMap[ _onVerificationAddress ] )
			{
				verificationAddressMap[ _onVerificationAddress ] = true;
				retrnVal = true;
			}
			else
			{
				retrnVal = false;
			}
		}
		// If this address doesn`t exist
		else
		{
			verificationAddressMap[ _onVerificationAddress ] = true;
			verificationAddressNumberMap[ _onVerificationAddress ] = verificationCountInt;
			verificationListMap[ verificationCountInt ] = _onVerificationAddress;
			verificationCountInt++;
			retrnVal = true;
		}
	}
	
	// Function of disactivation of verification address
	function verificationOff( address _offVerificationAddress ) external isOwner returns (bool retrnVal) {
		// If this verification address exists and disabled
		if ( verificationAddressNumberMap[ _offVerificationAddress ]>0 && verificationAddressMap[ _offVerificationAddress ] )
		{
			verificationAddressMap[ _offVerificationAddress ] = false;
			retrnVal = true;
		}
		else
		{
			retrnVal = false;
		}
	}
	
	// Event "Description updated"
	event DescriptionPublished( string _description, address _initiator);
	
	// Description update
	function descriptionUpdate( string _newVal ) external isOwner
	{
		description = _newVal;
		DescriptionPublished( _newVal, msg.sender );
	}
}

// Token contract FoodCoin Ecosystem
contract FoodcoinEcosystem is SafeMath, Management {
	
	// Token total supply
	uint256 public totalSupply = 0;
	
	// Balance
	mapping ( address => uint256 ) balances;
	// Balances List Address
	mapping ( uint256 => address ) public balancesListAddressMap;
	// Balances List/Number Mapping
	mapping ( address => uint256 ) public balancesListNumberMap;
	// Balances Address Description
	mapping ( address => string ) public balancesAddressDescription;
	// Total amount of all balances
	uint256 balancesCountInt = 1;
	
	// Forwarding of address managing for definit amount of tokens
	mapping ( address => mapping ( address => uint256 ) ) allowed;
	
	
	// Standard ERC-20 events
	// Event - token transfer
	event Transfer( address indexed from, address indexed to, uint value );
	// Event - Forwarding of address managing
    event Approval( address indexed owner, address indexed spender, uint value );
	
	// Token transfer
	event FoodTransferEvent( address from, address to, uint256 value, address initiator, uint256 newBalanceFrom, uint256 newBalanceTo );
	// Event - Emission
	event FoodTokenEmissionEvent( address initiator, address to, uint256 value, bool result, uint256 newBalanceTo );
	// Event - Withdraw
	event FoodWithdrawEvent( address initiator, address to, bool withdrawOk, uint256 withdraw, uint256 withdrawReal, uint256 newBalancesValue );
	
	
	// Balance View
	function balanceOf( address _owner ) external view returns ( uint256 )
	{
		// If allows to display balance for all or definit holder
		if ( ( balanceOfOnForHolder[ _owner ]==0 && balanceOfOn ) || balanceOfOnForHolder[ _owner ]==2 )
		{
			return balances[ _owner ];
		}
		else
		{
			return 0;
		}
	}
	// Real Balance View
	function balanceOfReal( address _owner ) external view returns ( uint256 )
	{
		return balances[ _owner ];
	}
	// Check if a given user has been delegated rights to perform transfers on behalf of the account owner
	function allowance( address _owner, address _initiator ) external view returns ( uint256 remaining )
	{
		return allowed[ _owner ][ _initiator ];
	}
	// Total balances quantity
	function balancesQuantity() external view returns ( uint256 )
	{
		return balancesCountInt - 1;
	}
	
	// Function of token transaction. For the first transaction will be created the detailed information
	function _addClientAddress( address _balancesAddress, uint256 _amount ) internal
	{
		// check if this address is not on the list yet
		if ( balancesListNumberMap[ _balancesAddress ] == 0 )
		{
			// add it to the list
			balancesListAddressMap[ balancesCountInt ] = _balancesAddress;
			balancesListNumberMap[ _balancesAddress ] = balancesCountInt;
			// increment account counter
			balancesCountInt++;
		}
		// add tokens to the account 
		balances[ _balancesAddress ] = safeAdd( balances[ _balancesAddress ], _amount );
	}
	// Internal function that performs the actual transfer (cannot be called externally)
	function _transfer( address _from, address _to, uint256 _value ) internal isTransactionsOn( _from ) returns ( bool success )
	{
		// If the amount to transfer is greater than 0, and sender has funds available
		if ( _value > 0 && balances[ _from ] >= _value )
		{
			// Subtract from sender account
			balances[ _from ] -= _value;
			// Add to receiver's account
			_addClientAddress( _to, _value );
			// Perform the transfer
			Transfer( _from, _to, _value );
			FoodTransferEvent( _from, _to, _value, msg.sender, balances[ _from ], balances[ _to ] );
			// Successfully completed transfer
			return true;
		}
		// Return false if there are problems
		else
		{
			return false;
		}
	}
	// Function token transfer
	function transfer(address _to, uint256 _value) external returns ( bool success )
	{
		// If it is transfer to verification address
		if ( verificationAddressNumberMap[ _to ]>0 )
		{
			_verification(msg.sender, _to, _value);
		}
		// Regular transfer
		else
		{
			// Call function transfer. 
			return _transfer( msg.sender, _to, _value );
		}
	}
	// Function of transferring tokens from a delegated account
	function transferFrom(address _from, address _to, uint256 _value) external isTransactionsOn( _from ) returns ( bool success )
	{
		// Regular transfer. Not to verification address
		require( verificationAddressNumberMap[ _to ]==0 );
		// Check if the transfer initiator has permissions to move funds from the sender's account
		if ( allowed[_from][msg.sender] >= _value )
		{
			// If yes - perform transfer 
			if ( _transfer( _from, _to, _value ) )
			{
				// Decrease the total amount that initiator has permissions to access
				allowed[_from][msg.sender] = safeSubtract(allowed[_from][msg.sender], _value);
				return true;
			}
			else
			{
				return false;
			}
		}
		else
		{
			return false;
		}
	}
	// Function of delegating account management for a certain amount
	function approve( address _initiator, uint256 _value ) external isTransactionsOn( msg.sender ) returns ( bool success )
	{
		// Grant the rights for a certain amount of tokens only
		allowed[ msg.sender ][ _initiator ] = _value;
		// Initiate the Approval event
		Approval( msg.sender, _initiator, _value );
		return true;
	}
	
	// The emission function (the manager or contract owner creates tokens and sends them to a specific account)
	function _emission (address _reciever, uint256 _amount) internal isManagerOrOwner isEmissionOn returns ( bool returnVal )
	{
		// if non-zero address
		if ( _reciever != address(0) )
		{
			// Calculate number of tokens after generation
			uint256 checkedSupply = safeAdd( totalSupply, _amount );
			// Emission amount
			uint256 amountTmp = _amount;
			// If emission cap settled additional emission is impossible
			if ( tokenCreationCap > 0 && tokenCreationCap < checkedSupply )
			{
				amountTmp = 0;
			}
			// if try to add more than 0 tokens
			if ( amountTmp > 0 )
			{
				// If no error, add generated tokens to a given address
				_addClientAddress( _reciever, amountTmp );
				// increase total supply of tokens
				totalSupply = checkedSupply;
				// event "token transfer"
				Transfer( emissionAddress, _reciever, amountTmp );
				// event "emission successfull"
				FoodTokenEmissionEvent( msg.sender, _reciever, _amount, true, balances[ _reciever ] );
			}
			else
			{
				returnVal = false;
				// event "emission failed"
				FoodTokenEmissionEvent( msg.sender, _reciever, _amount, false, balances[ _reciever ] );
			}
		}
	}
	// emission to definit 1 address
	function tokenEmission(address _reciever, uint256 _amount) external isManagerOrOwner isEmissionOn returns ( bool returnVal )
	{
		// Check if it's a non-zero address
		require( _reciever != address(0) );
		// emission in process
		returnVal = _emission( _reciever, _amount );
	}
	// adding 5 addresses at once
	function tokenEmission5( address _reciever_0, uint256 _amount_0, address _reciever_1, uint256 _amount_1, address _reciever_2, uint256 _amount_2, address _reciever_3, uint256 _amount_3, address _reciever_4, uint256 _amount_4 ) external isManagerOrOwner isEmissionOn
	{
		_emission( _reciever_0, _amount_0 );
		_emission( _reciever_1, _amount_1 );
		_emission( _reciever_2, _amount_2 );
		_emission( _reciever_3, _amount_3 );
		_emission( _reciever_4, _amount_4 );
	}
	
	// Function Tokens withdraw
	function withdraw( address _to, uint256 _amount ) external isSpecialManagerOrOwner returns ( bool returnVal, uint256 withdrawValue, uint256 newBalancesValue )
	{
		// check if this is a valid account
		if ( balances[ _to ] > 0 )
		{
			// Withdraw amount
			uint256 amountTmp = _amount;
			// It is impossible to withdraw more than available on balance
			if ( balances[ _to ] < _amount )
			{
				amountTmp = balances[ _to ];
			}
			// Withdraw in process
			balances[ _to ] = safeSubtract( balances[ _to ], amountTmp );
			// Changing of current tokens amount
			totalSupply = safeSubtract( totalSupply, amountTmp );
			// Return reply
			returnVal = true;
			withdrawValue = amountTmp;
			newBalancesValue = balances[ _to ];
			FoodWithdrawEvent( msg.sender, _to, true, _amount, amountTmp, balances[ _to ] );
			// Event "Token transfer"
			Transfer( _to, withdrawAddress, amountTmp );
		}
		else
		{
			returnVal = false;
			withdrawValue = 0;
			newBalancesValue = 0;
			FoodWithdrawEvent( msg.sender, _to, false, _amount, 0, balances[ _to ] );
		}
	}
	
	// Balance description update
	function balancesAddressDescriptionUpdate( string _newDescription ) external returns ( bool returnVal )
	{
		// If this address or contrat`s owher exists
		if ( balancesListNumberMap[ msg.sender ] > 0 || ownerAddressMap[msg.sender]==true )
		{
			balancesAddressDescription[ msg.sender ] = _newDescription;
			returnVal = true;
		}
		else
		{
			returnVal = false;
		}
	}
	
	// Recording of verification details
	function _verification( address _from, address _verificationAddress, uint256 _value) internal
	{
		// If verification address is active
		require( verificationAddressMap[ _verificationAddress ] );
		
		// If it is updating of already verificated address
		if ( verificationHoldersVerifierAddressMap[ _from ] == _verificationAddress )
		{
			// Verification Address Holders List Count
			uint256 tmpNumberVerification = verificationAddressHoldersListCountMap[ _verificationAddress ];
			verificationAddressHoldersListCountMap[ _verificationAddress ]++;
			// Verification Address Holders List Number
			verificationAddressHoldersListNumberMap[ _verificationAddress ][ tmpNumberVerification ] = _from;
		}
		
		// Verification Holders Timestamp 
		verificationHoldersTimestampMap[ _from ] = now;
		// Verification Value
		verificationHoldersValueMap[ _from ] = _value;
		// Verification Holders Verifier Address
		verificationHoldersVerifierAddressMap[ _from ] = _verificationAddress;
	}
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"addressFrom","type":"address"}],"name":"transactionsOnNowVal","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_initiator","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_onVerificationAddress","type":"address"}],"name":"verificationAddressOn","outputs":[{"name":"retrnVal","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"withdrawAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"verificationHoldersVerifierAddressMap","outputs":[{"name":"","type":"address"}],"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":"_offManagerAddress","type":"address"}],"name":"managerOff","outputs":[{"name":"retrnVal","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOfReal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balancesQuantity","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_on","type":"bool"}],"name":"balanceOfOnUpdate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_onSpecialManagerAddress","type":"address"}],"name":"specialManagerOn","outputs":[{"name":"retrnVal","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ownerCountInt","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"specialManagerAddressMap","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"transactionsOnForHolder","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"verificationAddressHoldersListCountMap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"verificationAddressHoldersListNumberMap","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newEmissionAddress","type":"address"}],"name":"emissionAddressUpdate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_onOwnerAddress","type":"address"}],"name":"ownerOn","outputs":[{"name":"retrnVal","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"transactionsOn","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"version","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"verificationCountInt","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"ownerAddressMap","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newDecimals","type":"uint256"},{"name":"updateConfirmation","type":"bool"}],"name":"contractDecimalsUpdate","outputs":[{"name":"retrnVal","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balanceOfOnForHolder","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"managerAddressMap","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newVal","type":"string"}],"name":"descriptionUpdate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_newValue","type":"uint256"}],"name":"balanceOfOnForHolderUpdate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_offSpecialManagerAddress","type":"address"}],"name":"specialManagerOff","outputs":[{"name":"retrnVal","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newName","type":"string"},{"name":"updateConfirmation","type":"bool"}],"name":"contractNameUpdate","outputs":[{"name":"retrnVal","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"verificationHoldersTimestampMap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenCreationCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"description","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"specialManagerAddressNumberMap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"emissionOn","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"specialManagerCountInt","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"managerListMap","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_offVerificationAddress","type":"address"}],"name":"verificationOff","outputs":[{"name":"retrnVal","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"verificationAddressMap","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":"_onManagerAddress","type":"address"}],"name":"managerOn","outputs":[{"name":"retrnVal","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_reciever","type":"address"},{"name":"_amount","type":"uint256"}],"name":"tokenEmission","outputs":[{"name":"returnVal","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"verificationAddressNumberMap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"verificationListMap","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_on","type":"bool"}],"name":"emissionStatusUpdate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balancesListNumberMap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newWithdrawAddress","type":"address"}],"name":"withdrawAddressUpdate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"emissionAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_on","type":"bool"}],"name":"transactionsStatusUpdate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"specialManagerListMap","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newDescription","type":"string"}],"name":"balancesAddressDescriptionUpdate","outputs":[{"name":"returnVal","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"ownerListMap","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_initiator","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balanceOfOn","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"managerAddressNumberMap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balancesAddressDescription","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"verificationHoldersValueMap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"managerCountInt","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"balancesListAddressMap","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newVal","type":"uint256"}],"name":"tokenCreationCapUpdate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"ownerAddressNumberMap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[{"name":"returnVal","type":"bool"},{"name":"withdrawValue","type":"uint256"},{"name":"newBalancesValue","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_reciever_0","type":"address"},{"name":"_amount_0","type":"uint256"},{"name":"_reciever_1","type":"address"},{"name":"_amount_1","type":"uint256"},{"name":"_reciever_2","type":"address"},{"name":"_amount_2","type":"uint256"},{"name":"_reciever_3","type":"address"},{"name":"_amount_3","type":"uint256"},{"name":"_reciever_4","type":"address"},{"name":"_amount_4","type":"uint256"}],"name":"tokenEmission5","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_offOwnerAddress","type":"address"}],"name":"ownerOff","outputs":[{"name":"retrnVal","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_newValue","type":"uint256"}],"name":"transactionsOnForHolderUpdate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newSymbol","type":"string"},{"name":"updateConfirmation","type":"bool"}],"name":"contractSymbolUpdate","outputs":[{"name":"retrnVal","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"from","type":"address"},{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"initiator","type":"address"},{"indexed":false,"name":"newBalanceFrom","type":"uint256"},{"indexed":false,"name":"newBalanceTo","type":"uint256"}],"name":"FoodTransferEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"initiator","type":"address"},{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"result","type":"bool"},{"indexed":false,"name":"newBalanceTo","type":"uint256"}],"name":"FoodTokenEmissionEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"initiator","type":"address"},{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"withdrawOk","type":"bool"},{"indexed":false,"name":"withdraw","type":"uint256"},{"indexed":false,"name":"withdrawReal","type":"uint256"},{"indexed":false,"name":"newBalancesValue","type":"uint256"}],"name":"FoodWithdrawEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_description","type":"string"},{"indexed":false,"name":"_initiator","type":"address"}],"name":"DescriptionPublished","type":"event"}]

606060405260408051908101604052600881527f466f6f64436f696e000000000000000000000000000000000000000000000000602082015260009080516200004d9291602001906200023b565b5060408051908101604052600481527f464f4f440000000000000000000000000000000000000000000000000000000060208201526001908051620000979291602001906200023b565b50600860025560408051908101604052600281527f763100000000000000000000000000000000000000000000000000000000000060208201526003908051620000e69291602001906200023b565b5060048054600160a060020a031990811690915560058054909116905560006009819055600d8190556011556020604051908101604052600081526012908051620001369291602001906200023b565b506013805460ff1990811690915560158054821660019081179091556017805483168217905560006018819055601c82905560228190556027829055600160a060020a033316808252600660209081526040808420805487168617905560098054600784528286208190558552600883528185208054600160a060020a0319908116861790915581548701909155838552600a83528185208054881687179055600d8054600b85528387208190558652600c84528286208054831686179055805487019055838552600e83528185208054909716861790965560118054600f8452828620819055855260109092529092208054909416179092558154019055620002e0565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200027e57805160ff1916838001178555620002ae565b82800160010185558215620002ae579182015b82811115620002ae57825182559160200191906001019062000291565b50620002bc929150620002c0565b5090565b620002dd91905b80821115620002bc5760008155600101620002c7565b90565b61278c80620002f06000396000f3006060604052600436106103375763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde03811461033c57806307b86b41146103c6578063095ea7b3146103f957806310d48cd31461041b5780631581b6001461043a57806316210e251461046957806318160ddd146104885780631855e405146104ad5780631c96b242146104cc5780632322f484146104eb5780632354ecf7146104fe57806323b872dd146105185780632980a7b614610540578063313ce5671461055f578063332fa5bb1461057257806337c345cd146105855780634067ffda146105a4578063418ae602146105c35780634381e1c5146105e25780634a3e8078146106045780634e232730146106235780635120bb201461064257806354fd4d50146106555780635634653d146106685780635788a0811461067b5780635a89b3761461069a578063612ab238146106b557806361314ee3146106d457806366357f57146106f357806369bef517146107115780636a87f66d146107335780636be67db3146107525780636edbeb1c146107765780636f7920fd1461079557806370a08231146107a85780637284e416146107c7578063832b2c60146107da57806384e1bf74146107f9578063855c145b1461080c57806387113b881461081f578063902753f414610835578063953bad321461085457806395d89b411461087357806396f2710d146108865780639739951c146108a557806398a42ec4146108c7578063994fe290146108e65780639f3edbe1146108fc578063a6ffefae14610914578063a9059cbb14610933578063b986b61114610955578063bcb3282814610974578063c047c1d814610987578063c0d3f3781461099f578063c96304e8146109b5578063c96c8a1d146109d3578063dd62ed3e146109e9578063deb93b5b14610a0e578063e7a3540514610a21578063e7d137ec14610a40578063e8c09c0d14610a5f578063ed861e1314610a7e578063ef2a914714610a91578063f234bac514610aa7578063f317b85b14610abd578063f3fef3a314610adc578063f8c9516014610b24578063f9b4d63a14610b70578063fe16e86214610b8f578063ffe0a9f214610bb1575b600080fd5b341561034757600080fd5b61034f610bd5565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561038b578082015183820152602001610373565b50505050905090810190601f1680156103b85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103d157600080fd5b6103e5600160a060020a0360043516610c73565b604051901515815260200160405180910390f35b341561040457600080fd5b6103e5600160a060020a0360043516602435610cc6565b341561042657600080fd5b6103e5600160a060020a0360043516610d47565b341561044557600080fd5b61044d610e58565b604051600160a060020a03909116815260200160405180910390f35b341561047457600080fd5b61044d600160a060020a0360043516610e67565b341561049357600080fd5b61049b610e82565b60405190815260200160405180910390f35b34156104b857600080fd5b6103e5600160a060020a0360043516610e88565b34156104d757600080fd5b61049b600160a060020a0360043516610f25565b34156104f657600080fd5b61049b610f40565b341561050957600080fd5b6105166004351515610f4b565b005b341561052357600080fd5b6103e5600160a060020a0360043581169060243516604435610f88565b341561054b57600080fd5b6103e5600160a060020a036004351661106e565b341561056a57600080fd5b61049b611176565b341561057d57600080fd5b61049b61117c565b341561059057600080fd5b6103e5600160a060020a0360043516611182565b34156105af57600080fd5b61049b600160a060020a0360043516611197565b34156105ce57600080fd5b61049b600160a060020a03600435166111a9565b34156105ed57600080fd5b61044d600160a060020a03600435166024356111ba565b341561060f57600080fd5b610516600160a060020a03600435166111e0565b341561062e57600080fd5b6103e5600160a060020a036004351661122c565b341561064d57600080fd5b6103e5611334565b341561066057600080fd5b61034f61133d565b341561067357600080fd5b61049b6113a8565b341561068657600080fd5b6103e5600160a060020a03600435166113ae565b34156106a557600080fd5b6103e560043560243515156113c3565b34156106c057600080fd5b61049b600160a060020a0360043516611418565b34156106df57600080fd5b6103e5600160a060020a036004351661142a565b34156106fe57600080fd5b610516600480356024810191013561143f565b341561071c57600080fd5b610516600160a060020a03600435166024356114d8565b341561073e57600080fd5b6103e5600160a060020a0360043516611541565b341561075d57600080fd5b6103e560246004803582810192910135903515156115d6565b341561078157600080fd5b61049b600160a060020a0360043516611627565b34156107a057600080fd5b61049b611639565b34156107b357600080fd5b61049b600160a060020a036004351661163f565b34156107d257600080fd5b61034f6116ae565b34156107e557600080fd5b61049b600160a060020a0360043516611719565b341561080457600080fd5b6103e561172b565b341561081757600080fd5b61049b611734565b341561082a57600080fd5b61044d60043561173a565b341561084057600080fd5b6103e5600160a060020a0360043516611755565b341561085f57600080fd5b6103e5600160a060020a03600435166117ea565b341561087e57600080fd5b61034f6117ff565b341561089157600080fd5b6103e5600160a060020a036004351661186a565b34156108b057600080fd5b6103e5600160a060020a0360043516602435611972565b34156108d257600080fd5b61049b600160a060020a03600435166119f6565b34156108f157600080fd5b61044d600435611a08565b341561090757600080fd5b6105166004351515611a23565b341561091f57600080fd5b61049b600160a060020a0360043516611a60565b341561093e57600080fd5b6103e5600160a060020a0360043516602435611a72565b341561096057600080fd5b610516600160a060020a0360043516611ab5565b341561097f57600080fd5b61044d611b01565b341561099257600080fd5b6105166004351515611b10565b34156109aa57600080fd5b61044d600435611b4d565b34156109c057600080fd5b6103e56004803560248101910135611b68565b34156109de57600080fd5b61044d600435611bde565b34156109f457600080fd5b61049b600160a060020a0360043581169060243516611bf9565b3415610a1957600080fd5b6103e5611c24565b3415610a2c57600080fd5b61049b600160a060020a0360043516611c2d565b3415610a4b57600080fd5b61034f600160a060020a0360043516611c3f565b3415610a6a57600080fd5b61049b600160a060020a0360043516611cbc565b3415610a8957600080fd5b61049b611cce565b3415610a9c57600080fd5b61044d600435611cd4565b3415610ab257600080fd5b610516600435611cef565b3415610ac857600080fd5b61049b600160a060020a0360043516611d1e565b3415610ae757600080fd5b610afe600160a060020a0360043516602435611d30565b604051921515835260208301919091526040808301919091526060909101905180910390f35b3415610b2f57600080fd5b610516600160a060020a03600435811690602435906044358116906064359060843581169060a4359060c43581169060e43590610104351661012435611fc1565b3415610b7b57600080fd5b6103e5600160a060020a0360043516612069565b3415610b9a57600080fd5b610516600160a060020a03600435166024356120fe565b3415610bbc57600080fd5b6103e56024600480358281019291013590351515612164565b60008054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c6b5780601f10610c4057610100808354040283529160200191610c6b565b820191906000526020600020905b815481529060010190602001808311610c4e57829003601f168201915b505050505081565b600160a060020a038116600090815260146020526040812054158015610c9b575060135460ff165b80610cbe5750600160a060020a0382166000908152601460205260409020546002145b90505b919050565b600033610cd281610c73565b1515610cdd57600080fd5b600160a060020a03338116600081815260286020908152604080832094891680845294909152908190208690557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259086905190815260200160405180910390a35060019392505050565b600160a060020a03331660009081526006602052604081205460ff161515600114610d7157600080fd5b600160a060020a0382161515610d8657600080fd5b600160a060020a0382166000908152601a60205260408120541115610dfc57600160a060020a03821660009081526019602052604090205460ff161515610df35750600160a060020a0381166000908152601960205260409020805460ff19166001908117909155610df7565b5060005b610cc1565b50600160a060020a03166000818152601960209081526040808320805460ff19166001908117909155601c8054601a85528386208190558552601b90935292208054600160a060020a0319169093179092558154810190915590565b600554600160a060020a031681565b601f60205260009081526040902054600160a060020a031681565b60225481565b600160a060020a03331660009081526006602052604081205460ff161515600114610eb257600080fd5b600160a060020a0382166000908152600f6020526040812054118015610ef05750600160a060020a0382166000908152600e602052604090205460ff165b15610f1d5750600160a060020a0381166000908152600e60205260409020805460ff191690556001610cc1565b506000919050565b600160a060020a031660009081526023602052604090205490565b602754600019015b90565b600160a060020a03331660009081526006602052604090205460ff161515600114610f7557600080fd5b6015805460ff1916911515919091179055565b600083610f9481610c73565b1515610f9f57600080fd5b600160a060020a0384166000908152601a602052604090205415610fc257600080fd5b600160a060020a038086166000908152602860209081526040808320339094168352929052205483901061106157610ffb8585856121a0565b1561106157600160a060020a038086166000908152602860209081526040808320339094168352929052205461103190846122f2565b600160a060020a038087166000908152602860209081526040808320339094168352929052205560019150611066565b600091505b509392505050565b600160a060020a03331660009081526006602052604081205460ff16151560011461109857600080fd5b600160a060020a03821615156110ad57600080fd5b600160a060020a0382166000908152600b6020526040812054111561111a57600160a060020a0382166000908152600a602052604090205460ff161515610df35750600160a060020a0381166000908152600a60205260409020805460ff19166001908117909155610df7565b50600160a060020a03166000818152600a60209081526040808320805460ff19166001908117909155600d8054600b85528386208190558552600c90935292208054600160a060020a0319169093179092558154810190915590565b60025481565b60095481565b600a6020526000908152604090205460ff1681565b60146020526000908152604090205481565b602080526000908152604090205481565b6021602090815260009283526040808420909152908252902054600160a060020a031681565b600160a060020a03331660009081526006602052604090205460ff16151560011461120a57600080fd5b60048054600160a060020a031916600160a060020a0392909216919091179055565b600160a060020a03331660009081526006602052604081205460ff16151560011461125657600080fd5b600160a060020a038216151561126b57600080fd5b600160a060020a03821660009081526007602052604081205411156112d857600160a060020a03821660009081526006602052604090205460ff161515610df35750600160a060020a0381166000908152600660205260409020805460ff19166001908117909155610df7565b50600160a060020a03166000818152600660209081526040808320805460ff1916600190811790915560098054600785528386208190558552600890935292208054600160a060020a0319169093179092558154810190915590565b60135460ff1681565b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c6b5780601f10610c4057610100808354040283529160200191610c6b565b601c5481565b60066020526000908152604090205460ff1681565b600160a060020a03331660009081526006602052604081205460ff1615156001146113ed57600080fd5b8180156113fc57506002548314155b1561140e575060028290556001611412565b5060005b92915050565b60166020526000908152604090205481565b600e6020526000908152604090205460ff1681565b600160a060020a03331660009081526006602052604090205460ff16151560011461146957600080fd5b611475601283836126c8565b507f39b61914f7b671bd1243b7fdcab04d9db0afc45761a099512be0488f49a4ee28828233604051600160a060020a0382166020820152604080825281018390528060608101858580828437820191505094505050505060405180910390a15050565b600160a060020a03331660009081526006602052604090205460ff16151560011461150257600080fd5b600160a060020a038216600090815260166020526040902054811461153d57600160a060020a03821660009081526016602052604090208190555b5050565b600160a060020a03331660009081526006602052604081205460ff16151560011461156b57600080fd5b600160a060020a0382166000908152600b60205260408120541180156115a95750600160a060020a0382166000908152600a602052604090205460ff165b15610f1d5750600160a060020a0381166000908152600a60205260409020805460ff191690556001610cc1565b600160a060020a03331660009081526006602052604081205460ff16151560011461160057600080fd5b811561161c57611612600085856126c8565b5060019050611620565b5060005b9392505050565b601d6020526000908152604090205481565b60185481565b600160a060020a038116600090815260166020526040812054158015611667575060155460ff165b8061168a5750600160a060020a0382166000908152601660205260409020546002145b15610df35750600160a060020a038116600090815260236020526040902054610cc1565b60128054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c6b5780601f10610c4057610100808354040283529160200191610c6b565b600b6020526000908152604090205481565b60175460ff1681565b600d5481565b601060205260009081526040902054600160a060020a031681565b600160a060020a03331660009081526006602052604081205460ff16151560011461177f57600080fd5b600160a060020a0382166000908152601a60205260408120541180156117bd5750600160a060020a03821660009081526019602052604090205460ff165b15610f1d5750600160a060020a0381166000908152601960205260409020805460ff191690556001610cc1565b60196020526000908152604090205460ff1681565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c6b5780601f10610c4057610100808354040283529160200191610c6b565b600160a060020a03331660009081526006602052604081205460ff16151560011461189457600080fd5b600160a060020a03821615156118a957600080fd5b600160a060020a0382166000908152600f6020526040812054111561191657600160a060020a0382166000908152600e602052604090205460ff161515610df35750600160a060020a0381166000908152600e60205260409020805460ff19166001908117909155610df7565b50600160a060020a03166000818152600e60209081526040808320805460ff1916600190811790915560118054600f85528386208190558552601090935292208054600160a060020a0319169093179092558154810190915590565b600160a060020a0333166000908152600e602052604081205460ff161515600114806119bb5750600160a060020a03331660009081526006602052604090205460ff1615156001145b15156119c657600080fd5b60175460ff1615156119d757600080fd5b600160a060020a03831615156119ec57600080fd5b6116208383612306565b601a6020526000908152604090205481565b601b60205260009081526040902054600160a060020a031681565b600160a060020a03331660009081526006602052604090205460ff161515600114611a4d57600080fd5b6017805460ff1916911515919091179055565b60256020526000908152604090205481565b600160a060020a0382166000908152601a602052604081205481901115611aa357611a9e338484612526565b611412565b611aae3384846121a0565b9050611412565b600160a060020a03331660009081526006602052604090205460ff161515600114611adf57600080fd5b60058054600160a060020a031916600160a060020a0392909216919091179055565b600454600160a060020a031681565b600160a060020a03331660009081526006602052604090205460ff161515600114611b3a57600080fd5b6013805460ff1916911515919091179055565b600c60205260009081526040902054600160a060020a031681565b600160a060020a03331660009081526025602052604081205481901180611bac5750600160a060020a03331660009081526006602052604090205460ff1615156001145b1561140e57600160a060020a0333166000908152602660205260409020611bd49084846126c8565b5060019050611412565b600860205260009081526040902054600160a060020a031681565b600160a060020a03918216600090815260286020908152604080832093909416825291909152205490565b60155460ff1681565b600f6020526000908152604090205481565b60266020528060005260406000206000915090508054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c6b5780601f10610c4057610100808354040283529160200191610c6b565b601e6020526000908152604090205481565b60115481565b602460205260009081526040902054600160a060020a031681565b600160a060020a03331660009081526006602052604090205460ff161515600114611d1957600080fd5b601855565b60076020526000908152604090205481565b600160a060020a0333166000908152600a602052604081205481908190819060ff16151560011480611d7f5750600160a060020a03331660009081526006602052604090205460ff1615156001145b1515611d8a57600080fd5b600160a060020a0386166000908152602360205260408120541115611f175750600160a060020a038516600090815260236020526040902054849081901015611de85750600160a060020a0385166000908152602360205260409020545b600160a060020a038616600090815260236020526040902054611e0b90826122f2565b600160a060020a038716600090815260236020526040902055602254611e3190826122f2565b602255600160a060020a03861660009081526023602052604090819020546001955091935090915082907f1ccb26010072057d8d351a711ebccbfc970c5af67c7c0724a4f91d01743334249033908890879089908690889051600160a060020a0396871681529490951660208501529115156040808501919091526060840191909152608083019190915260a082019290925260c001905180910390a1600554600160a060020a039081169087167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405190815260200160405180910390a3611fb9565b6000935060009250600091507f1ccb26010072057d8d351a711ebccbfc970c5af67c7c0724a4f91d017433342433876000886000602360008d600160a060020a0316600160a060020a0316815260200190815260200160002054604051600160a060020a0396871681529490951660208501529115156040808501919091526060840191909152608083019190915260a082019290925260c001905180910390a15b509250925092565b600160a060020a0333166000908152600e602052604090205460ff1615156001148061200a5750600160a060020a03331660009081526006602052604090205460ff1615156001145b151561201557600080fd5b60175460ff16151561202657600080fd5b6120308a8a612306565b5061203b8888612306565b506120468686612306565b506120518484612306565b5061205c8282612306565b5050505050505050505050565b600160a060020a03331660009081526006602052604081205460ff16151560011461209357600080fd5b600160a060020a0382166000908152600760205260408120541180156120d15750600160a060020a03821660009081526006602052604090205460ff165b15610f1d5750600160a060020a0381166000908152600660205260409020805460ff191690556001610cc1565b600160a060020a03331660009081526006602052604090205460ff16151560011461212857600080fd5b600160a060020a038216600090815260146020526040902054811461153d57600160a060020a0391909116600090815260146020526040902055565b600160a060020a03331660009081526006602052604081205460ff16151560011461218e57600080fd5b811561161c57611612600185856126c8565b6000836121ac81610c73565b15156121b757600080fd5b6000831180156121e05750600160a060020a038516600090815260236020526040902054839010155b1561106157600160a060020a03851660009081526023602052604090208054849003905561220e8484612602565b83600160a060020a031685600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405190815260200160405180910390a3600160a060020a0380861660009081526023602052604080822054928716825290819020547f940d553fc39608a76b364511cc751d4351ba3e109ad9c7d08c30913f3838e94192889288928892339290919051600160a060020a0396871681529486166020860152604080860194909452919094166060840152608083019390935260a082019290925260c001905180910390a160019150611066565b600080828410156122ff57fe5b5050900390565b600160a060020a0333166000908152600e60205260408120548190819060ff161515600114806123535750600160a060020a03331660009081526006602052604090205460ff1615156001145b151561235e57600080fd5b60175460ff16151561236f57600080fd5b600160a060020a0385161561251e5761238a602254856126ab565b915083905060006018541180156123a2575081601854105b156123ab575060005b6000811115612492576123be8582612602565b6022829055600454600160a060020a0380871691167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405190815260200160405180910390a37faf9dfd1a8f0964b1fe9c3c3df1a91c9ec2a3d55abbc04e8effc598559680bb5f3386866001602360008b600160a060020a0316600160a060020a0316815260200190815260200160002054604051600160a060020a03958616815293909416602084015260408084019290925215156060830152608082019290925260a001905180910390a161251e565b600092507faf9dfd1a8f0964b1fe9c3c3df1a91c9ec2a3d55abbc04e8effc598559680bb5f3386866000602360008b600160a060020a0316600160a060020a0316815260200190815260200160002054604051600160a060020a03958616815293909416602084015260408084019290925215156060830152608082019290925260a001905180910390a15b505092915050565b600160a060020a03821660009081526019602052604081205460ff16151561254d57600080fd5b600160a060020a038481166000908152601f6020526040902054811690841614156125bd5750600160a060020a03828116600090815260208080526040808320805460018101909155602183528184208185529092529091208054600160a060020a031916928616929092179091555b50600160a060020a039283166000908152601d60209081526040808320429055601e825280832093909355601f9052208054600160a060020a03191691909216179055565b600160a060020a0382166000908152602560205260409020541515612668576027805460009081526024602090815260408083208054600160a060020a031916600160a060020a0388169081179091558454908452602590925290912081905560010190555b600160a060020a03821660009081526023602052604090205461268b90826126ab565b600160a060020a0390921660009081526023602052604090209190915550565b60008282018381108015906126c05750828110155b151561162057fe5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106127095782800160ff19823516178555612736565b82800160010185558215612736579182015b8281111561273657823582559160200191906001019061271b565b50612742929150612746565b5090565b610f4891905b80821115612742576000815560010161274c5600a165627a7a72305820ec5ef764de740cd16f3547a587dab79b003e2b7f1aba579221026ea69d5e85500029

Deployed Bytecode

0x6060604052600436106103375763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde03811461033c57806307b86b41146103c6578063095ea7b3146103f957806310d48cd31461041b5780631581b6001461043a57806316210e251461046957806318160ddd146104885780631855e405146104ad5780631c96b242146104cc5780632322f484146104eb5780632354ecf7146104fe57806323b872dd146105185780632980a7b614610540578063313ce5671461055f578063332fa5bb1461057257806337c345cd146105855780634067ffda146105a4578063418ae602146105c35780634381e1c5146105e25780634a3e8078146106045780634e232730146106235780635120bb201461064257806354fd4d50146106555780635634653d146106685780635788a0811461067b5780635a89b3761461069a578063612ab238146106b557806361314ee3146106d457806366357f57146106f357806369bef517146107115780636a87f66d146107335780636be67db3146107525780636edbeb1c146107765780636f7920fd1461079557806370a08231146107a85780637284e416146107c7578063832b2c60146107da57806384e1bf74146107f9578063855c145b1461080c57806387113b881461081f578063902753f414610835578063953bad321461085457806395d89b411461087357806396f2710d146108865780639739951c146108a557806398a42ec4146108c7578063994fe290146108e65780639f3edbe1146108fc578063a6ffefae14610914578063a9059cbb14610933578063b986b61114610955578063bcb3282814610974578063c047c1d814610987578063c0d3f3781461099f578063c96304e8146109b5578063c96c8a1d146109d3578063dd62ed3e146109e9578063deb93b5b14610a0e578063e7a3540514610a21578063e7d137ec14610a40578063e8c09c0d14610a5f578063ed861e1314610a7e578063ef2a914714610a91578063f234bac514610aa7578063f317b85b14610abd578063f3fef3a314610adc578063f8c9516014610b24578063f9b4d63a14610b70578063fe16e86214610b8f578063ffe0a9f214610bb1575b600080fd5b341561034757600080fd5b61034f610bd5565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561038b578082015183820152602001610373565b50505050905090810190601f1680156103b85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103d157600080fd5b6103e5600160a060020a0360043516610c73565b604051901515815260200160405180910390f35b341561040457600080fd5b6103e5600160a060020a0360043516602435610cc6565b341561042657600080fd5b6103e5600160a060020a0360043516610d47565b341561044557600080fd5b61044d610e58565b604051600160a060020a03909116815260200160405180910390f35b341561047457600080fd5b61044d600160a060020a0360043516610e67565b341561049357600080fd5b61049b610e82565b60405190815260200160405180910390f35b34156104b857600080fd5b6103e5600160a060020a0360043516610e88565b34156104d757600080fd5b61049b600160a060020a0360043516610f25565b34156104f657600080fd5b61049b610f40565b341561050957600080fd5b6105166004351515610f4b565b005b341561052357600080fd5b6103e5600160a060020a0360043581169060243516604435610f88565b341561054b57600080fd5b6103e5600160a060020a036004351661106e565b341561056a57600080fd5b61049b611176565b341561057d57600080fd5b61049b61117c565b341561059057600080fd5b6103e5600160a060020a0360043516611182565b34156105af57600080fd5b61049b600160a060020a0360043516611197565b34156105ce57600080fd5b61049b600160a060020a03600435166111a9565b34156105ed57600080fd5b61044d600160a060020a03600435166024356111ba565b341561060f57600080fd5b610516600160a060020a03600435166111e0565b341561062e57600080fd5b6103e5600160a060020a036004351661122c565b341561064d57600080fd5b6103e5611334565b341561066057600080fd5b61034f61133d565b341561067357600080fd5b61049b6113a8565b341561068657600080fd5b6103e5600160a060020a03600435166113ae565b34156106a557600080fd5b6103e560043560243515156113c3565b34156106c057600080fd5b61049b600160a060020a0360043516611418565b34156106df57600080fd5b6103e5600160a060020a036004351661142a565b34156106fe57600080fd5b610516600480356024810191013561143f565b341561071c57600080fd5b610516600160a060020a03600435166024356114d8565b341561073e57600080fd5b6103e5600160a060020a0360043516611541565b341561075d57600080fd5b6103e560246004803582810192910135903515156115d6565b341561078157600080fd5b61049b600160a060020a0360043516611627565b34156107a057600080fd5b61049b611639565b34156107b357600080fd5b61049b600160a060020a036004351661163f565b34156107d257600080fd5b61034f6116ae565b34156107e557600080fd5b61049b600160a060020a0360043516611719565b341561080457600080fd5b6103e561172b565b341561081757600080fd5b61049b611734565b341561082a57600080fd5b61044d60043561173a565b341561084057600080fd5b6103e5600160a060020a0360043516611755565b341561085f57600080fd5b6103e5600160a060020a03600435166117ea565b341561087e57600080fd5b61034f6117ff565b341561089157600080fd5b6103e5600160a060020a036004351661186a565b34156108b057600080fd5b6103e5600160a060020a0360043516602435611972565b34156108d257600080fd5b61049b600160a060020a03600435166119f6565b34156108f157600080fd5b61044d600435611a08565b341561090757600080fd5b6105166004351515611a23565b341561091f57600080fd5b61049b600160a060020a0360043516611a60565b341561093e57600080fd5b6103e5600160a060020a0360043516602435611a72565b341561096057600080fd5b610516600160a060020a0360043516611ab5565b341561097f57600080fd5b61044d611b01565b341561099257600080fd5b6105166004351515611b10565b34156109aa57600080fd5b61044d600435611b4d565b34156109c057600080fd5b6103e56004803560248101910135611b68565b34156109de57600080fd5b61044d600435611bde565b34156109f457600080fd5b61049b600160a060020a0360043581169060243516611bf9565b3415610a1957600080fd5b6103e5611c24565b3415610a2c57600080fd5b61049b600160a060020a0360043516611c2d565b3415610a4b57600080fd5b61034f600160a060020a0360043516611c3f565b3415610a6a57600080fd5b61049b600160a060020a0360043516611cbc565b3415610a8957600080fd5b61049b611cce565b3415610a9c57600080fd5b61044d600435611cd4565b3415610ab257600080fd5b610516600435611cef565b3415610ac857600080fd5b61049b600160a060020a0360043516611d1e565b3415610ae757600080fd5b610afe600160a060020a0360043516602435611d30565b604051921515835260208301919091526040808301919091526060909101905180910390f35b3415610b2f57600080fd5b610516600160a060020a03600435811690602435906044358116906064359060843581169060a4359060c43581169060e43590610104351661012435611fc1565b3415610b7b57600080fd5b6103e5600160a060020a0360043516612069565b3415610b9a57600080fd5b610516600160a060020a03600435166024356120fe565b3415610bbc57600080fd5b6103e56024600480358281019291013590351515612164565b60008054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c6b5780601f10610c4057610100808354040283529160200191610c6b565b820191906000526020600020905b815481529060010190602001808311610c4e57829003601f168201915b505050505081565b600160a060020a038116600090815260146020526040812054158015610c9b575060135460ff165b80610cbe5750600160a060020a0382166000908152601460205260409020546002145b90505b919050565b600033610cd281610c73565b1515610cdd57600080fd5b600160a060020a03338116600081815260286020908152604080832094891680845294909152908190208690557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259086905190815260200160405180910390a35060019392505050565b600160a060020a03331660009081526006602052604081205460ff161515600114610d7157600080fd5b600160a060020a0382161515610d8657600080fd5b600160a060020a0382166000908152601a60205260408120541115610dfc57600160a060020a03821660009081526019602052604090205460ff161515610df35750600160a060020a0381166000908152601960205260409020805460ff19166001908117909155610df7565b5060005b610cc1565b50600160a060020a03166000818152601960209081526040808320805460ff19166001908117909155601c8054601a85528386208190558552601b90935292208054600160a060020a0319169093179092558154810190915590565b600554600160a060020a031681565b601f60205260009081526040902054600160a060020a031681565b60225481565b600160a060020a03331660009081526006602052604081205460ff161515600114610eb257600080fd5b600160a060020a0382166000908152600f6020526040812054118015610ef05750600160a060020a0382166000908152600e602052604090205460ff165b15610f1d5750600160a060020a0381166000908152600e60205260409020805460ff191690556001610cc1565b506000919050565b600160a060020a031660009081526023602052604090205490565b602754600019015b90565b600160a060020a03331660009081526006602052604090205460ff161515600114610f7557600080fd5b6015805460ff1916911515919091179055565b600083610f9481610c73565b1515610f9f57600080fd5b600160a060020a0384166000908152601a602052604090205415610fc257600080fd5b600160a060020a038086166000908152602860209081526040808320339094168352929052205483901061106157610ffb8585856121a0565b1561106157600160a060020a038086166000908152602860209081526040808320339094168352929052205461103190846122f2565b600160a060020a038087166000908152602860209081526040808320339094168352929052205560019150611066565b600091505b509392505050565b600160a060020a03331660009081526006602052604081205460ff16151560011461109857600080fd5b600160a060020a03821615156110ad57600080fd5b600160a060020a0382166000908152600b6020526040812054111561111a57600160a060020a0382166000908152600a602052604090205460ff161515610df35750600160a060020a0381166000908152600a60205260409020805460ff19166001908117909155610df7565b50600160a060020a03166000818152600a60209081526040808320805460ff19166001908117909155600d8054600b85528386208190558552600c90935292208054600160a060020a0319169093179092558154810190915590565b60025481565b60095481565b600a6020526000908152604090205460ff1681565b60146020526000908152604090205481565b602080526000908152604090205481565b6021602090815260009283526040808420909152908252902054600160a060020a031681565b600160a060020a03331660009081526006602052604090205460ff16151560011461120a57600080fd5b60048054600160a060020a031916600160a060020a0392909216919091179055565b600160a060020a03331660009081526006602052604081205460ff16151560011461125657600080fd5b600160a060020a038216151561126b57600080fd5b600160a060020a03821660009081526007602052604081205411156112d857600160a060020a03821660009081526006602052604090205460ff161515610df35750600160a060020a0381166000908152600660205260409020805460ff19166001908117909155610df7565b50600160a060020a03166000818152600660209081526040808320805460ff1916600190811790915560098054600785528386208190558552600890935292208054600160a060020a0319169093179092558154810190915590565b60135460ff1681565b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c6b5780601f10610c4057610100808354040283529160200191610c6b565b601c5481565b60066020526000908152604090205460ff1681565b600160a060020a03331660009081526006602052604081205460ff1615156001146113ed57600080fd5b8180156113fc57506002548314155b1561140e575060028290556001611412565b5060005b92915050565b60166020526000908152604090205481565b600e6020526000908152604090205460ff1681565b600160a060020a03331660009081526006602052604090205460ff16151560011461146957600080fd5b611475601283836126c8565b507f39b61914f7b671bd1243b7fdcab04d9db0afc45761a099512be0488f49a4ee28828233604051600160a060020a0382166020820152604080825281018390528060608101858580828437820191505094505050505060405180910390a15050565b600160a060020a03331660009081526006602052604090205460ff16151560011461150257600080fd5b600160a060020a038216600090815260166020526040902054811461153d57600160a060020a03821660009081526016602052604090208190555b5050565b600160a060020a03331660009081526006602052604081205460ff16151560011461156b57600080fd5b600160a060020a0382166000908152600b60205260408120541180156115a95750600160a060020a0382166000908152600a602052604090205460ff165b15610f1d5750600160a060020a0381166000908152600a60205260409020805460ff191690556001610cc1565b600160a060020a03331660009081526006602052604081205460ff16151560011461160057600080fd5b811561161c57611612600085856126c8565b5060019050611620565b5060005b9392505050565b601d6020526000908152604090205481565b60185481565b600160a060020a038116600090815260166020526040812054158015611667575060155460ff165b8061168a5750600160a060020a0382166000908152601660205260409020546002145b15610df35750600160a060020a038116600090815260236020526040902054610cc1565b60128054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c6b5780601f10610c4057610100808354040283529160200191610c6b565b600b6020526000908152604090205481565b60175460ff1681565b600d5481565b601060205260009081526040902054600160a060020a031681565b600160a060020a03331660009081526006602052604081205460ff16151560011461177f57600080fd5b600160a060020a0382166000908152601a60205260408120541180156117bd5750600160a060020a03821660009081526019602052604090205460ff165b15610f1d5750600160a060020a0381166000908152601960205260409020805460ff191690556001610cc1565b60196020526000908152604090205460ff1681565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c6b5780601f10610c4057610100808354040283529160200191610c6b565b600160a060020a03331660009081526006602052604081205460ff16151560011461189457600080fd5b600160a060020a03821615156118a957600080fd5b600160a060020a0382166000908152600f6020526040812054111561191657600160a060020a0382166000908152600e602052604090205460ff161515610df35750600160a060020a0381166000908152600e60205260409020805460ff19166001908117909155610df7565b50600160a060020a03166000818152600e60209081526040808320805460ff1916600190811790915560118054600f85528386208190558552601090935292208054600160a060020a0319169093179092558154810190915590565b600160a060020a0333166000908152600e602052604081205460ff161515600114806119bb5750600160a060020a03331660009081526006602052604090205460ff1615156001145b15156119c657600080fd5b60175460ff1615156119d757600080fd5b600160a060020a03831615156119ec57600080fd5b6116208383612306565b601a6020526000908152604090205481565b601b60205260009081526040902054600160a060020a031681565b600160a060020a03331660009081526006602052604090205460ff161515600114611a4d57600080fd5b6017805460ff1916911515919091179055565b60256020526000908152604090205481565b600160a060020a0382166000908152601a602052604081205481901115611aa357611a9e338484612526565b611412565b611aae3384846121a0565b9050611412565b600160a060020a03331660009081526006602052604090205460ff161515600114611adf57600080fd5b60058054600160a060020a031916600160a060020a0392909216919091179055565b600454600160a060020a031681565b600160a060020a03331660009081526006602052604090205460ff161515600114611b3a57600080fd5b6013805460ff1916911515919091179055565b600c60205260009081526040902054600160a060020a031681565b600160a060020a03331660009081526025602052604081205481901180611bac5750600160a060020a03331660009081526006602052604090205460ff1615156001145b1561140e57600160a060020a0333166000908152602660205260409020611bd49084846126c8565b5060019050611412565b600860205260009081526040902054600160a060020a031681565b600160a060020a03918216600090815260286020908152604080832093909416825291909152205490565b60155460ff1681565b600f6020526000908152604090205481565b60266020528060005260406000206000915090508054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c6b5780601f10610c4057610100808354040283529160200191610c6b565b601e6020526000908152604090205481565b60115481565b602460205260009081526040902054600160a060020a031681565b600160a060020a03331660009081526006602052604090205460ff161515600114611d1957600080fd5b601855565b60076020526000908152604090205481565b600160a060020a0333166000908152600a602052604081205481908190819060ff16151560011480611d7f5750600160a060020a03331660009081526006602052604090205460ff1615156001145b1515611d8a57600080fd5b600160a060020a0386166000908152602360205260408120541115611f175750600160a060020a038516600090815260236020526040902054849081901015611de85750600160a060020a0385166000908152602360205260409020545b600160a060020a038616600090815260236020526040902054611e0b90826122f2565b600160a060020a038716600090815260236020526040902055602254611e3190826122f2565b602255600160a060020a03861660009081526023602052604090819020546001955091935090915082907f1ccb26010072057d8d351a711ebccbfc970c5af67c7c0724a4f91d01743334249033908890879089908690889051600160a060020a0396871681529490951660208501529115156040808501919091526060840191909152608083019190915260a082019290925260c001905180910390a1600554600160a060020a039081169087167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405190815260200160405180910390a3611fb9565b6000935060009250600091507f1ccb26010072057d8d351a711ebccbfc970c5af67c7c0724a4f91d017433342433876000886000602360008d600160a060020a0316600160a060020a0316815260200190815260200160002054604051600160a060020a0396871681529490951660208501529115156040808501919091526060840191909152608083019190915260a082019290925260c001905180910390a15b509250925092565b600160a060020a0333166000908152600e602052604090205460ff1615156001148061200a5750600160a060020a03331660009081526006602052604090205460ff1615156001145b151561201557600080fd5b60175460ff16151561202657600080fd5b6120308a8a612306565b5061203b8888612306565b506120468686612306565b506120518484612306565b5061205c8282612306565b5050505050505050505050565b600160a060020a03331660009081526006602052604081205460ff16151560011461209357600080fd5b600160a060020a0382166000908152600760205260408120541180156120d15750600160a060020a03821660009081526006602052604090205460ff165b15610f1d5750600160a060020a0381166000908152600660205260409020805460ff191690556001610cc1565b600160a060020a03331660009081526006602052604090205460ff16151560011461212857600080fd5b600160a060020a038216600090815260146020526040902054811461153d57600160a060020a0391909116600090815260146020526040902055565b600160a060020a03331660009081526006602052604081205460ff16151560011461218e57600080fd5b811561161c57611612600185856126c8565b6000836121ac81610c73565b15156121b757600080fd5b6000831180156121e05750600160a060020a038516600090815260236020526040902054839010155b1561106157600160a060020a03851660009081526023602052604090208054849003905561220e8484612602565b83600160a060020a031685600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405190815260200160405180910390a3600160a060020a0380861660009081526023602052604080822054928716825290819020547f940d553fc39608a76b364511cc751d4351ba3e109ad9c7d08c30913f3838e94192889288928892339290919051600160a060020a0396871681529486166020860152604080860194909452919094166060840152608083019390935260a082019290925260c001905180910390a160019150611066565b600080828410156122ff57fe5b5050900390565b600160a060020a0333166000908152600e60205260408120548190819060ff161515600114806123535750600160a060020a03331660009081526006602052604090205460ff1615156001145b151561235e57600080fd5b60175460ff16151561236f57600080fd5b600160a060020a0385161561251e5761238a602254856126ab565b915083905060006018541180156123a2575081601854105b156123ab575060005b6000811115612492576123be8582612602565b6022829055600454600160a060020a0380871691167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405190815260200160405180910390a37faf9dfd1a8f0964b1fe9c3c3df1a91c9ec2a3d55abbc04e8effc598559680bb5f3386866001602360008b600160a060020a0316600160a060020a0316815260200190815260200160002054604051600160a060020a03958616815293909416602084015260408084019290925215156060830152608082019290925260a001905180910390a161251e565b600092507faf9dfd1a8f0964b1fe9c3c3df1a91c9ec2a3d55abbc04e8effc598559680bb5f3386866000602360008b600160a060020a0316600160a060020a0316815260200190815260200160002054604051600160a060020a03958616815293909416602084015260408084019290925215156060830152608082019290925260a001905180910390a15b505092915050565b600160a060020a03821660009081526019602052604081205460ff16151561254d57600080fd5b600160a060020a038481166000908152601f6020526040902054811690841614156125bd5750600160a060020a03828116600090815260208080526040808320805460018101909155602183528184208185529092529091208054600160a060020a031916928616929092179091555b50600160a060020a039283166000908152601d60209081526040808320429055601e825280832093909355601f9052208054600160a060020a03191691909216179055565b600160a060020a0382166000908152602560205260409020541515612668576027805460009081526024602090815260408083208054600160a060020a031916600160a060020a0388169081179091558454908452602590925290912081905560010190555b600160a060020a03821660009081526023602052604090205461268b90826126ab565b600160a060020a0390921660009081526023602052604090209190915550565b60008282018381108015906126c05750828110155b151561162057fe5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106127095782800160ff19823516178555612736565b82800160010185558215612736579182015b8281111561273657823582559160200191906001019061271b565b50612742929150612746565b5090565b610f4891905b80821115612742576000815560010161274c5600a165627a7a72305820ec5ef764de740cd16f3547a587dab79b003e2b7f1aba579221026ea69d5e85500029

Swarm Source

bzzr://ec5ef764de740cd16f3547a587dab79b003e2b7f1aba579221026ea69d5e8550
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.