ETH Price: $3,011.37 (+3.68%)
Gas: 4 Gwei

Token

Ludena Protocol (LDN)
 

Overview

Max Total Supply

1,200,000,000 LDN

Holders

6,752 (0.00%)

Market

Price

$0.00 @ 0.000000 ETH

Onchain Market Cap

$30,888.00

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000006930680549 LDN

Value
$0.00 ( ~0 Eth) [0.0000%]
0x8f053c16bec4f980c3d94d38f815d5b9346e67b0
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Ludena Protocol is a gamified social platform, connecting gamers to a single application where they can play, trade & share all things gaming.

Market

Volume (24H):$6,798.92
Market Capitalization:$0.00
Circulating Supply:0.00 LDN
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.

Contract Source Code Verified (Exact Match)

Contract Name:
LDNToken

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-05-20
*/

pragma solidity ^0.5.17;

library SafeMath {
    /**
    * @dev Multiplies two unsigned integers, reverts on overflow.
    */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b);

        return c;
    }

    /**
    * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.
    */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
    * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).
    */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a);
        uint256 c = a - b;

        return c;
    }

    /**
    * @dev Adds two unsigned integers, reverts on overflow.
    */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a);

        return c;
    }

    /**
    * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),
    * reverts when dividing by zero.
    */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0);
        return a % b;
    }
}

library Roles {
    struct Role {
        mapping (address => bool) bearer;
    }

    /**
     * @dev give an account access to this role
     */
    function add(Role storage role, address account) internal {
        require(account != address(0));
        require(!has(role, account));

        role.bearer[account] = true;
    }

    /**
     * @dev remove an account's access to this role
     */
    function remove(Role storage role, address account) internal {
        require(account != address(0));
        require(has(role, account));

        role.bearer[account] = false;
    }

    /**
     * @dev check if an account has this role
     * @return bool
     */
    function has(Role storage role, address account) internal view returns (bool) {
        require(account != address(0));
        return role.bearer[account];
    }
}

contract Ownable {
    address public owner;
    address public newOwner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() public {
        owner = msg.sender;
        newOwner = address(0);
    }

    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }
    modifier onlyNewOwner() {
        require(msg.sender != address(0));
        require(msg.sender == newOwner);
        _;
    }
    
    function isOwner(address account) public view returns (bool) {
        if( account == owner ){
            return true;
        }
        else {
            return false;
        }
    }

    function transferOwnership(address _newOwner) public onlyOwner {
        require(_newOwner != address(0));
        newOwner = _newOwner;
    }

    function acceptOwnership() public onlyNewOwner returns(bool) {
        emit OwnershipTransferred(owner, newOwner);        
        owner = newOwner;
        newOwner = address(0);
    }
}

contract PauserRole is Ownable{
    using Roles for Roles.Role;

    event PauserAdded(address indexed account);
    event PauserRemoved(address indexed account);

    Roles.Role private _pausers;

    constructor () internal {
        _addPauser(msg.sender);
    }

    modifier onlyPauser() {
        require(isPauser(msg.sender)|| isOwner(msg.sender));
        _;
    }

    function isPauser(address account) public view returns (bool) {
        return _pausers.has(account);
    }

    function addPauser(address account) public onlyPauser {
        _addPauser(account);
    }
    
    function removePauser(address account) public onlyOwner {
        _removePauser(account);
    }

    function renouncePauser() public {
        _removePauser(msg.sender);
    }

    function _addPauser(address account) internal {
        _pausers.add(account);
        emit PauserAdded(account);
    }

    function _removePauser(address account) internal {
        _pausers.remove(account);
        emit PauserRemoved(account);
    }
}

contract Pausable is PauserRole {
    event Paused(address account);
    event Unpaused(address account);

    bool private _paused;

    constructor () internal {
        _paused = false;
    }

    /**
     * @return true if the contract is paused, false otherwise.
     */
    function paused() public view returns (bool) {
        return _paused;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is not paused.
     */
    modifier whenNotPaused() {
        require(!_paused);
        _;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is paused.
     */
    modifier whenPaused() {
        require(_paused);
        _;
    }

    /**
     * @dev called by the owner to pause, triggers stopped state
     */
    function pause() public onlyPauser whenNotPaused {
        _paused = true;
        emit Paused(msg.sender);
    }

    /**
     * @dev called by the owner to unpause, returns to normal state
     */
    function unpause() public onlyPauser whenPaused {
        _paused = false;
        emit Unpaused(msg.sender);
    }
}

interface IERC20 {
    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);

    function totalSupply() external view returns (uint256);

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

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

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

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

contract ERC20 is IERC20 {
    using SafeMath for uint256;

    mapping (address => uint256) internal _balances;

    mapping (address => mapping (address => uint256)) internal _allowed;

    uint256 private _totalSupply;

    /**
    * @dev Total number of tokens in existence
    */
    function totalSupply() public view returns (uint256) {
        return _totalSupply;
    }

    /**
    * @dev Gets the balance of the specified address.
    * @param owner The address to query the balance of.
    * @return An uint256 representing the amount owned by the passed address.
    */
    function balanceOf(address owner) public view returns (uint256) {
        return _balances[owner];
    }

    /**
     * @dev Function to check the amount of tokens that an owner allowed to a spender.
     * @param owner address The address which owns the funds.
     * @param spender address The address which will spend the funds.
     * @return A uint256 specifying the amount of tokens still available for the spender.
     */
    function allowance(address owner, address spender) public view returns (uint256) {
        return _allowed[owner][spender];
    }

    /**
    * @dev Transfer token for a specified address
    * @param to The address to transfer to.
    * @param value The amount to be transferred.
    */
    function transfer(address to, uint256 value) public returns (bool) {
        _transfer(msg.sender, to, value);
        return true;
    }

    /**
     * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
     * Beware that changing an allowance with this method brings the risk that someone may use both the old
     * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
     * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     * @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) {
        require(spender != address(0));

        _allowed[msg.sender][spender] = value;
        emit Approval(msg.sender, spender, value);
        return true;
    }

    /**
     * @dev Transfer tokens from one address to another.
     * Note that while this function emits an Approval event, this is not required as per the specification,
     * and other compliant implementations may not emit the event.
     * @param from address The address which you want to send tokens from
     * @param to address The address which you want to transfer to
     * @param value uint256 the amount of tokens to be transferred
     */
    function transferFrom(address from, address to, uint256 value) public returns (bool) {
        _allowed[from][msg.sender] = _allowed[from][msg.sender].sub(value);
        _transfer(from, to, value);
        emit Approval(from, msg.sender, _allowed[from][msg.sender]);
        return true;
    }

    /**
     * @dev Increase the amount of tokens that an owner allowed to a spender.
     * approve should be called when allowed_[_spender] == 0. To increment
     * allowed value is better to use this function to avoid 2 calls (and wait until
     * the first transaction is mined)
     * From MonolithDAO Token.sol
     * Emits an Approval event.
     * @param spender The address which will spend the funds.
     * @param addedValue The amount of tokens to increase the allowance by.
     */
    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
        require(spender != address(0));

        _allowed[msg.sender][spender] = _allowed[msg.sender][spender].add(addedValue);
        emit Approval(msg.sender, spender, _allowed[msg.sender][spender]);
        return true;
    }

    /**
     * @dev Decrease the amount of tokens that an owner allowed to a spender.
     * approve should be called when allowed_[_spender] == 0. To decrement
     * allowed value is better to use this function to avoid 2 calls (and wait until
     * the first transaction is mined)
     * From MonolithDAO Token.sol
     * Emits an Approval event.
     * @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) {
        require(spender != address(0));

        _allowed[msg.sender][spender] = _allowed[msg.sender][spender].sub(subtractedValue);
        emit Approval(msg.sender, spender, _allowed[msg.sender][spender]);
        return true;
    }

    /**
    * @dev Transfer token for a specified addresses
    * @param from The address to transfer from.
    * @param to The address to transfer to.
    * @param value The amount to be transferred.
    */
    function _transfer(address from, address to, uint256 value) internal {
        require(to != address(0));

        _balances[from] = _balances[from].sub(value);
        _balances[to] = _balances[to].add(value);
        emit Transfer(from, to, value);
    }

    /**
     * @dev Internal function that mints an amount of the token and assigns it to
     * an account. This encapsulates the modification of balances such that the
     * proper events are emitted.
     * @param account The account that will receive the created tokens.
     * @param value The amount that will be created.
     */
    function _mint(address account, uint256 value) internal {
        require(account != address(0));

        _totalSupply = _totalSupply.add(value);
        _balances[account] = _balances[account].add(value);
        emit Transfer(address(0), account, value);
    }

    /**
     * @dev Internal function that burns an amount of the token of a given
     * account.
     * @param account The account whose tokens will be burnt.
     * @param value The amount that will be burnt.
     */
    function _burn(address account, uint256 value) internal {
        require(account != address(0));

        _totalSupply = _totalSupply.sub(value);
        _balances[account] = _balances[account].sub(value);
        emit Transfer(account, address(0), value);
    }

    /**
     * @dev Internal function that burns an amount of the token of a given
     * account, deducting from the sender's allowance for said account. Uses the
     * internal burn function.
     * Emits an Approval event (reflecting the reduced allowance).
     * @param account The account whose tokens will be burnt.
     * @param value The amount that will be burnt.
     */
    function _burnFrom(address account, uint256 value) internal {
        _allowed[account][msg.sender] = _allowed[account][msg.sender].sub(value);
        _burn(account, value);
        emit Approval(account, msg.sender, _allowed[account][msg.sender]);
    }
}

contract ERC20Pausable is ERC20, Pausable {
    function transfer(address to, uint256 value) public whenNotPaused returns (bool) {
        return super.transfer(to, value);
    }

    function transferFrom(address from, address to, uint256 value) public whenNotPaused returns (bool) {
        return super.transferFrom(from, to, value);
    }
    
    /*
     * approve/increaseApprove/decreaseApprove can be set when Paused state
     */
     
    /*
     * function approve(address spender, uint256 value) public whenNotPaused returns (bool) {
     *     return super.approve(spender, value);
     * }
     *
     * function increaseAllowance(address spender, uint addedValue) public whenNotPaused returns (bool success) {
     *     return super.increaseAllowance(spender, addedValue);
     * }
     *
     * function decreaseAllowance(address spender, uint subtractedValue) public whenNotPaused returns (bool success) {
     *     return super.decreaseAllowance(spender, subtractedValue);
     * }
     */
}

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

    constructor (string memory name, string memory symbol, uint8 decimals) public {
        _name = name;
        _symbol = symbol;
        _decimals = decimals;
    }

    /**
     * @return the name of the token.
     */
    function name() public view returns (string memory) {
        return _name;
    }

    /**
     * @return the symbol of the token.
     */
    function symbol() public view returns (string memory) {
        return _symbol;
    }

    /**
     * @return the number of decimals of the token.
     */
    function decimals() public view returns (uint8) {
        return _decimals;
    }
}

contract LDNToken is ERC20Detailed, ERC20Pausable {
    
    struct LockInfo {
        uint256 _releaseTime;
        uint256 _amount;
        uint256 _remainingAmount;
        uint256 _termOfRound;
        uint256 _unlockAmountPerRound;
    }
    
    address public implementation;

    mapping (address => LockInfo[]) public timelockList;
	mapping (address => bool) public frozenAccount;
    
    event Freeze(address indexed holder);
    event Unfreeze(address indexed holder);
    event Lock(address indexed holder, uint256 value, uint256 releaseTime);
    event Unlock(address indexed holder, uint256 value);

    modifier notFrozen(address _holder) {
        require(!frozenAccount[_holder]);
        _;
    }
    
    
    
    constructor() ERC20Detailed("Ludena Protocol", "LDN", 18) public  {
        
        _mint(msg.sender, 1200000000 * (10 ** 18));
    }
    
    function balanceOf(address owner) public view returns (uint256) {
        
        uint256 totalBalance = super.balanceOf(owner);
        if( timelockList[owner].length >0 ){
            for(uint i=0; i<timelockList[owner].length;i++){
                totalBalance = totalBalance.add( timelockList[owner][i]._remainingAmount );
            }
        }
        
        return totalBalance;
    }
    
    function transfer(address to, uint256 value) public notFrozen(msg.sender) returns (bool) {
        if (timelockList[msg.sender].length > 0 ) {
            _autoUnlock(msg.sender);            
        }
        return super.transfer(to, value);
    }

    function transferFrom(address from, address to, uint256 value) public notFrozen(from) returns (bool) {
        if (timelockList[from].length > 0) {
            _autoUnlock(from);            
        }
        return super.transferFrom(from, to, value);
    }
    
    function freezeAccount(address holder) public onlyPauser returns (bool) {
        require(!frozenAccount[holder]);
        frozenAccount[holder] = true;
        emit Freeze(holder);
        return true;
    }

    function unfreezeAccount(address holder) public onlyPauser returns (bool) {
        require(frozenAccount[holder]);
        frozenAccount[holder] = false;
        emit Unfreeze(holder);
        return true;
    }
    
    function lock(address holder, uint256 value, uint256 releaseStart, uint256 termOfRound, uint256 unlockAmountPerRound) public onlyPauser returns (bool) {
        
        _lock(holder, value, releaseStart, termOfRound, unlockAmountPerRound);
        
        return true;
    }
    
    function transferWithLock(address holder, uint256 value, uint256 releaseTime) public onlyPauser returns (bool) {
        _transfer(msg.sender, holder, value);
        _lock(holder, value, releaseTime, 1, value);
        return true;
    }

    function transferWithSliceLock(address holder, uint256 value, uint256 releaseStart, uint256 termOfRound, uint256 unlockAmountPerRound) public onlyPauser returns (bool) {
        _transfer(msg.sender, holder, value);
        _lock(holder, value, releaseStart, termOfRound, unlockAmountPerRound);
        return true;
    }
    
    /**
     * @dev Upgrades the implementation address
     * @param _newImplementation address of the new implementation
     */
    function upgradeTo(address _newImplementation) public onlyOwner {
        require(implementation != _newImplementation);
        _setImplementation(_newImplementation);
    }
    
    function _lock(address holder, uint256 value, uint256 releaseTime, uint256 termOfRound, uint256 unlockAmountPerRound) internal returns(bool) {
        require(_balances[holder] >= value,"There is not enough balances of holder.");
        _balances[holder] = _balances[holder].sub(value);
        timelockList[holder].push( LockInfo(releaseTime, value, value, termOfRound, unlockAmountPerRound) );
        
        emit Lock(holder, value, releaseTime);
        return true;
    }
    
    function _releaseTimeLock(address _holder, uint256 _idx) internal returns(bool) {
        require(_idx < timelockList[_holder].length);

        // If lock status of holder is finished, delete lockup info. 
        LockInfo storage info = timelockList[_holder][_idx];
        uint256 releaseAmount = info._unlockAmountPerRound;
        uint256 sinceFrom = now.sub(info._releaseTime);
        uint256 sinceRound = sinceFrom.div(info._termOfRound);
        releaseAmount = releaseAmount.add( sinceRound.mul(info._unlockAmountPerRound) );

        if(releaseAmount >= info._remainingAmount) {            
            releaseAmount = info._remainingAmount;

            delete timelockList[_holder][_idx];
            timelockList[_holder][_idx] = timelockList[_holder][timelockList[_holder].length.sub(1)];
            timelockList[_holder].length -=1;
            
            emit Unlock(_holder, releaseAmount);
            _balances[_holder] = _balances[_holder].add(releaseAmount);

            return true;
        } else {
            timelockList[_holder][_idx]._releaseTime     = timelockList[_holder][_idx]._releaseTime.add( sinceRound.add(1).mul(info._termOfRound) );
            timelockList[_holder][_idx]._remainingAmount = timelockList[_holder][_idx]._remainingAmount.sub(releaseAmount);

            emit Unlock(_holder, releaseAmount);
            _balances[_holder] = _balances[_holder].add(releaseAmount);

            return false;
        }
    }

    function _autoUnlock(address holder) internal returns(bool) {
        for(uint256 idx =0; idx < timelockList[holder].length ; idx++ ) {
            if (timelockList[holder][idx]._releaseTime <= now) {
                // If lockupinfo was deleted, loop restart at same position.
                if( _releaseTimeLock(holder, idx) ) {
                    idx -=1;
                }
            }
        }
        return true;
    }
    
    /**
     * @dev Sets the address of the current implementation
     * @param _newImp address of the new implementation
     */
    function _setImplementation(address _newImp) internal {
        implementation = _newImp;
    }
    
    /**
     * @dev Fallback function allowing to perform a delegatecall 
     * to the given implementation. This function will return 
     * whatever the implementation call returns
     */
    function () payable external {
        address impl = implementation;
        require(impl != address(0));
        assembly {
            let ptr := mload(0x40)
            calldatacopy(ptr, 0, calldatasize)
            let result := delegatecall(gas, impl, ptr, calldatasize, 0, 0)
            let size := returndatasize
            returndatacopy(ptr, 0, size)
            
            switch result
            case 0 { revert(ptr, size) }
            default { return(ptr, size) }
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"}],"name":"Freeze","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"releaseTime","type":"uint256"}],"name":"Lock","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"PauserAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"PauserRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"}],"name":"Unfreeze","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Unlock","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addPauser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"freezeAccount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"frozenAccount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isPauser","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"releaseStart","type":"uint256"},{"internalType":"uint256","name":"termOfRound","type":"uint256"},{"internalType":"uint256","name":"unlockAmountPerRound","type":"uint256"}],"name":"lock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removePauser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renouncePauser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"timelockList","outputs":[{"internalType":"uint256","name":"_releaseTime","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_remainingAmount","type":"uint256"},{"internalType":"uint256","name":"_termOfRound","type":"uint256"},{"internalType":"uint256","name":"_unlockAmountPerRound","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"releaseTime","type":"uint256"}],"name":"transferWithLock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"releaseStart","type":"uint256"},{"internalType":"uint256","name":"termOfRound","type":"uint256"},{"internalType":"uint256","name":"unlockAmountPerRound","type":"uint256"}],"name":"transferWithSliceLock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"unfreezeAccount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506040518060400160405280600f81526020017f4c7564656e612050726f746f636f6c00000000000000000000000000000000008152506040518060400160405280600381526020017f4c444e00000000000000000000000000000000000000000000000000000000008152506012826000908051906020019062000098929190620004d0565b508160019080519060200190620000b1929190620004d0565b5080600260006101000a81548160ff021916908360ff16021790555050505033600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200016433620001a360201b60201c565b6000600960006101000a81548160ff0219169083151502179055506200019d336b03e09de2596099e2b00000006200020460201b60201c565b6200057f565b620001be8160086200036760201b620033b21790919060201c565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200023f57600080fd5b6200025b816005546200041d60201b620023fd1790919060201c565b600581905550620002ba81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200041d60201b620023fd1790919060201c565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620003a257600080fd5b620003b482826200043d60201b60201c565b15620003bf57600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000808284019050838110156200043357600080fd5b8091505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200047957600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200051357805160ff191683800117855562000544565b8280016001018555821562000544579182015b828111156200054357825182559160200191906001019062000526565b5b50905062000553919062000557565b5090565b6200057c91905b80821115620005785760008160009055506001016200055e565b5090565b90565b6135aa806200058f6000396000f3fe6080604052600436106101e35760003560e01c806379ba509711610102578063b414d4b611610095578063dd62ed3e11610064578063dd62ed3e14610c97578063de6baccb14610d1c578063f26c159f14610d99578063f2fde38b14610e02576101e3565b8063b414d4b614610abb578063d26c4a7614610b24578063d4ee1d9014610baf578063dae7688014610c06576101e3565b80638da5cb5b116100d15780638da5cb5b146108ee57806395d89b4114610945578063a457c2d7146109d5578063a9059cbb14610a48576101e3565b806379ba5097146107c65780637c759d0d146107f557806382dc1ec4146108865780638456cb59146108d7576101e3565b80633f4ba83a1161017a5780636b2c0f55116101495780636b2c0f55146106905780636ef8d66d146106e157806370a08231146106f8578063788649ea1461075d576101e3565b80633f4ba83a1461058a57806346fbf68e146105a15780635c60da1b1461060a5780635c975abb14610661576101e3565b80632f54bf6e116101b65780632f54bf6e1461042c578063313ce567146104955780633659cfe6146104c65780633950935114610517576101e3565b806306fdde031461026b578063095ea7b3146102fb57806318160ddd1461036e57806323b872dd14610399575b6000600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561024457600080fd5b60405136600082376000803683855af43d806000843e8160008114610267578184f35b8184fd5b34801561027757600080fd5b50610280610e53565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102c05780820151818401526020810190506102a5565b50505050905090810190601f1680156102ed5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561030757600080fd5b506103546004803603604081101561031e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ef5565b604051808215151515815260200191505060405180910390f35b34801561037a57600080fd5b50610383611020565b6040518082815260200191505060405180910390f35b3480156103a557600080fd5b50610412600480360360608110156103bc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061102a565b604051808215151515815260200191505060405180910390f35b34801561043857600080fd5b5061047b6004803603602081101561044f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110ef565b604051808215151515815260200191505060405180910390f35b3480156104a157600080fd5b506104aa61115a565b604051808260ff1660ff16815260200191505060405180910390f35b3480156104d257600080fd5b50610515600480360360208110156104e957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611171565b005b34801561052357600080fd5b506105706004803603604081101561053a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611232565b604051808215151515815260200191505060405180910390f35b34801561059657600080fd5b5061059f611467565b005b3480156105ad57600080fd5b506105f0600480360360208110156105c457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611522565b604051808215151515815260200191505060405180910390f35b34801561061657600080fd5b5061061f61153f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561066d57600080fd5b50610676611565565b604051808215151515815260200191505060405180910390f35b34801561069c57600080fd5b506106df600480360360208110156106b357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061157c565b005b3480156106ed57600080fd5b506106f66115e2565b005b34801561070457600080fd5b506107476004803603602081101561071b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115ed565b6040518082815260200191505060405180910390f35b34801561076957600080fd5b506107ac6004803603602081101561078057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061171e565b604051808215151515815260200191505060405180910390f35b3480156107d257600080fd5b506107db61183c565b604051808215151515815260200191505060405180910390f35b34801561080157600080fd5b5061086c600480360360a081101561081857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050611a17565b604051808215151515815260200191505060405180910390f35b34801561089257600080fd5b506108d5600480360360208110156108a957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a56565b005b3480156108e357600080fd5b506108ec611a84565b005b3480156108fa57600080fd5b50610903611b40565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561095157600080fd5b5061095a611b66565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561099a57808201518184015260208101905061097f565b50505050905090810190601f1680156109c75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156109e157600080fd5b50610a2e600480360360408110156109f857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611c08565b604051808215151515815260200191505060405180910390f35b348015610a5457600080fd5b50610aa160048036036040811015610a6b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e3d565b604051808215151515815260200191505060405180910390f35b348015610ac757600080fd5b50610b0a60048036036020811015610ade57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f00565b604051808215151515815260200191505060405180910390f35b348015610b3057600080fd5b50610b7d60048036036040811015610b4757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611f20565b604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390f35b348015610bbb57600080fd5b50610bc4611f70565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c1257600080fd5b50610c7d600480360360a0811015610c2957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050611f96565b604051808215151515815260200191505060405180910390f35b348015610ca357600080fd5b50610d0660048036036040811015610cba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fe0565b6040518082815260200191505060405180910390f35b348015610d2857600080fd5b50610d7f60048036036060811015610d3f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050612067565b604051808215151515815260200191505060405180910390f35b348015610da557600080fd5b50610de860048036036020811015610dbc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120b0565b604051808215151515815260200191505060405180910390f35b348015610e0e57600080fd5b50610e5160048036036020811015610e2557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121cf565b005b606060008054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610eeb5780601f10610ec057610100808354040283529160200191610eeb565b820191906000526020600020905b815481529060010190602001808311610ece57829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f3057600080fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600554905090565b600083600b60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561108457600080fd5b6000600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905011156110da576110d8856122a7565b505b6110e5858585612389565b9150509392505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111505760019050611155565b600090505b919050565b6000600260009054906101000a900460ff16905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111cb57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561122657600080fd5b61122f816123b9565b50565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561126d57600080fd5b6112fc82600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123fd90919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b61147033611522565b80611480575061147f336110ef565b5b61148957600080fd5b600960009054906101000a900460ff166114a257600080fd5b6000600960006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600061153882600861241c90919063ffffffff16565b9050919050565b600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600960009054906101000a900460ff16905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115d657600080fd5b6115df816124ae565b50565b6115eb336124ae565b565b6000806115f983612508565b90506000600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905011156117155760008090505b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905081101561171357611704600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106116e357fe5b906000526020600020906005020160020154836123fd90919063ffffffff16565b9150808060010191505061164c565b505b80915050919050565b600061172933611522565b806117395750611738336110ef565b5b61174257600080fd5b600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661179857600080fd5b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fca5069937e68fd197927055037f59d7c90bf75ac104e6e375539ef480c3ad6ee60405160405180910390a260019050919050565b60008073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561187757600080fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146118d157600080fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555090565b6000611a2233611522565b80611a325750611a31336110ef565b5b611a3b57600080fd5b611a488686868686612551565b506001905095945050505050565b611a5f33611522565b80611a6f5750611a6e336110ef565b5b611a7857600080fd5b611a81816127a9565b50565b611a8d33611522565b80611a9d5750611a9c336110ef565b5b611aa657600080fd5b600960009054906101000a900460ff1615611ac057600080fd5b6001600960006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611bfe5780601f10611bd357610100808354040283529160200191611bfe565b820191906000526020600020905b815481529060010190602001808311611be157829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c4357600080fd5b611cd282600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461280390919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600033600b60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611e9757600080fd5b6000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490501115611eed57611eeb336122a7565b505b611ef78484612823565b91505092915050565b600b6020528060005260406000206000915054906101000a900460ff1681565b600a6020528160005260406000208181548110611f3957fe5b9060005260206000209060050201600091509150508060000154908060010154908060020154908060030154908060040154905085565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611fa133611522565b80611fb15750611fb0336110ef565b5b611fba57600080fd5b611fc5338787612851565b611fd28686868686612551565b506001905095945050505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600061207233611522565b806120825750612081336110ef565b5b61208b57600080fd5b612096338585612851565b6120a4848484600187612551565b50600190509392505050565b60006120bb33611522565b806120cb57506120ca336110ef565b5b6120d457600080fd5b600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561212b57600080fd5b6001600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167faf85b60d26151edd11443b704d424da6c43d0468f2235ebae3d1904dbc32304960405160405180910390a260019050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461222957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561226357600080fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600090505b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905081101561237f5742600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061234457fe5b90600052602060002090600502016000015411612372576123658382612a1f565b15612371576001810390505b5b80806001019150506122af565b5060019050919050565b6000600960009054906101000a900460ff16156123a557600080fd5b6123b08484846130ff565b90509392505050565b80600960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008082840190508381101561241257600080fd5b8091505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561245757600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6124c281600861330790919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e60405160405180910390a250565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600084600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156125eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018061354f6027913960400191505060405180910390fd5b61263d85600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461280390919063ffffffff16565b600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060a00160405280868152602001878152602001878152602001858152602001848152509080600181540180825580915050906001820390600052602060002090600502016000909192909190915060008201518160000155602082015181600101556040820151816002015560608201518160030155608082015181600401555050508573ffffffffffffffffffffffffffffffffffffffff167f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b8686604051808381526020018281526020019250505060405180910390a26001905095945050505050565b6127bd8160086133b290919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b60008282111561281257600080fd5b600082840390508091505092915050565b6000600960009054906101000a900460ff161561283f57600080fd5b612849838361345e565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561288b57600080fd5b6128dd81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461280390919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061297281600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123fd90919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508210612a6f57600080fd5b6000600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110612abb57fe5b906000526020600020906005020190506000816004015490506000612aed83600001544261280390919063ffffffff16565b90506000612b0884600301548361347590919063ffffffff16565b9050612b33612b2485600401548361349b90919063ffffffff16565b846123fd90919063ffffffff16565b925083600201548310612e4a5783600201549250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208681548110612b9157fe5b906000526020600020906005020160008082016000905560018201600090556002820160009055600382016000905560048201600090555050600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612c5f6001600a60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905061280390919063ffffffff16565b81548110612c6957fe5b9060005260206000209060050201600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208781548110612cc157fe5b906000526020600020906005020160008201548160000155600182015481600101556002820154816002015560038201548160030155600482015481600401559050506001600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081818054905003915081612d5991906134d5565b508673ffffffffffffffffffffffffffffffffffffffff167f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f1846040518082815260200191505060405180910390a2612dfa83600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123fd90919063ffffffff16565b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060019450505050506130f9565b612ee1612e778560030154612e696001856123fd90919063ffffffff16565b61349b90919063ffffffff16565b600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208881548110612ec157fe5b9060005260206000209060050201600001546123fd90919063ffffffff16565b600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208781548110612f2b57fe5b906000526020600020906005020160000181905550612fae83600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208881548110612f8e57fe5b90600052602060002090600502016002015461280390919063ffffffff16565b600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208781548110612ff857fe5b9060005260206000209060050201600201819055508673ffffffffffffffffffffffffffffffffffffffff167f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f1846040518082815260200191505060405180910390a26130ad83600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123fd90919063ffffffff16565b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060009450505050505b92915050565b600061319082600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461280390919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061321b848484612851565b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600190509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561334157600080fd5b61334b828261241c565b61335457600080fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156133ec57600080fd5b6133f6828261241c565b1561340057600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600061346b338484612851565b6001905092915050565b600080821161348357600080fd5b600082848161348e57fe5b0490508091505092915050565b6000808314156134ae57600090506134cf565b60008284029050828482816134bf57fe5b04146134ca57600080fd5b809150505b92915050565b815481835581811115613502576005028160050283600052602060002091820191016135019190613507565b5b505050565b61354b91905b808211156135475760008082016000905560018201600090556002820160009055600382016000905560048201600090555060050161350d565b5090565b9056fe5468657265206973206e6f7420656e6f7567682062616c616e636573206f6620686f6c6465722ea265627a7a72315820b0a2b33a9c1b8e38e6f564e06216a895945aefce5c1d35c39cf2b6878d09101564736f6c63430005110032

Deployed Bytecode

0x6080604052600436106101e35760003560e01c806379ba509711610102578063b414d4b611610095578063dd62ed3e11610064578063dd62ed3e14610c97578063de6baccb14610d1c578063f26c159f14610d99578063f2fde38b14610e02576101e3565b8063b414d4b614610abb578063d26c4a7614610b24578063d4ee1d9014610baf578063dae7688014610c06576101e3565b80638da5cb5b116100d15780638da5cb5b146108ee57806395d89b4114610945578063a457c2d7146109d5578063a9059cbb14610a48576101e3565b806379ba5097146107c65780637c759d0d146107f557806382dc1ec4146108865780638456cb59146108d7576101e3565b80633f4ba83a1161017a5780636b2c0f55116101495780636b2c0f55146106905780636ef8d66d146106e157806370a08231146106f8578063788649ea1461075d576101e3565b80633f4ba83a1461058a57806346fbf68e146105a15780635c60da1b1461060a5780635c975abb14610661576101e3565b80632f54bf6e116101b65780632f54bf6e1461042c578063313ce567146104955780633659cfe6146104c65780633950935114610517576101e3565b806306fdde031461026b578063095ea7b3146102fb57806318160ddd1461036e57806323b872dd14610399575b6000600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561024457600080fd5b60405136600082376000803683855af43d806000843e8160008114610267578184f35b8184fd5b34801561027757600080fd5b50610280610e53565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102c05780820151818401526020810190506102a5565b50505050905090810190601f1680156102ed5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561030757600080fd5b506103546004803603604081101561031e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ef5565b604051808215151515815260200191505060405180910390f35b34801561037a57600080fd5b50610383611020565b6040518082815260200191505060405180910390f35b3480156103a557600080fd5b50610412600480360360608110156103bc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061102a565b604051808215151515815260200191505060405180910390f35b34801561043857600080fd5b5061047b6004803603602081101561044f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110ef565b604051808215151515815260200191505060405180910390f35b3480156104a157600080fd5b506104aa61115a565b604051808260ff1660ff16815260200191505060405180910390f35b3480156104d257600080fd5b50610515600480360360208110156104e957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611171565b005b34801561052357600080fd5b506105706004803603604081101561053a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611232565b604051808215151515815260200191505060405180910390f35b34801561059657600080fd5b5061059f611467565b005b3480156105ad57600080fd5b506105f0600480360360208110156105c457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611522565b604051808215151515815260200191505060405180910390f35b34801561061657600080fd5b5061061f61153f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561066d57600080fd5b50610676611565565b604051808215151515815260200191505060405180910390f35b34801561069c57600080fd5b506106df600480360360208110156106b357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061157c565b005b3480156106ed57600080fd5b506106f66115e2565b005b34801561070457600080fd5b506107476004803603602081101561071b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115ed565b6040518082815260200191505060405180910390f35b34801561076957600080fd5b506107ac6004803603602081101561078057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061171e565b604051808215151515815260200191505060405180910390f35b3480156107d257600080fd5b506107db61183c565b604051808215151515815260200191505060405180910390f35b34801561080157600080fd5b5061086c600480360360a081101561081857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050611a17565b604051808215151515815260200191505060405180910390f35b34801561089257600080fd5b506108d5600480360360208110156108a957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a56565b005b3480156108e357600080fd5b506108ec611a84565b005b3480156108fa57600080fd5b50610903611b40565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561095157600080fd5b5061095a611b66565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561099a57808201518184015260208101905061097f565b50505050905090810190601f1680156109c75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156109e157600080fd5b50610a2e600480360360408110156109f857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611c08565b604051808215151515815260200191505060405180910390f35b348015610a5457600080fd5b50610aa160048036036040811015610a6b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e3d565b604051808215151515815260200191505060405180910390f35b348015610ac757600080fd5b50610b0a60048036036020811015610ade57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f00565b604051808215151515815260200191505060405180910390f35b348015610b3057600080fd5b50610b7d60048036036040811015610b4757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611f20565b604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390f35b348015610bbb57600080fd5b50610bc4611f70565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c1257600080fd5b50610c7d600480360360a0811015610c2957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050611f96565b604051808215151515815260200191505060405180910390f35b348015610ca357600080fd5b50610d0660048036036040811015610cba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fe0565b6040518082815260200191505060405180910390f35b348015610d2857600080fd5b50610d7f60048036036060811015610d3f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050612067565b604051808215151515815260200191505060405180910390f35b348015610da557600080fd5b50610de860048036036020811015610dbc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120b0565b604051808215151515815260200191505060405180910390f35b348015610e0e57600080fd5b50610e5160048036036020811015610e2557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121cf565b005b606060008054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610eeb5780601f10610ec057610100808354040283529160200191610eeb565b820191906000526020600020905b815481529060010190602001808311610ece57829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f3057600080fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600554905090565b600083600b60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561108457600080fd5b6000600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905011156110da576110d8856122a7565b505b6110e5858585612389565b9150509392505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111505760019050611155565b600090505b919050565b6000600260009054906101000a900460ff16905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111cb57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561122657600080fd5b61122f816123b9565b50565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561126d57600080fd5b6112fc82600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123fd90919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b61147033611522565b80611480575061147f336110ef565b5b61148957600080fd5b600960009054906101000a900460ff166114a257600080fd5b6000600960006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600061153882600861241c90919063ffffffff16565b9050919050565b600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600960009054906101000a900460ff16905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115d657600080fd5b6115df816124ae565b50565b6115eb336124ae565b565b6000806115f983612508565b90506000600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905011156117155760008090505b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905081101561171357611704600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106116e357fe5b906000526020600020906005020160020154836123fd90919063ffffffff16565b9150808060010191505061164c565b505b80915050919050565b600061172933611522565b806117395750611738336110ef565b5b61174257600080fd5b600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661179857600080fd5b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fca5069937e68fd197927055037f59d7c90bf75ac104e6e375539ef480c3ad6ee60405160405180910390a260019050919050565b60008073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561187757600080fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146118d157600080fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555090565b6000611a2233611522565b80611a325750611a31336110ef565b5b611a3b57600080fd5b611a488686868686612551565b506001905095945050505050565b611a5f33611522565b80611a6f5750611a6e336110ef565b5b611a7857600080fd5b611a81816127a9565b50565b611a8d33611522565b80611a9d5750611a9c336110ef565b5b611aa657600080fd5b600960009054906101000a900460ff1615611ac057600080fd5b6001600960006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611bfe5780601f10611bd357610100808354040283529160200191611bfe565b820191906000526020600020905b815481529060010190602001808311611be157829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c4357600080fd5b611cd282600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461280390919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600033600b60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611e9757600080fd5b6000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490501115611eed57611eeb336122a7565b505b611ef78484612823565b91505092915050565b600b6020528060005260406000206000915054906101000a900460ff1681565b600a6020528160005260406000208181548110611f3957fe5b9060005260206000209060050201600091509150508060000154908060010154908060020154908060030154908060040154905085565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611fa133611522565b80611fb15750611fb0336110ef565b5b611fba57600080fd5b611fc5338787612851565b611fd28686868686612551565b506001905095945050505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600061207233611522565b806120825750612081336110ef565b5b61208b57600080fd5b612096338585612851565b6120a4848484600187612551565b50600190509392505050565b60006120bb33611522565b806120cb57506120ca336110ef565b5b6120d457600080fd5b600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561212b57600080fd5b6001600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167faf85b60d26151edd11443b704d424da6c43d0468f2235ebae3d1904dbc32304960405160405180910390a260019050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461222957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561226357600080fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600090505b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905081101561237f5742600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061234457fe5b90600052602060002090600502016000015411612372576123658382612a1f565b15612371576001810390505b5b80806001019150506122af565b5060019050919050565b6000600960009054906101000a900460ff16156123a557600080fd5b6123b08484846130ff565b90509392505050565b80600960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008082840190508381101561241257600080fd5b8091505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561245757600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6124c281600861330790919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e60405160405180910390a250565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600084600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156125eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018061354f6027913960400191505060405180910390fd5b61263d85600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461280390919063ffffffff16565b600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060a00160405280868152602001878152602001878152602001858152602001848152509080600181540180825580915050906001820390600052602060002090600502016000909192909190915060008201518160000155602082015181600101556040820151816002015560608201518160030155608082015181600401555050508573ffffffffffffffffffffffffffffffffffffffff167f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b8686604051808381526020018281526020019250505060405180910390a26001905095945050505050565b6127bd8160086133b290919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b60008282111561281257600080fd5b600082840390508091505092915050565b6000600960009054906101000a900460ff161561283f57600080fd5b612849838361345e565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561288b57600080fd5b6128dd81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461280390919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061297281600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123fd90919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508210612a6f57600080fd5b6000600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110612abb57fe5b906000526020600020906005020190506000816004015490506000612aed83600001544261280390919063ffffffff16565b90506000612b0884600301548361347590919063ffffffff16565b9050612b33612b2485600401548361349b90919063ffffffff16565b846123fd90919063ffffffff16565b925083600201548310612e4a5783600201549250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208681548110612b9157fe5b906000526020600020906005020160008082016000905560018201600090556002820160009055600382016000905560048201600090555050600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612c5f6001600a60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905061280390919063ffffffff16565b81548110612c6957fe5b9060005260206000209060050201600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208781548110612cc157fe5b906000526020600020906005020160008201548160000155600182015481600101556002820154816002015560038201548160030155600482015481600401559050506001600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081818054905003915081612d5991906134d5565b508673ffffffffffffffffffffffffffffffffffffffff167f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f1846040518082815260200191505060405180910390a2612dfa83600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123fd90919063ffffffff16565b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060019450505050506130f9565b612ee1612e778560030154612e696001856123fd90919063ffffffff16565b61349b90919063ffffffff16565b600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208881548110612ec157fe5b9060005260206000209060050201600001546123fd90919063ffffffff16565b600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208781548110612f2b57fe5b906000526020600020906005020160000181905550612fae83600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208881548110612f8e57fe5b90600052602060002090600502016002015461280390919063ffffffff16565b600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208781548110612ff857fe5b9060005260206000209060050201600201819055508673ffffffffffffffffffffffffffffffffffffffff167f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f1846040518082815260200191505060405180910390a26130ad83600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123fd90919063ffffffff16565b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060009450505050505b92915050565b600061319082600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461280390919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061321b848484612851565b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600190509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561334157600080fd5b61334b828261241c565b61335457600080fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156133ec57600080fd5b6133f6828261241c565b1561340057600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600061346b338484612851565b6001905092915050565b600080821161348357600080fd5b600082848161348e57fe5b0490508091505092915050565b6000808314156134ae57600090506134cf565b60008284029050828482816134bf57fe5b04146134ca57600080fd5b809150505b92915050565b815481835581811115613502576005028160050283600052602060002091820191016135019190613507565b5b505050565b61354b91905b808211156135475760008082016000905560018201600090556002820160009055600382016000905560048201600090555060050161350d565b5090565b9056fe5468657265206973206e6f7420656e6f7567682062616c616e636573206f6620686f6c6465722ea265627a7a72315820b0a2b33a9c1b8e38e6f564e06216a895945aefce5c1d35c39cf2b6878d09101564736f6c63430005110032

Deployed Bytecode Sourcemap

15581:6929:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22033:12;22048:14;;;;;;;;;;;22033:29;;22097:1;22081:18;;:4;:18;;;;22073:27;;;;;;22152:4;22146:11;22192:12;22189:1;22184:3;22171:34;22279:1;22276;22262:12;22257:3;22251:4;22246:3;22233:48;22307:14;22358:4;22355:1;22350:3;22335:28;22398:6;22423:1;22418:28;;;;22482:4;22477:3;22470:17;22418:28;22439:4;22434:3;22427:17;15175:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15175:83:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;15175:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8794:244;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8794:244:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8794:244:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6953:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6953:91:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17171:263;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17171:263:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17171:263:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3196:193;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3196:193:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3196:193:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15491:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15491:83:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;18911:177;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18911:177:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18911:177:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;10325:323;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10325:323:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10325:323:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5859:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5859:118:0;;;:::i;:::-;;4141:109;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4141:109:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4141:109:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15843:29;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15843:29:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5112:78;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5112:78:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4362:97;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4362:97:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4362:97:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;4467:77;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4467:77:0;;;:::i;:::-;;16492:405;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16492:405:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16492:405:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17667:217;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17667:217:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17667:217:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3550:189;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3550:189:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;17896:281;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17896:281:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;17896:281:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4258:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4258:92:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4258:92:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;5648:116;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5648:116:0;;;:::i;:::-;;2719:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2719:20:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15325:87;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15325:87:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;15325:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11168:333;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11168:333:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11168:333:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;16909:254;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16909:254:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16909:254:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15936:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15936:46:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15936:46:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15881:51;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15881:51:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15881:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2746:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2746:23:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;18439:325;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18439:325:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;18439:325:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7705:131;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7705:131:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7705:131:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18189:242;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18189:242:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18189:242:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;17446:213;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17446:213:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17446:213:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3397:145;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3397:145:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3397:145:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;15175:83;15212:13;15245:5;15238:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15175:83;:::o;8794:244::-;8859:4;8903:1;8884:21;;:7;:21;;;;8876:30;;;;;;8951:5;8919:8;:20;8928:10;8919:20;;;;;;;;;;;;;;;:29;8940:7;8919:29;;;;;;;;;;;;;;;:37;;;;8993:7;8972:36;;8981:10;8972:36;;;9002:5;8972:36;;;;;;;;;;;;;;;;;;9026:4;9019:11;;8794:244;;;;:::o;6953:91::-;6997:7;7024:12;;7017:19;;6953:91;:::o;17171:263::-;17266:4;17251;16276:13;:22;16290:7;16276:22;;;;;;;;;;;;;;;;;;;;;;;;;16275:23;16267:32;;;;;;17315:1;17287:12;:18;17300:4;17287:18;;;;;;;;;;;;;;;:25;;;;:29;17283:91;;;17333:17;17345:4;17333:11;:17::i;:::-;;17283:91;17391:35;17410:4;17416:2;17420:5;17391:18;:35::i;:::-;17384:42;;17171:263;;;;;;:::o;3196:193::-;3251:4;3283:5;;;;;;;;;;;3272:16;;:7;:16;;;3268:114;;;3312:4;3305:11;;;;3268:114;3365:5;3358:12;;3196:193;;;;:::o;15491:83::-;15532:5;15557:9;;;;;;;;;;;15550:16;;15491:83;:::o;18911:177::-;3022:5;;;;;;;;;;;3008:19;;:10;:19;;;3000:28;;;;;;19012:18;18994:36;;:14;;;;;;;;;;;:36;;;;18986:45;;;;;;19042:38;19061:18;19042;:38::i;:::-;18911:177;:::o;10325:323::-;10405:4;10449:1;10430:21;;:7;:21;;;;10422:30;;;;;;10497:45;10531:10;10497:8;:20;10506:10;10497:20;;;;;;;;;;;;;;;:29;10518:7;10497:29;;;;;;;;;;;;;;;;:33;;:45;;;;:::i;:::-;10465:8;:20;10474:10;10465:20;;;;;;;;;;;;;;;:29;10486:7;10465:29;;;;;;;;;;;;;;;:77;;;;10579:7;10558:60;;10567:10;10558:60;;;10588:8;:20;10597:10;10588:20;;;;;;;;;;;;;;;:29;10609:7;10588:29;;;;;;;;;;;;;;;;10558:60;;;;;;;;;;;;;;;;;;10636:4;10629:11;;10325:323;;;;:::o;5859:118::-;4070:20;4079:10;4070:8;:20::i;:::-;:42;;;;4093:19;4101:10;4093:7;:19::i;:::-;4070:42;4062:51;;;;;;5528:7;;;;;;;;;;;5520:16;;;;;;5928:5;5918:7;;:15;;;;;;;;;;;;;;;;;;5949:20;5958:10;5949:20;;;;;;;;;;;;;;;;;;;;;;5859:118::o;4141:109::-;4197:4;4221:21;4234:7;4221:8;:12;;:21;;;;:::i;:::-;4214:28;;4141:109;;;:::o;15843:29::-;;;;;;;;;;;;;:::o;5112:78::-;5151:4;5175:7;;;;;;;;;;;5168:14;;5112:78;:::o;4362:97::-;3022:5;;;;;;;;;;;3008:19;;:10;:19;;;3000:28;;;;;;4429:22;4443:7;4429:13;:22::i;:::-;4362:97;:::o;4467:77::-;4511:25;4525:10;4511:13;:25::i;:::-;4467:77::o;16492:405::-;16547:7;16577:20;16600:22;16616:5;16600:15;:22::i;:::-;16577:45;;16665:1;16637:12;:19;16650:5;16637:19;;;;;;;;;;;;;;;:26;;;;:29;16633:217;;;16687:6;16694:1;16687:8;;16683:156;16699:12;:19;16712:5;16699:19;;;;;;;;;;;;;;;:26;;;;16697:1;:28;16683:156;;;16764:59;16782:12;:19;16795:5;16782:19;;;;;;;;;;;;;;;16802:1;16782:22;;;;;;;;;;;;;;;;;;:39;;;16764:12;:16;;:59;;;;:::i;:::-;16749:74;;16726:3;;;;;;;16683:156;;;;16633:217;16877:12;16870:19;;;16492:405;;;:::o;17667:217::-;17735:4;4070:20;4079:10;4070:8;:20::i;:::-;:42;;;;4093:19;4101:10;4093:7;:19::i;:::-;4070:42;4062:51;;;;;;17760:13;:21;17774:6;17760:21;;;;;;;;;;;;;;;;;;;;;;;;;17752:30;;;;;;17817:5;17793:13;:21;17807:6;17793:21;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;17847:6;17838:16;;;;;;;;;;;;17872:4;17865:11;;17667:217;;;:::o;3550:189::-;3605:4;3119:1;3097:24;;:10;:24;;;;3089:33;;;;;;3155:8;;;;;;;;;;;3141:22;;:10;:22;;;3133:31;;;;;;3655:8;;;;;;;;;;;3627:37;;3648:5;;;;;;;;;;;3627:37;;;;;;;;;;;;3691:8;;;;;;;;;;;3683:5;;:16;;;;;;;;;;;;;;;;;;3729:1;3710:8;;:21;;;;;;;;;;;;;;;;;;3550:189;:::o;17896:281::-;18041:4;4070:20;4079:10;4070:8;:20::i;:::-;:42;;;;4093:19;4101:10;4093:7;:19::i;:::-;4070:42;4062:51;;;;;;18068:69;18074:6;18082:5;18089:12;18103:11;18116:20;18068:5;:69::i;:::-;;18165:4;18158:11;;17896:281;;;;;;;:::o;4258:92::-;4070:20;4079:10;4070:8;:20::i;:::-;:42;;;;4093:19;4101:10;4093:7;:19::i;:::-;4070:42;4062:51;;;;;;4323:19;4334:7;4323:10;:19::i;:::-;4258:92;:::o;5648:116::-;4070:20;4079:10;4070:8;:20::i;:::-;:42;;;;4093:19;4101:10;4093:7;:19::i;:::-;4070:42;4062:51;;;;;;5349:7;;;;;;;;;;;5348:8;5340:17;;;;;;5718:4;5708:7;;:14;;;;;;;;;;;;;;;;;;5738:18;5745:10;5738:18;;;;;;;;;;;;;;;;;;;;;;5648:116::o;2719:20::-;;;;;;;;;;;;;:::o;15325:87::-;15364:13;15397:7;15390:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15325:87;:::o;11168:333::-;11253:4;11297:1;11278:21;;:7;:21;;;;11270:30;;;;;;11345:50;11379:15;11345:8;:20;11354:10;11345:20;;;;;;;;;;;;;;;:29;11366:7;11345:29;;;;;;;;;;;;;;;;:33;;:50;;;;:::i;:::-;11313:8;:20;11322:10;11313:20;;;;;;;;;;;;;;;:29;11334:7;11313:29;;;;;;;;;;;;;;;:82;;;;11432:7;11411:60;;11420:10;11411:60;;;11441:8;:20;11450:10;11441:20;;;;;;;;;;;;;;;:29;11462:7;11441:29;;;;;;;;;;;;;;;;11411:60;;;;;;;;;;;;;;;;;;11489:4;11482:11;;11168:333;;;;:::o;16909:254::-;16992:4;16971:10;16276:13;:22;16290:7;16276:22;;;;;;;;;;;;;;;;;;;;;;;;;16275:23;16267:32;;;;;;17047:1;17013:12;:24;17026:10;17013:24;;;;;;;;;;;;;;;:31;;;;:35;17009:104;;;17066:23;17078:10;17066:11;:23::i;:::-;;17009:104;17130:25;17145:2;17149:5;17130:14;:25::i;:::-;17123:32;;16909:254;;;;;:::o;15936:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;15881:51::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2746:23::-;;;;;;;;;;;;;:::o;18439:325::-;18601:4;4070:20;4079:10;4070:8;:20::i;:::-;:42;;;;4093:19;4101:10;4093:7;:19::i;:::-;4070:42;4062:51;;;;;;18618:36;18628:10;18640:6;18648:5;18618:9;:36::i;:::-;18665:69;18671:6;18679:5;18686:12;18700:11;18713:20;18665:5;:69::i;:::-;;18752:4;18745:11;;18439:325;;;;;;;:::o;7705:131::-;7777:7;7804:8;:15;7813:5;7804:15;;;;;;;;;;;;;;;:24;7820:7;7804:24;;;;;;;;;;;;;;;;7797:31;;7705:131;;;;:::o;18189:242::-;18294:4;4070:20;4079:10;4070:8;:20::i;:::-;:42;;;;4093:19;4101:10;4093:7;:19::i;:::-;4070:42;4062:51;;;;;;18311:36;18321:10;18333:6;18341:5;18311:9;:36::i;:::-;18358:43;18364:6;18372:5;18379:11;18392:1;18395:5;18358;:43::i;:::-;;18419:4;18412:11;;18189:242;;;;;:::o;17446:213::-;17512:4;4070:20;4079:10;4070:8;:20::i;:::-;:42;;;;4093:19;4101:10;4093:7;:19::i;:::-;4070:42;4062:51;;;;;;17538:13;:21;17552:6;17538:21;;;;;;;;;;;;;;;;;;;;;;;;;17537:22;17529:31;;;;;;17595:4;17571:13;:21;17585:6;17571:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;17622:6;17615:14;;;;;;;;;;;;17647:4;17640:11;;17446:213;;;:::o;3397:145::-;3022:5;;;;;;;;;;;3008:19;;:10;:19;;;3000:28;;;;;;3500:1;3479:23;;:9;:23;;;;3471:32;;;;;;3525:9;3514:8;;:20;;;;;;;;;;;;;;;;;;3397:145;:::o;21100:439::-;21154:4;21175:11;21188:1;21175:14;;21171:339;21197:12;:20;21210:6;21197:20;;;;;;;;;;;;;;;:27;;;;21191:3;:33;21171:339;;;21296:3;21254:12;:20;21267:6;21254:20;;;;;;;;;;;;;;;21275:3;21254:25;;;;;;;;;;;;;;;;;;:38;;;:45;21250:249;;21402:29;21419:6;21427:3;21402:16;:29::i;:::-;21398:86;;;21463:1;21457:7;;;;21398:86;21250:249;21227:5;;;;;;;21171:339;;;;21527:4;21520:11;;21100:439;;;:::o;13963:160::-;14056:4;5349:7;;;;;;;;;;;5348:8;5340:17;;;;;;14080:35;14099:4;14105:2;14109:5;14080:18;:35::i;:::-;14073:42;;13963:160;;;;;:::o;21686:97::-;21768:7;21751:14;;:24;;;;;;;;;;;;;;;;;;21686:97;:::o;1377:150::-;1435:7;1455:9;1471:1;1467;:5;1455:17;;1496:1;1491;:6;;1483:15;;;;;;1518:1;1511:8;;;1377:150;;;;:::o;2523:165::-;2595:4;2639:1;2620:21;;:7;:21;;;;2612:30;;;;;;2660:4;:11;;:20;2672:7;2660:20;;;;;;;;;;;;;;;;;;;;;;;;;2653:27;;2523:165;;;;:::o;4682:130::-;4742:24;4758:7;4742:8;:15;;:24;;;;:::i;:::-;4796:7;4782:22;;;;;;;;;;;;4682:130;:::o;7260:106::-;7315:7;7342:9;:16;7352:5;7342:16;;;;;;;;;;;;;;;;7335:23;;7260:106;;;:::o;19100:486::-;19235:4;19281:5;19260:9;:17;19270:6;19260:17;;;;;;;;;;;;;;;;:26;;19252:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19360:28;19382:5;19360:9;:17;19370:6;19360:17;;;;;;;;;;;;;;;;:21;;:28;;;;:::i;:::-;19340:9;:17;19350:6;19340:17;;;;;;;;;;;;;;;:48;;;;19399:12;:20;19412:6;19399:20;;;;;;;;;;;;;;;19426:70;;;;;;;;19435:11;19426:70;;;;19448:5;19426:70;;;;19455:5;19426:70;;;;19462:11;19426:70;;;;19475:20;19426:70;;;19399:99;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;19399:99:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19529:6;19524:32;;;19537:5;19544:11;19524:32;;;;;;;;;;;;;;;;;;;;;;;;19574:4;19567:11;;19100:486;;;;;;;:::o;4552:122::-;4609:21;4622:7;4609:8;:12;;:21;;;;:::i;:::-;4658:7;4646:20;;;;;;;;;;;;4552:122;:::o;1141:150::-;1199:7;1232:1;1227;:6;;1219:15;;;;;;1245:9;1261:1;1257;:5;1245:17;;1282:1;1275:8;;;1141:150;;;;:::o;13823:132::-;13898:4;5349:7;;;;;;;;;;;5348:8;5340:17;;;;;;13922:25;13937:2;13941:5;13922:14;:25::i;:::-;13915:32;;13823:132;;;;:::o;11723:262::-;11825:1;11811:16;;:2;:16;;;;11803:25;;;;;;11859:26;11879:5;11859:9;:15;11869:4;11859:15;;;;;;;;;;;;;;;;:19;;:26;;;;:::i;:::-;11841:9;:15;11851:4;11841:15;;;;;;;;;;;;;;;:44;;;;11912:24;11930:5;11912:9;:13;11922:2;11912:13;;;;;;;;;;;;;;;;:17;;:24;;;;:::i;:::-;11896:9;:13;11906:2;11896:13;;;;;;;;;;;;;;;:40;;;;11967:2;11952:25;;11961:4;11952:25;;;11971:5;11952:25;;;;;;;;;;;;;;;;;;11723:262;;;:::o;19598:1494::-;19672:4;19704:12;:21;19717:7;19704:21;;;;;;;;;;;;;;;:28;;;;19697:4;:35;19689:44;;;;;;19817:21;19841:12;:21;19854:7;19841:21;;;;;;;;;;;;;;;19863:4;19841:27;;;;;;;;;;;;;;;;;;19817:51;;19879:21;19903:4;:26;;;19879:50;;19940:17;19960:26;19968:4;:17;;;19960:3;:7;;:26;;;;:::i;:::-;19940:46;;19997:18;20018:32;20032:4;:17;;;20018:9;:13;;:32;;;;:::i;:::-;19997:53;;20077:63;20096:42;20111:4;:26;;;20096:10;:14;;:42;;;;:::i;:::-;20077:13;:17;;:63;;;;:::i;:::-;20061:79;;20173:4;:21;;;20156:13;:38;20153:932;;20239:4;:21;;;20223:37;;20284:12;:21;20297:7;20284:21;;;;;;;;;;;;;;;20306:4;20284:27;;;;;;;;;;;;;;;;;;;20277:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20356:12;:21;20369:7;20356:21;;;;;;;;;;;;;;;20378:35;20411:1;20378:12;:21;20391:7;20378:21;;;;;;;;;;;;;;;:28;;;;:32;;:35;;;;:::i;:::-;20356:58;;;;;;;;;;;;;;;;;;20326:12;:21;20339:7;20326:21;;;;;;;;;;;;;;;20348:4;20326:27;;;;;;;;;;;;;;;;;;:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20460:1;20429:12;:21;20442:7;20429:21;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;:::i;:::-;;20502:7;20495:30;;;20511:13;20495:30;;;;;;;;;;;;;;;;;;20561:37;20584:13;20561:9;:18;20571:7;20561:18;;;;;;;;;;;;;;;;:22;;:37;;;;:::i;:::-;20540:9;:18;20550:7;20540:18;;;;;;;;;;;;;;;:58;;;;20622:4;20615:11;;;;;;;;20153:932;20706:88;20752:40;20774:4;:17;;;20752;20767:1;20752:10;:14;;:17;;;;:::i;:::-;:21;;:40;;;;:::i;:::-;20706:12;:21;20719:7;20706:21;;;;;;;;;;;;;;;20728:4;20706:27;;;;;;;;;;;;;;;;;;:40;;;:44;;:88;;;;:::i;:::-;20659:12;:21;20672:7;20659:21;;;;;;;;;;;;;;;20681:4;20659:27;;;;;;;;;;;;;;;;;;:40;;:135;;;;20856:63;20905:13;20856:12;:21;20869:7;20856:21;;;;;;;;;;;;;;;20878:4;20856:27;;;;;;;;;;;;;;;;;;:44;;;:48;;:63;;;;:::i;:::-;20809:12;:21;20822:7;20809:21;;;;;;;;;;;;;;;20831:4;20809:27;;;;;;;;;;;;;;;;;;:44;;:110;;;;20948:7;20941:30;;;20957:13;20941:30;;;;;;;;;;;;;;;;;;21007:37;21030:13;21007:9;:18;21017:7;21007:18;;;;;;;;;;;;;;;;:22;;:37;;;;:::i;:::-;20986:9;:18;20996:7;20986:18;;;;;;;;;;;;;;;:58;;;;21068:5;21061:12;;;;;;19598:1494;;;;;:::o;9511:299::-;9590:4;9636:37;9667:5;9636:8;:14;9645:4;9636:14;;;;;;;;;;;;;;;:26;9651:10;9636:26;;;;;;;;;;;;;;;;:30;;:37;;;;:::i;:::-;9607:8;:14;9616:4;9607:14;;;;;;;;;;;;;;;:26;9622:10;9607:26;;;;;;;;;;;;;;;:66;;;;9684:26;9694:4;9700:2;9704:5;9684:9;:26::i;:::-;9741:10;9726:54;;9735:4;9726:54;;;9753:8;:14;9762:4;9753:14;;;;;;;;;;;;;;;:26;9768:10;9753:26;;;;;;;;;;;;;;;;9726:54;;;;;;;;;;;;;;;;;;9798:4;9791:11;;9511:299;;;;;:::o;2240:189::-;2339:1;2320:21;;:7;:21;;;;2312:30;;;;;;2361:18;2365:4;2371:7;2361:3;:18::i;:::-;2353:27;;;;;;2416:5;2393:4;:11;;:20;2405:7;2393:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;2240:189;;:::o;1975:186::-;2071:1;2052:21;;:7;:21;;;;2044:30;;;;;;2094:18;2098:4;2104:7;2094:3;:18::i;:::-;2093:19;2085:28;;;;;;2149:4;2126;:11;;:20;2138:7;2126:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;1975:186;;:::o;8007:140::-;8068:4;8085:32;8095:10;8107:2;8111:5;8085:9;:32::i;:::-;8135:4;8128:11;;8007:140;;;;:::o;702:303::-;760:7;859:1;855;:5;847:14;;;;;;872:9;888:1;884;:5;;;;;;872:17;;996:1;989:8;;;702:303;;;;:::o;136:433::-;194:7;443:1;438;:6;434:47;;;468:1;461:8;;;;434:47;493:9;509:1;505;:5;493:17;;538:1;533;529;:5;;;;;;:10;521:19;;;;;;560:1;553:8;;;136:433;;;;;:::o;15581:6929::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

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