ETH Price: $3,291.41 (-3.49%)
Gas: 12 Gwei

Token

Algoeuro (AEUR)
 

Overview

Max Total Supply

100,000 AEUR

Holders

66 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
mikey.eth
Balance
822.685269491 AEUR

Value
$0.00
0x1711bc52bf7e0494325799717fe640F1924617B7
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Algoeuro is an ERC20 synthetic asset implementing an adaptive, nondilutive algorithm which is implemented on-chain based on the EUR/USD value threshold.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
AEUR

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-10-23
*/

pragma solidity 0.4.24;

/* 
    Algoeuro
    
    By Hybridverse Labs
    
*/

contract Initializable {

  bool private initialized;
  bool private initializing;

  modifier initializer() {
    require(initializing || isConstructor() || !initialized, "Contract instance has already been initialized");

    bool wasInitializing = initializing;
    initializing = true;
    initialized = true;

    _;

    initializing = wasInitializing;
  }

  function isConstructor() private view returns (bool) {
    uint256 cs;
    assembly { cs := extcodesize(address) }
    return cs == 0;
  }

  uint256[50] private ______gap;
}

contract Ownable is Initializable {

  address private _owner;
  uint256 private _ownershipLocked;

  event OwnershipLocked(address lockedOwner);
  event OwnershipRenounced(address indexed previousOwner);
  event OwnershipTransferred(
    address indexed previousOwner,
    address indexed newOwner
  );


  function initialize(address sender) internal initializer {
    _owner = sender;
	_ownershipLocked = 0;
  }

  function owner() public view returns(address) {
    return _owner;
  }

  modifier onlyOwner() {
    require(isOwner());
    _;
  }

  function isOwner() public view returns(bool) {
    return msg.sender == _owner;
  }

  function transferOwnership(address newOwner) public onlyOwner {
    _transferOwnership(newOwner);
  }

  function _transferOwnership(address newOwner) internal {
    require(_ownershipLocked == 0);
    require(newOwner != address(0));
    emit OwnershipTransferred(_owner, newOwner);
    _owner = newOwner;
  }
  
  // Set _ownershipLocked flag to lock contract owner forever
  function lockOwnership() public onlyOwner {
	require(_ownershipLocked == 0);
	emit OwnershipLocked(_owner);
    _ownershipLocked = 1;
  }

  uint256[50] private ______gap;
}

interface IERC20 {
  function totalSupply() external view returns (uint256);

  function balanceOf(address who) external view returns (uint256);

  function allowance(address owner, address spender)
    external view returns (uint256);

  function transfer(address to, uint256 value) external returns (bool);

  function approve(address spender, uint256 value)
    external returns (bool);

  function transferFrom(address from, address to, uint256 value)
    external returns (bool);

  event Transfer(
    address indexed from,
    address indexed to,
    uint256 value
  );

  event Approval(
    address indexed owner,
    address indexed spender,
    uint256 value
  );
}

contract ERC20Detailed is Initializable, IERC20 {
  string private _name;
  string private _symbol;
  uint8 private _decimals;

  function initialize(string name, string symbol, uint8 decimals) internal initializer {
    _name = name;
    _symbol = symbol;
    _decimals = decimals;
  }

  function name() public view returns(string) {
    return _name;
  }

  function symbol() public view returns(string) {
    return _symbol;
  }

  function decimals() public view returns(uint8) {
    return _decimals;
  }

  uint256[50] private ______gap;
}

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

library SafeMathInt {

    int256 private constant MIN_INT256 = int256(1) << 255;
    int256 private constant MAX_INT256 = ~(int256(1) << 255);

    function mul(int256 a, int256 b)
        internal
        pure
        returns (int256)
    {
        int256 c = a * b;

        // Detect overflow when multiplying MIN_INT256 with -1
        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }

    function div(int256 a, int256 b)
        internal
        pure
        returns (int256)
    {
        // Prevent overflow when dividing MIN_INT256 by -1
        require(b != -1 || a != MIN_INT256);

        // Solidity already throws when dividing by 0.
        return a / b;
    }

    function sub(int256 a, int256 b)
        internal
        pure
        returns (int256)
    {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }

    function add(int256 a, int256 b)
        internal
        pure
        returns (int256)
    {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }

    function abs(int256 a)
        internal
        pure
        returns (int256)
    {
        require(a != MIN_INT256);
        return a < 0 ? -a : a;
    }
}

contract AEUR is Ownable, ERC20Detailed {

    using SafeMath for uint256;
    using SafeMathInt for int256;
	
	struct Transaction {
        bool enabled;
        address destination;
        bytes data;
    }

    event TransactionFailed(address indexed destination, uint index, bytes data);
	
	// Stable ordering is not guaranteed.

    Transaction[] public transactions;

    event LogRebase(uint256 indexed epoch, uint256 totalSupply);

    modifier validRecipient(address to) {
        require(to != address(0x0));
        require(to != address(this));
        _;
    }

    uint256 private constant DECIMALS = 9;
    uint256 private constant MAX_UINT256 = ~uint256(0);
    uint256 private constant INITIAL_FRAGMENTS_SUPPLY = 30 * 10**5 * 10**DECIMALS;

	// TOTAL_GONS is a multiple of INITIAL_FRAGMENTS_SUPPLY so that _gonsPerFragment is an integer.
    // Use the highest value that fits in a uint256 for max granularity.
    uint256 private constant TOTAL_GONS = MAX_UINT256 - (MAX_UINT256 % INITIAL_FRAGMENTS_SUPPLY);

	// MAX_SUPPLY = maximum integer < (sqrt(4*TOTAL_GONS + 1) - 1) / 2
    uint256 private constant MAX_SUPPLY = ~uint128(0);  // (2^128) - 1
	
	uint256 private _epoch;

    uint256 private _totalSupply;
    uint256 private _gonsPerFragment;
    mapping(address => uint256) private _gonBalances;
	
	// This is denominated in Fragments, because the gons-fragments conversion might change before
    // it's fully paid.
    mapping (address => mapping (address => uint256)) private _allowedFragments;

	/**
     * @dev Notifies Fragments contract about a new rebase cycle.
     * @param supplyDelta The number of new fragment tokens to add into circulation via expansion.
     * @return The total number of fragments after the supply adjustment.
     */
    function rebase(int256 supplyDelta)
        external
        onlyOwner
        returns (uint256)
    {
	
		_epoch = _epoch.add(1);
		
        if (supplyDelta == 0) {
            emit LogRebase(_epoch, _totalSupply);
            return _totalSupply;
        }

        if (supplyDelta < 0) {
            _totalSupply = _totalSupply.sub(uint256(supplyDelta.abs()));
        } else {
            _totalSupply = _totalSupply.add(uint256(supplyDelta));
        }

        if (_totalSupply > MAX_SUPPLY) {
            _totalSupply = MAX_SUPPLY;
        }

        _gonsPerFragment = TOTAL_GONS.div(_totalSupply);
		
		emit LogRebase(_epoch, _totalSupply);

		for (uint i = 0; i < transactions.length; i++) {
            Transaction storage t = transactions[i];
            if (t.enabled) {
                bool result = externalCall(t.destination, t.data);
                if (!result) {
                    emit TransactionFailed(t.destination, i, t.data);
                    revert("Transaction Failed");
                }
            }
        }
		
        return _totalSupply;
    }
	
	constructor() public {
	
		Ownable.initialize(msg.sender);
		ERC20Detailed.initialize("Algoeuro", "AEUR", uint8(DECIMALS));
        
        _totalSupply = INITIAL_FRAGMENTS_SUPPLY;
        _gonBalances[msg.sender] = TOTAL_GONS;
        _gonsPerFragment = TOTAL_GONS.div(_totalSupply);

        emit Transfer(address(0x0), msg.sender, _totalSupply);
    }
	
    function totalSupply()
        public
        view
        returns (uint256)
    {
        return _totalSupply;
    }

    function balanceOf(address who)
        public
        view
        returns (uint256)
    {
        return _gonBalances[who].div(_gonsPerFragment);
    }
	 
    function transfer(address to, uint256 value)
        public
        validRecipient(to)
        returns (bool)
    {
        uint256 merValue = value.mul(_gonsPerFragment);
        _gonBalances[msg.sender] = _gonBalances[msg.sender].sub(merValue);
        _gonBalances[to] = _gonBalances[to].add(merValue);
        emit Transfer(msg.sender, to, value);
        return true;
    }
	 
    function allowance(address owner_, address spender)
        public
        view
        returns (uint256)
    {
        return _allowedFragments[owner_][spender];
    }
	
	/**
     * @dev Transfer tokens from one address to another.
     * @param from The address you want to send tokens from.
     * @param to The address you want to transfer to.
     * @param value The amount of tokens to be transferred.
     */

    function transferFrom(address from, address to, uint256 value)
        public
        validRecipient(to)
        returns (bool)
    {
        _allowedFragments[from][msg.sender] = _allowedFragments[from][msg.sender].sub(value);

        uint256 merValue = value.mul(_gonsPerFragment);
        _gonBalances[from] = _gonBalances[from].sub(merValue);
        _gonBalances[to] = _gonBalances[to].add(merValue);
        emit Transfer(from, to, value);

        return true;
    }
	
	/**
     * @dev Approve the passed address to spend the specified amount of tokens on behalf of
     * msg.sender. This method is included for ERC20 compatibility.
     * increaseAllowance and decreaseAllowance should be used instead.
     * Changing an allowance with this method brings the risk that someone may transfer both
     * the old and the new allowance - if they are both greater than zero - if a transfer
     * transaction is mined before the later approve() call is mined.
     *
     * @param spender The address which will spend the funds.
     * @param value The amount of tokens to be spent.
     */

    function approve(address spender, uint256 value)
        public
        returns (bool)
    {
        _allowedFragments[msg.sender][spender] = value;
        emit Approval(msg.sender, spender, value);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue)
        public
        returns (bool)
    {
        _allowedFragments[msg.sender][spender] =
            _allowedFragments[msg.sender][spender].add(addedValue);
        emit Approval(msg.sender, spender, _allowedFragments[msg.sender][spender]);
        return true;
    }
	
	/**
     * @dev Decrease the amount of tokens that an owner has allowed to a spender.
     *
     * @param spender The address which will spend the funds.
     * @param subtractedValue The amount of tokens to decrease the allowance by.
     */

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        returns (bool)
    {
        uint256 oldValue = _allowedFragments[msg.sender][spender];
        if (subtractedValue >= oldValue) {
            _allowedFragments[msg.sender][spender] = 0;
        } else {
            _allowedFragments[msg.sender][spender] = oldValue.sub(subtractedValue);
        }
        emit Approval(msg.sender, spender, _allowedFragments[msg.sender][spender]);
        return true;
    }
	
    function addTransaction(address destination, bytes data)
        external
        onlyOwner
    {
        transactions.push(Transaction({
            enabled: true,
            destination: destination,
            data: data
        }));
    }

    function removeTransaction(uint index)
        external
        onlyOwner
    {
        require(index < transactions.length, "index out of bounds");

        if (index < transactions.length - 1) {
            transactions[index] = transactions[transactions.length - 1];
        }

        transactions.length--;
    }

    function setTransactionEnabled(uint index, bool enabled)
        external
        onlyOwner
    {
        require(index < transactions.length, "index must be in range of stored tx list");
        transactions[index].enabled = enabled;
    }

    function transactionsSize()
        external
        view
        returns (uint256)
    {
        return transactions.length;
    }

    function externalCall(address destination, bytes data)
        internal
        returns (bool)
    {
        bool result;
        assembly {  // solhint-disable-line no-inline-assembly
            // "Allocate" memory for output
            // (0x40 is where "free memory" pointer is stored by convention)
            let outputAddress := mload(0x40)

            // First 32 bytes are the padded length of data, so exclude that
            let dataAddress := add(data, 32)

            result := call(
                // 34710 is the value that solidity is currently emitting
                // It includes callGas (700) + callVeryLow (3, to pay for SUB)
                // + callValueTransferGas (9000) + callNewAccountGas
                // (25000, in case the destination address does not exist and needs creating)
                sub(gas, 34710),


                destination,
                0, // transfer value in wei
                dataAddress,
                mload(data),  // Size of the input, in bytes. Stored in position 0 of the array.
                outputAddress,
                0  // Output is ignored, therefore the output size is zero
            )
        }
        return result;
    }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[],"name":"lockOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"supplyDelta","type":"int256"}],"name":"rebase","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"destination","type":"address"},{"name":"data","type":"bytes"}],"name":"addTransaction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"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":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"index","type":"uint256"}],"name":"removeTransaction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"index","type":"uint256"},{"name":"enabled","type":"bool"}],"name":"setTransactionEnabled","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"who","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"transactionsSize","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"transactions","outputs":[{"name":"enabled","type":"bool"},{"name":"destination","type":"address"},{"name":"data","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner_","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"destination","type":"address"},{"indexed":false,"name":"index","type":"uint256"},{"indexed":false,"name":"data","type":"bytes"}],"name":"TransactionFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"epoch","type":"uint256"},{"indexed":false,"name":"totalSupply","type":"uint256"}],"name":"LogRebase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"lockedOwner","type":"address"}],"name":"OwnershipLocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

60806040523480156200001157600080fd5b506200003133620001e064010000000002620026f3176401000000009004565b620000bd6040805190810160405280600881526020017f416c676f6575726f0000000000000000000000000000000000000000000000008152506040805190810160405280600481526020017f41455552000000000000000000000000000000000000000000000000000000008152506009620003736401000000000262002872176401000000009004565b6009600a0a622dc6c002609e819055506009600a0a622dc6c002600019811515620000e457fe5b066000190360a060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200016c609e546009600a0a622dc6c0026000198115156200014a57fe5b06600019036200050c640100000000026200210d179091906401000000009004565b609f819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef609e546040518082815260200191505060405180910390a3620006f6565b60008060019054906101000a900460ff16806200021257506200021162000567640100000000026401000000009004565b5b806200022a57506000809054906101000a900460ff16155b1515620002c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f436f6e747261637420696e7374616e63652068617320616c726561647920626581526020017f656e20696e697469616c697a656400000000000000000000000000000000000081525060400191505060405180910390fd5b600060019054906101000a900460ff1690506001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff02191690831515021790555081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600060348190555080600060016101000a81548160ff0219169083151502179055505050565b60008060019054906101000a900460ff1680620003a55750620003a462000567640100000000026401000000009004565b5b80620003bd57506000809054906101000a900460ff16155b151562000458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f436f6e747261637420696e7374616e63652068617320616c726561647920626581526020017f656e20696e697469616c697a656400000000000000000000000000000000000081525060400191505060405180910390fd5b600060019054906101000a900460ff1690506001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055508360679080519060200190620004b792919062000647565b508260689080519060200190620004d092919062000647565b5081606960006101000a81548160ff021916908360ff16021790555080600060016101000a81548160ff02191690831515021790555050505050565b60006200055f83836040805190810160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000578640100000000026401000000009004565b905092915050565b600080303b90506000811491505090565b60008060008411839015156200062c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620005f0578082015181840152602081019050620005d3565b50505050905090810190601f1680156200061e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5083858115156200063957fe5b049050809150509392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200068a57805160ff1916838001178555620006bb565b82800160010185558215620006bb579182015b82811115620006ba5782518255916020019190600101906200069d565b5b509050620006ca9190620006ce565b5090565b620006f391905b80821115620006ef576000816000905550600101620006d5565b5090565b90565b612ab080620007066000396000f30060806040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630577c02b1461012257806306fdde0314610139578063095ea7b3146101c95780630ab114f91461022e578063126e19be1461026f57806318160ddd146102ca57806323b872dd146102f5578063313ce5671461037a57806339509351146103ab57806346c3bd1f146104105780636e9dde991461043d57806370a08231146104765780638da5cb5b146104cd5780638f32d59b1461052457806391d4ec181461055357806395d89b411461057e5780639ace38c21461060e578063a457c2d7146106f2578063a9059cbb14610757578063dd62ed3e146107bc578063f2fde38b14610833575b600080fd5b34801561012e57600080fd5b50610137610876565b005b34801561014557600080fd5b5061014e610929565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561018e578082015181840152602081019050610173565b50505050905090810190601f1680156101bb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101d557600080fd5b50610214600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506109cb565b604051808215151515815260200191505060405180910390f35b34801561023a57600080fd5b5061025960048036038101908080359060200190929190505050610abd565b6040518082815260200191505060405180910390f35b34801561027b57600080fd5b506102c8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001919091929391929390505050610edd565b005b3480156102d657600080fd5b506102df611010565b6040518082815260200191505060405180910390f35b34801561030157600080fd5b50610360600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061101a565b604051808215151515815260200191505060405180910390f35b34801561038657600080fd5b5061038f611357565b604051808260ff1660ff16815260200191505060405180910390f35b3480156103b757600080fd5b506103f6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061136e565b604051808215151515815260200191505060405180910390f35b34801561041c57600080fd5b5061043b6004803603810190808035906020019092919050505061156a565b005b34801561044957600080fd5b5061047460048036038101908080359060200190929190803515159060200190929190505050611724565b005b34801561048257600080fd5b506104b7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611815565b6040518082815260200191505060405180910390f35b3480156104d957600080fd5b506104e2611872565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561053057600080fd5b5061053961189c565b604051808215151515815260200191505060405180910390f35b34801561055f57600080fd5b506105686118f4565b6040518082815260200191505060405180910390f35b34801561058a57600080fd5b50610593611901565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105d35780820151818401526020810190506105b8565b50505050905090810190601f1680156106005780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561061a57600080fd5b50610639600480360381019080803590602001909291905050506119a3565b60405180841515151581526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156106b557808201518184015260208101905061069a565b50505050905090810190601f1680156106e25780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b3480156106fe57600080fd5b5061073d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611aa1565b604051808215151515815260200191505060405180910390f35b34801561076357600080fd5b506107a2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611d33565b604051808215151515815260200191505060405180910390f35b3480156107c857600080fd5b5061081d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f60565b6040518082815260200191505060405180910390f35b34801561083f57600080fd5b50610874600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fe7565b005b61087e61189c565b151561088957600080fd5b600060345414151561089a57600080fd5b7f88edfb4ea96673000ad101b18d1c7dbd727c5d92217c8d0b9966f2aaf77e93f4603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a16001603481905550565b606060678054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109c15780601f10610996576101008083540402835291602001916109c1565b820191906000526020600020905b8154815290600101906020018083116109a457829003601f168201915b5050505050905090565b60008160a160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600080600080610acb61189c565b1515610ad657600080fd5b610aec6001609d5461200690919063ffffffff16565b609d819055506000851415610b4157609d547f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f2609e546040518082815260200191505060405180910390a2609e549350610ed5565b6000851215610b7257610b67610b5686612090565b609e546120c390919063ffffffff16565b609e81905550610b8e565b610b8785609e5461200690919063ffffffff16565b609e819055505b6000196fffffffffffffffffffffffffffffffff16609e541115610bc8576000196fffffffffffffffffffffffffffffffff16609e819055505b610bf7609e546009600a0a622dc6c002600019811515610be457fe5b066000190361210d90919063ffffffff16565b609f81905550609d547f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f2609e546040518082815260200191505060405180910390a2600092505b609c80549050831015610ecf57609c83815481101515610c5a57fe5b906000526020600020906002020191508160000160009054906101000a900460ff1615610ec257610d4b8260000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d415780601f10610d1657610100808354040283529160200191610d41565b820191906000526020600020905b815481529060010190602001808311610d2457829003601f168201915b5050505050612157565b9050801515610ec1578160000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8091ecaaa54ebb82e02d36c2c336528e0fcb9b3430fc1291ac88295032b9c26384846001016040518083815260200180602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015610e445780601f10610e1957610100808354040283529160200191610e44565b820191906000526020600020905b815481529060010190602001808311610e2757829003601f168201915b5050935050505060405180910390a26040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5472616e73616374696f6e204661696c6564000000000000000000000000000081525060200191505060405180910390fd5b5b8280600101935050610c3e565b609e5493505b505050919050565b610ee561189c565b1515610ef057600080fd5b609c6060604051908101604052806001151581526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184848080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050508152509080600181540180825580915050906001820390600052602060002090600202016000909192909190915060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160010190805190602001906110079291906124e3565b50505050505050565b6000609e54905090565b60008083600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561105a57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561109557600080fd5b6111248460a160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120c390919063ffffffff16565b60a160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111b9609f548561217e90919063ffffffff16565b915061120d8260a060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120c390919063ffffffff16565b60a060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506112a28260a060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461200690919063ffffffff16565b60a060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a36001925050509392505050565b6000606960009054906101000a900460ff16905090565b60006113ff8260a160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461200690919063ffffffff16565b60a160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560a160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b61157261189c565b151561157d57600080fd5b609c80549050811015156115f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f696e646578206f7574206f6620626f756e64730000000000000000000000000081525060200191505060405180910390fd5b6001609c805490500381101561170b57609c6001609c805490500381548110151561162057fe5b9060005260206000209060020201609c8281548110151561163d57fe5b90600052602060002090600202016000820160009054906101000a900460ff168160000160006101000a81548160ff0219169083151502179055506000820160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160000160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018201816001019080546001816001161561010002031660029004611706929190612563565b509050505b609c80548091906001900361172091906125ea565b5050565b61172c61189c565b151561173757600080fd5b609c80549050821015156117d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f696e646578206d75737420626520696e2072616e6765206f662073746f72656481526020017f207478206c69737400000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80609c838154811015156117e957fe5b906000526020600020906002020160000160006101000a81548160ff0219169083151502179055505050565b600061186b609f5460a060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461210d90919063ffffffff16565b9050919050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6000609c80549050905090565b606060688054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156119995780601f1061196e57610100808354040283529160200191611999565b820191906000526020600020905b81548152906001019060200180831161197c57829003601f168201915b5050505050905090565b609c818154811015156119b257fe5b90600052602060002090600202016000915090508060000160009054906101000a900460ff16908060000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a975780601f10611a6c57610100808354040283529160200191611a97565b820191906000526020600020905b815481529060010190602001808311611a7a57829003601f168201915b5050505050905083565b60008060a160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508083101515611bb357600060a160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c47565b611bc683826120c390919063ffffffff16565b60a160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560a160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60008083600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611d7357600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611dae57600080fd5b611dc3609f548561217e90919063ffffffff16565b9150611e178260a060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120c390919063ffffffff16565b60a060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611eac8260a060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461200690919063ffffffff16565b60a060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a360019250505092915050565b600060a160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611fef61189c565b1515611ffa57600080fd5b6120038161224b565b50565b6000808284019050838110151515612086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600060ff60019060020a0282141515156120a957600080fd5b600082126120b757816120bc565b816000035b9050919050565b600061210583836040805190810160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612358565b905092915050565b600061214f83836040805190810160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612419565b905092915050565b6000806040516020840160008286518360008a6187965a03f1925050508091505092915050565b60008060008414156121935760009150612244565b82840290508284828115156121a457fe5b04141515612240576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81526020017f770000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8091505b5092915050565b600060345414151561225c57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561229857600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808484111583901515612408576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156123cd5780820151818401526020810190506123b2565b50505050905090810190601f1680156123fa5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508385039050809150509392505050565b60008060008411839015156124c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561248e578082015181840152602081019050612473565b50505050905090810190601f1680156124bb5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5083858115156124d557fe5b049050809150509392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061252457805160ff1916838001178555612552565b82800160010185558215612552579182015b82811115612551578251825591602001919060010190612536565b5b50905061255f919061261c565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061259c57805485556125d9565b828001600101855582156125d957600052602060002091601f016020900482015b828111156125d85782548255916001019190600101906125bd565b5b5090506125e6919061261c565b5090565b815481835581811115612617576002028160020283600052602060002091820191016126169190612641565b5b505050565b61263e91905b8082111561263a576000816000905550600101612622565b5090565b90565b6126a891905b808211156126a457600080820160006101000a81549060ff02191690556000820160016101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560018201600061269b91906126ab565b50600201612647565b5090565b90565b50805460018160011615610100020316600290046000825580601f106126d157506126f0565b601f0160209004906000526020600020908101906126ef919061261c565b5b50565b60008060019054906101000a900460ff168061271357506127126129f3565b5b8061272a57506000809054906101000a900460ff16155b15156127c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f436f6e747261637420696e7374616e63652068617320616c726561647920626581526020017f656e20696e697469616c697a656400000000000000000000000000000000000081525060400191505060405180910390fd5b600060019054906101000a900460ff1690506001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff02191690831515021790555081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600060348190555080600060016101000a81548160ff0219169083151502179055505050565b60008060019054906101000a900460ff168061289257506128916129f3565b5b806128a957506000809054906101000a900460ff16155b1515612943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f436f6e747261637420696e7374616e63652068617320616c726561647920626581526020017f656e20696e697469616c697a656400000000000000000000000000000000000081525060400191505060405180910390fd5b600060019054906101000a900460ff1690506001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff02191690831515021790555083606790805190602001906129a0929190612a04565b5082606890805190602001906129b7929190612a04565b5081606960006101000a81548160ff021916908360ff16021790555080600060016101000a81548160ff02191690831515021790555050505050565b600080303b90506000811491505090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612a4557805160ff1916838001178555612a73565b82800160010185558215612a73579182015b82811115612a72578251825591602001919060010190612a57565b5b509050612a80919061261c565b50905600a165627a7a72305820b9154e5583810d770057125b3e22e10e70b03d437771300490bd8c449543c5310029

Deployed Bytecode

0x60806040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630577c02b1461012257806306fdde0314610139578063095ea7b3146101c95780630ab114f91461022e578063126e19be1461026f57806318160ddd146102ca57806323b872dd146102f5578063313ce5671461037a57806339509351146103ab57806346c3bd1f146104105780636e9dde991461043d57806370a08231146104765780638da5cb5b146104cd5780638f32d59b1461052457806391d4ec181461055357806395d89b411461057e5780639ace38c21461060e578063a457c2d7146106f2578063a9059cbb14610757578063dd62ed3e146107bc578063f2fde38b14610833575b600080fd5b34801561012e57600080fd5b50610137610876565b005b34801561014557600080fd5b5061014e610929565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561018e578082015181840152602081019050610173565b50505050905090810190601f1680156101bb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101d557600080fd5b50610214600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506109cb565b604051808215151515815260200191505060405180910390f35b34801561023a57600080fd5b5061025960048036038101908080359060200190929190505050610abd565b6040518082815260200191505060405180910390f35b34801561027b57600080fd5b506102c8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001919091929391929390505050610edd565b005b3480156102d657600080fd5b506102df611010565b6040518082815260200191505060405180910390f35b34801561030157600080fd5b50610360600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061101a565b604051808215151515815260200191505060405180910390f35b34801561038657600080fd5b5061038f611357565b604051808260ff1660ff16815260200191505060405180910390f35b3480156103b757600080fd5b506103f6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061136e565b604051808215151515815260200191505060405180910390f35b34801561041c57600080fd5b5061043b6004803603810190808035906020019092919050505061156a565b005b34801561044957600080fd5b5061047460048036038101908080359060200190929190803515159060200190929190505050611724565b005b34801561048257600080fd5b506104b7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611815565b6040518082815260200191505060405180910390f35b3480156104d957600080fd5b506104e2611872565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561053057600080fd5b5061053961189c565b604051808215151515815260200191505060405180910390f35b34801561055f57600080fd5b506105686118f4565b6040518082815260200191505060405180910390f35b34801561058a57600080fd5b50610593611901565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105d35780820151818401526020810190506105b8565b50505050905090810190601f1680156106005780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561061a57600080fd5b50610639600480360381019080803590602001909291905050506119a3565b60405180841515151581526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156106b557808201518184015260208101905061069a565b50505050905090810190601f1680156106e25780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b3480156106fe57600080fd5b5061073d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611aa1565b604051808215151515815260200191505060405180910390f35b34801561076357600080fd5b506107a2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611d33565b604051808215151515815260200191505060405180910390f35b3480156107c857600080fd5b5061081d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f60565b6040518082815260200191505060405180910390f35b34801561083f57600080fd5b50610874600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fe7565b005b61087e61189c565b151561088957600080fd5b600060345414151561089a57600080fd5b7f88edfb4ea96673000ad101b18d1c7dbd727c5d92217c8d0b9966f2aaf77e93f4603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a16001603481905550565b606060678054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109c15780601f10610996576101008083540402835291602001916109c1565b820191906000526020600020905b8154815290600101906020018083116109a457829003601f168201915b5050505050905090565b60008160a160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600080600080610acb61189c565b1515610ad657600080fd5b610aec6001609d5461200690919063ffffffff16565b609d819055506000851415610b4157609d547f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f2609e546040518082815260200191505060405180910390a2609e549350610ed5565b6000851215610b7257610b67610b5686612090565b609e546120c390919063ffffffff16565b609e81905550610b8e565b610b8785609e5461200690919063ffffffff16565b609e819055505b6000196fffffffffffffffffffffffffffffffff16609e541115610bc8576000196fffffffffffffffffffffffffffffffff16609e819055505b610bf7609e546009600a0a622dc6c002600019811515610be457fe5b066000190361210d90919063ffffffff16565b609f81905550609d547f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f2609e546040518082815260200191505060405180910390a2600092505b609c80549050831015610ecf57609c83815481101515610c5a57fe5b906000526020600020906002020191508160000160009054906101000a900460ff1615610ec257610d4b8260000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d415780601f10610d1657610100808354040283529160200191610d41565b820191906000526020600020905b815481529060010190602001808311610d2457829003601f168201915b5050505050612157565b9050801515610ec1578160000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8091ecaaa54ebb82e02d36c2c336528e0fcb9b3430fc1291ac88295032b9c26384846001016040518083815260200180602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015610e445780601f10610e1957610100808354040283529160200191610e44565b820191906000526020600020905b815481529060010190602001808311610e2757829003601f168201915b5050935050505060405180910390a26040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5472616e73616374696f6e204661696c6564000000000000000000000000000081525060200191505060405180910390fd5b5b8280600101935050610c3e565b609e5493505b505050919050565b610ee561189c565b1515610ef057600080fd5b609c6060604051908101604052806001151581526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184848080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050508152509080600181540180825580915050906001820390600052602060002090600202016000909192909190915060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160010190805190602001906110079291906124e3565b50505050505050565b6000609e54905090565b60008083600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561105a57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561109557600080fd5b6111248460a160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120c390919063ffffffff16565b60a160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111b9609f548561217e90919063ffffffff16565b915061120d8260a060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120c390919063ffffffff16565b60a060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506112a28260a060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461200690919063ffffffff16565b60a060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a36001925050509392505050565b6000606960009054906101000a900460ff16905090565b60006113ff8260a160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461200690919063ffffffff16565b60a160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560a160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b61157261189c565b151561157d57600080fd5b609c80549050811015156115f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f696e646578206f7574206f6620626f756e64730000000000000000000000000081525060200191505060405180910390fd5b6001609c805490500381101561170b57609c6001609c805490500381548110151561162057fe5b9060005260206000209060020201609c8281548110151561163d57fe5b90600052602060002090600202016000820160009054906101000a900460ff168160000160006101000a81548160ff0219169083151502179055506000820160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160000160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018201816001019080546001816001161561010002031660029004611706929190612563565b509050505b609c80548091906001900361172091906125ea565b5050565b61172c61189c565b151561173757600080fd5b609c80549050821015156117d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f696e646578206d75737420626520696e2072616e6765206f662073746f72656481526020017f207478206c69737400000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80609c838154811015156117e957fe5b906000526020600020906002020160000160006101000a81548160ff0219169083151502179055505050565b600061186b609f5460a060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461210d90919063ffffffff16565b9050919050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6000609c80549050905090565b606060688054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156119995780601f1061196e57610100808354040283529160200191611999565b820191906000526020600020905b81548152906001019060200180831161197c57829003601f168201915b5050505050905090565b609c818154811015156119b257fe5b90600052602060002090600202016000915090508060000160009054906101000a900460ff16908060000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a975780601f10611a6c57610100808354040283529160200191611a97565b820191906000526020600020905b815481529060010190602001808311611a7a57829003601f168201915b5050505050905083565b60008060a160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508083101515611bb357600060a160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c47565b611bc683826120c390919063ffffffff16565b60a160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560a160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60008083600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611d7357600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611dae57600080fd5b611dc3609f548561217e90919063ffffffff16565b9150611e178260a060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120c390919063ffffffff16565b60a060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611eac8260a060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461200690919063ffffffff16565b60a060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a360019250505092915050565b600060a160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611fef61189c565b1515611ffa57600080fd5b6120038161224b565b50565b6000808284019050838110151515612086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600060ff60019060020a0282141515156120a957600080fd5b600082126120b757816120bc565b816000035b9050919050565b600061210583836040805190810160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612358565b905092915050565b600061214f83836040805190810160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612419565b905092915050565b6000806040516020840160008286518360008a6187965a03f1925050508091505092915050565b60008060008414156121935760009150612244565b82840290508284828115156121a457fe5b04141515612240576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81526020017f770000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8091505b5092915050565b600060345414151561225c57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561229857600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808484111583901515612408576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156123cd5780820151818401526020810190506123b2565b50505050905090810190601f1680156123fa5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508385039050809150509392505050565b60008060008411839015156124c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561248e578082015181840152602081019050612473565b50505050905090810190601f1680156124bb5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5083858115156124d557fe5b049050809150509392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061252457805160ff1916838001178555612552565b82800160010185558215612552579182015b82811115612551578251825591602001919060010190612536565b5b50905061255f919061261c565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061259c57805485556125d9565b828001600101855582156125d957600052602060002091601f016020900482015b828111156125d85782548255916001019190600101906125bd565b5b5090506125e6919061261c565b5090565b815481835581811115612617576002028160020283600052602060002091820191016126169190612641565b5b505050565b61263e91905b8082111561263a576000816000905550600101612622565b5090565b90565b6126a891905b808211156126a457600080820160006101000a81549060ff02191690556000820160016101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560018201600061269b91906126ab565b50600201612647565b5090565b90565b50805460018160011615610100020316600290046000825580601f106126d157506126f0565b601f0160209004906000526020600020908101906126ef919061261c565b5b50565b60008060019054906101000a900460ff168061271357506127126129f3565b5b8061272a57506000809054906101000a900460ff16155b15156127c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f436f6e747261637420696e7374616e63652068617320616c726561647920626581526020017f656e20696e697469616c697a656400000000000000000000000000000000000081525060400191505060405180910390fd5b600060019054906101000a900460ff1690506001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff02191690831515021790555081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600060348190555080600060016101000a81548160ff0219169083151502179055505050565b60008060019054906101000a900460ff168061289257506128916129f3565b5b806128a957506000809054906101000a900460ff16155b1515612943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f436f6e747261637420696e7374616e63652068617320616c726561647920626581526020017f656e20696e697469616c697a656400000000000000000000000000000000000081525060400191505060405180910390fd5b600060019054906101000a900460ff1690506001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff02191690831515021790555083606790805190602001906129a0929190612a04565b5082606890805190602001906129b7929190612a04565b5081606960006101000a81548160ff021916908360ff16021790555080600060016101000a81548160ff02191690831515021790555050505050565b600080303b90506000811491505090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612a4557805160ff1916838001178555612a73565b82800160010185558215612a73579182015b82811115612a72578251825591602001919060010190612a57565b5b509050612a80919061261c565b50905600a165627a7a72305820b9154e5583810d770057125b3e22e10e70b03d437771300490bd8c449543c5310029

Deployed Bytecode Sourcemap

6046:9202:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1718:141;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1718:141:0;;;;;;2910:69;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2910:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2910:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11641:233;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11641:233:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7878:1120;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7878:1120:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13008:253;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13008:253:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9378:123;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9378:123:0;;;;;;;;;;;;;;;;;;;;;;;10512:487;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10512:487:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3064:76;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3064:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;11882:343;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11882:343:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13269:328;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13269:328:0;;;;;;;;;;;;;;;;;;;;;;;;;;13605:246;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13605:246:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9509:159;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9509:159:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1093:72;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1093:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;1237:85;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1237:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;13859:137;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13859:137:0;;;;;;;;;;;;;;;;;;;;;;;2985:73;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2985:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2985:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6400:33;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6400:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;6400:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12487:512;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12487:512:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9678:388;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9678:388:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10076:174;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10076:174:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1328:103;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1328:103:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;1718:141;1207:9;:7;:9::i;:::-;1199:18;;;;;;;;1792:1;1772:16;;:21;1764:30;;;;;;;;1803:23;1819:6;;;;;;;;;;;1803:23;;;;;;;;;;;;;;;;;;;;;;1852:1;1833:16;:20;;;;1718:141::o;2910:69::-;2946:6;2968:5;2961:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2910:69;:::o;11641:233::-;11724:4;11787:5;11746:17;:29;11764:10;11746:29;;;;;;;;;;;;;;;:38;11776:7;11746:38;;;;;;;;;;;;;;;:46;;;;11829:7;11808:36;;11817:10;11808:36;;;11838:5;11808:36;;;;;;;;;;;;;;;;;;11862:4;11855:11;;11641:233;;;;:::o;7878:1120::-;7969:7;8563:6;8620:21;8708:11;1207:9;:7;:9::i;:::-;1199:18;;;;;;;;8000:13;8011:1;8000:6;;:10;;:13;;;;:::i;:::-;7991:6;:22;;;;8047:1;8032:11;:16;8028:119;;;8080:6;;8070:31;8088:12;;8070:31;;;;;;;;;;;;;;;;;;8123:12;;8116:19;;;;8028:119;8177:1;8163:11;:15;8159:193;;;8210:44;8235:17;:11;:15;:17::i;:::-;8210:12;;:16;;:44;;;;:::i;:::-;8195:12;:59;;;;8159:193;;;8302:38;8327:11;8302:12;;:16;;:38;;;;:::i;:::-;8287:12;:53;;;;8159:193;7227:1;7218:11;8383:10;;8368:12;;:25;8364:83;;;7227:1;7218:11;8425:10;;8410:12;:25;;;;8364:83;8478:28;8493:12;;6687:1;6817:2;:12;6804:10;:25;6743:1;6734:11;7063:38;;;;;;;;6743:1;6734:11;7048:54;8478:14;;:28;;;;:::i;:::-;8459:16;:47;;;;8530:6;;8520:31;8538:12;;8520:31;;;;;;;;;;;;;;;;;;8572:1;8563:10;;8558:399;8579:12;:19;;;;8575:1;:23;8558:399;;;8644:12;8657:1;8644:15;;;;;;;;;;;;;;;;;;;;8620:39;;8678:1;:9;;;;;;;;;;;;8674:272;;;8722:35;8735:1;:13;;;;;;;;;;;;8750:1;:6;;8722:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:12;:35::i;:::-;8708:49;;8781:6;8780:7;8776:155;;;8835:1;:13;;;;;;;;;;;;8817:43;;;8850:1;8853;:6;;8817:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8883:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8776:155;8674:272;8600:3;;;;;;;8558:399;;;8978:12;;8971:19;;1224:1;7878:1120;;;;;;:::o;13008:253::-;1207:9;:7;:9::i;:::-;1199:18;;;;;;;;13118:12;13136:116;;;;;;;;;13172:4;13136:116;;;;;;13204:11;13136:116;;;;;;13236:4;;13136:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13118:135;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;13118:135:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;13008:253;;;:::o;9378:123::-;9449:7;9481:12;;9474:19;;9378:123;:::o;10512:487::-;10637:4;10756:16;10615:2;6579:3;6565:18;;:2;:18;;;;6557:27;;;;;;;;6617:4;6603:19;;:2;:19;;;;6595:28;;;;;;;;10697:46;10737:5;10697:17;:23;10715:4;10697:23;;;;;;;;;;;;;;;:35;10721:10;10697:35;;;;;;;;;;;;;;;;:39;;:46;;;;:::i;:::-;10659:17;:23;10677:4;10659:23;;;;;;;;;;;;;;;:35;10683:10;10659:35;;;;;;;;;;;;;;;:84;;;;10775:27;10785:16;;10775:5;:9;;:27;;;;:::i;:::-;10756:46;;10834:32;10857:8;10834:12;:18;10847:4;10834:18;;;;;;;;;;;;;;;;:22;;:32;;;;:::i;:::-;10813:12;:18;10826:4;10813:18;;;;;;;;;;;;;;;:53;;;;10896:30;10917:8;10896:12;:16;10909:2;10896:16;;;;;;;;;;;;;;;;:20;;:30;;;;:::i;:::-;10877:12;:16;10890:2;10877:16;;;;;;;;;;;;;;;:49;;;;10957:2;10942:25;;10951:4;10942:25;;;10961:5;10942:25;;;;;;;;;;;;;;;;;;10987:4;10980:11;;10512:487;;;;;;;:::o;3064:76::-;3104:5;3125:9;;;;;;;;;;;3118:16;;3064:76;:::o;11882:343::-;11980:4;12056:54;12099:10;12056:17;:29;12074:10;12056:29;;;;;;;;;;;;;;;:38;12086:7;12056:38;;;;;;;;;;;;;;;;:42;;:54;;;;:::i;:::-;12002:17;:29;12020:10;12002:29;;;;;;;;;;;;;;;:38;12032:7;12002:38;;;;;;;;;;;;;;;:108;;;;12147:7;12126:69;;12135:10;12126:69;;;12156:17;:29;12174:10;12156:29;;;;;;;;;;;;;;;:38;12186:7;12156:38;;;;;;;;;;;;;;;;12126:69;;;;;;;;;;;;;;;;;;12213:4;12206:11;;11882:343;;;;:::o;13269:328::-;1207:9;:7;:9::i;:::-;1199:18;;;;;;;;13377:12;:19;;;;13369:5;:27;13361:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13467:1;13445:12;:19;;;;:23;13437:5;:31;13433:123;;;13507:12;13542:1;13520:12;:19;;;;:23;13507:37;;;;;;;;;;;;;;;;;;;;13485:12;13498:5;13485:19;;;;;;;;;;;;;;;;;;;;:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;13433:123;13568:12;:21;;;;;;;;;;;;:::i;:::-;;13269:328;:::o;13605:246::-;1207:9;:7;:9::i;:::-;1199:18;;;;;;;;13731:12;:19;;;;13723:5;:27;13715:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13836:7;13806:12;13819:5;13806:19;;;;;;;;;;;;;;;;;;;;:27;;;:37;;;;;;;;;;;;;;;;;;13605:246;;:::o;9509:159::-;9589:7;9621:39;9643:16;;9621:12;:17;9634:3;9621:17;;;;;;;;;;;;;;;;:21;;:39;;;;:::i;:::-;9614:46;;9509:159;;;:::o;1093:72::-;1130:7;1153:6;;;;;;;;;;;1146:13;;1093:72;:::o;1237:85::-;1276:4;1310:6;;;;;;;;;;;1296:20;;:10;:20;;;1289:27;;1237:85;:::o;13859:137::-;13937:7;13969:12;:19;;;;13962:26;;13859:137;:::o;2985:73::-;3023:6;3045:7;3038:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2985:73;:::o;6400:33::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;12487:512::-;12590:4;12612:16;12631:17;:29;12649:10;12631:29;;;;;;;;;;;;;;;:38;12661:7;12631:38;;;;;;;;;;;;;;;;12612:57;;12703:8;12684:15;:27;;12680:205;;;12769:1;12728:17;:29;12746:10;12728:29;;;;;;;;;;;;;;;:38;12758:7;12728:38;;;;;;;;;;;;;;;:42;;;;12680:205;;;12844:29;12857:15;12844:8;:12;;:29;;;;:::i;:::-;12803:17;:29;12821:10;12803:29;;;;;;;;;;;;;;;:38;12833:7;12803:38;;;;;;;;;;;;;;;:70;;;;12680:205;12921:7;12900:69;;12909:10;12900:69;;;12930:17;:29;12948:10;12930:29;;;;;;;;;;;;;;;:38;12960:7;12930:38;;;;;;;;;;;;;;;;12900:69;;;;;;;;;;;;;;;;;;12987:4;12980:11;;12487:512;;;;;:::o;9678:388::-;9785:4;9807:16;9763:2;6579:3;6565:18;;:2;:18;;;;6557:27;;;;;;;;6617:4;6603:19;;:2;:19;;;;6595:28;;;;;;;;9826:27;9836:16;;9826:5;:9;;:27;;;;:::i;:::-;9807:46;;9891:38;9920:8;9891:12;:24;9904:10;9891:24;;;;;;;;;;;;;;;;:28;;:38;;;;:::i;:::-;9864:12;:24;9877:10;9864:24;;;;;;;;;;;;;;;:65;;;;9959:30;9980:8;9959:12;:16;9972:2;9959:16;;;;;;;;;;;;;;;;:20;;:30;;;;:::i;:::-;9940:12;:16;9953:2;9940:16;;;;;;;;;;;;;;;:49;;;;10026:2;10005:31;;10014:10;10005:31;;;10030:5;10005:31;;;;;;;;;;;;;;;;;;10054:4;10047:11;;9678:388;;;;;;:::o;10076:174::-;10176:7;10208:17;:25;10226:6;10208:25;;;;;;;;;;;;;;;:34;10234:7;10208:34;;;;;;;;;;;;;;;;10201:41;;10076:174;;;;:::o;1328:103::-;1207:9;:7;:9::i;:::-;1199:18;;;;;;;;1397:28;1416:8;1397:18;:28::i;:::-;1328:103;:::o;3209:181::-;3267:7;3287:9;3303:1;3299;:5;3287:17;;3328:1;3323;:6;;3315:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3381:1;3374:8;;3209:181;;;;;:::o;5878:161::-;5951:6;4729:3;4723:1;4716:16;;;;5983:1;:15;;5975:24;;;;;;;;6021:1;6017;:5;:14;;6030:1;6017:14;;;6026:1;6025:2;;6017:14;6010:21;;5878:161;;;:::o;3398:136::-;3456:7;3483:43;3487:1;3490;3483:43;;;;;;;;;;;;;;;;;;:3;:43::i;:::-;3476:50;;3398:136;;;;:::o;4000:132::-;4058:7;4085:39;4089:1;4092;4085:39;;;;;;;;;;;;;;;;;;:3;:39::i;:::-;4078:46;;4000:132;;;;:::o;14004:1241::-;14095:4;14117:11;14357:4;14351:11;14485:2;14479:4;14475:13;15130:1;15098:13;15006:4;15000:11;14970;14925:1;14895:11;14866:5;14861:3;14857:15;14514:689;14504:699;;14148:1066;;15231:6;15224:13;;14004:1241;;;;;:::o;3742:250::-;3800:7;3879:9;3829:1;3824;:6;3820:47;;;3854:1;3847:8;;;;3820:47;3895:1;3891;:5;3879:17;;3924:1;3919;3915;:5;;;;;;;;:10;3907:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3983:1;3976:8;;3742:250;;;;;;:::o;1437:210::-;1527:1;1507:16;;:21;1499:30;;;;;;;;1564:1;1544:22;;:8;:22;;;;1536:31;;;;;;;;1608:8;1579:38;;1600:6;;;;;;;;;;;1579:38;;;;;;;;;;;;1633:8;1624:6;;:17;;;;;;;;;;;;;;;;;;1437:210;:::o;3542:192::-;3628:7;3688:9;3661:1;3656;:6;;3664:12;3648:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3648:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3704:1;3700;:5;3688:17;;3725:1;3718:8;;3542:192;;;;;;:::o;4140:191::-;4226:7;4285:9;4258:1;4254;:5;4261:12;4246:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4246:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4301:1;4297;:5;;;;;;;;4285:17;;4322:1;4315:8;;4140:191;;;;;;:::o;6046:9202::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;978:109::-;325:20;218:12;;;;;;;;;;;:31;;;;234:15;:13;:15::i;:::-;218:31;:47;;;;254:11;;;;;;;;;;;253:12;218:47;210:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;348:12;;;;;;;;;;;325:35;;382:4;367:12;;:19;;;;;;;;;;;;;;;;;;407:4;393:11;;:18;;;;;;;;;;;;;;;;;;1051:6;1042;;:15;;;;;;;;;;;;;;;;;;1080:1;1061:16;:20;;;;445:15;430:12;;:30;;;;;;;;;;;;;;;;;;978:109;;:::o;2744:160::-;325:20;218:12;;;;;;;;;;;:31;;;;234:15;:13;:15::i;:::-;218:31;:47;;;;254:11;;;;;;;;;;;253:12;218:47;210:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;348:12;;;;;;;;;;;325:35;;382:4;367:12;;:19;;;;;;;;;;;;;;;;;;407:4;393:11;;:18;;;;;;;;;;;;;;;;;;2844:4;2836:5;:12;;;;;;;;;;;;:::i;:::-;;2865:6;2855:7;:16;;;;;;;;;;;;:::i;:::-;;2890:8;2878:9;;:20;;;;;;;;;;;;;;;;;;445:15;430:12;;:30;;;;;;;;;;;;;;;;;;2744:160;;;;:::o;472:142::-;519:4;532:10;578:7;566:20;560:26;;607:1;601:2;:7;594:14;;472:142;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o

Swarm Source

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