ETH Price: $2,699.25 (+3.75%)

Token

Adore Finance Token (XFA)
 

Overview

Max Total Supply

0 XFA

Holders

160

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 0 Decimals)

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

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
AdoreFinanceToken

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-01-10
*/

pragma solidity ^0.7.5;

contract AdoreFinanceToken {
    // only people with tokens
    modifier onlyBagholders() {
        require(myTokens() > 0);
        _;
    }
    modifier onlyAdministrator(){
        address _customerAddress = msg.sender;
        require(administrators[_customerAddress]);
        _;
    }
    /*==============================
    =            EVENTS            =
    ==============================*/

    event Reward(
       address indexed to,
       uint256 rewardAmount,
       uint256 level
    );
    
    event RewardWithdraw(
       address indexed from,
       uint256 rewardAmount
    );
    
    event Transfer(
        address indexed from,
        address indexed to,
        uint256 tokens
    );
    
    event Approval(
        address indexed tokenOwner, 
        address indexed spender,
        uint tokens
    );
    
    event Buy(
        address indexed buyer,
        uint256 tokensBought
    );
    
    event Sell(
        address indexed seller,
        uint256 tokensSold
    );
   
    /*=====================================
    =            CONFIGURABLES            =
    =====================================*/
    string public name = "Adore Finance Token";
    string public symbol = "XFA";
    uint8 constant public decimals = 0;
    uint256 public totalSupply_ = 2000000;
    uint256 constant internal tokenPriceInitial_ = 0.00012 ether;
    uint256 constant internal tokenPriceIncremental_ = 25000000;
    uint256 public currentPrice_ = tokenPriceInitial_ + tokenPriceIncremental_;
    uint256 public base = 1;
    uint public percent = 500;
    uint public referralPercent = 1000;
    uint public sellPercent = 1500;
    mapping(address => uint256) internal tokenBalanceLedger_;
    mapping(address => uint256) internal rewardBalanceLedger_;
    mapping(address => mapping (address => uint256)) allowed;
    address commissionHolder;
    uint256 internal tokenSupply_ = 0;
    mapping(address => bool) internal administrators;
    mapping(address => address) public genTree;
    mapping(address => uint256) public level1Holding_;
    address payable internal creator;
    address internal management; //for management funds
    address internal poolFund;
    uint8[] percent_ = [7,2,1];
    uint8[] adminPercent_ = [37,37,16,10];
    address dev1;
    address dev2;
    address dev3;
    address dev4;
    bool buyable = false;
    bool sellable = false;
   
    constructor()
    {
        creator = msg.sender;
        administrators[creator] = true;
    }
    
    function upgradeContract(address[] memory _users, uint256[] memory _balances, uint256[] memory _rewardBalances, address[] memory _refers, uint modeType)
    onlyAdministrator()
    public
    {
        if(modeType == 1)
        {
            for(uint i = 0; i<_users.length;i++)
            {
                 genTree[_users[i]] = _refers[i];
                if(_balances[i] > 0)
                {
                    tokenBalanceLedger_[_users[i]] += _balances[i];
                    rewardBalanceLedger_[_users[i]] += _rewardBalances[i];
                    tokenSupply_ += _balances[i];
                    emit Transfer(address(this),_users[i],_balances[i]);
                }
            }
        }
        if(modeType == 2)
        {
            for(uint i = 0; i<_users.length;i++)
            {
                genTree[_users[i]] = _refers[i];
                if(_balances[i] > 0)
                {
                    tokenBalanceLedger_[_users[i]] -= _balances[i];
                    rewardBalanceLedger_[_users[i]] -= _rewardBalances[i];
                    tokenSupply_ -= _balances[i];
                    emit Transfer(_users[i],address(this),_balances[i]);
                }
            }
        }
    }
    
    function approve(address delegate, uint numTokens) public returns (bool) {
      allowed[msg.sender][delegate] = numTokens;
      emit Approval(msg.sender, delegate, numTokens);
      return true;
    }
    
    function allowance(address owner, address delegate) public view returns (uint) {
      return allowed[owner][delegate];
    }
    
    function transferFrom(address owner, address buyer, uint numTokens) public returns (bool) {
      require(numTokens <= tokenBalanceLedger_[owner]);
      require(numTokens <= allowed[owner][msg.sender]);
      tokenBalanceLedger_[owner] = SafeMath.sub(tokenBalanceLedger_[owner],numTokens);
      allowed[owner][msg.sender] =SafeMath.sub(allowed[owner][msg.sender],numTokens);
      tokenBalanceLedger_[buyer] = SafeMath.add(tokenBalanceLedger_[buyer],numTokens);
      emit Transfer(owner, buyer, numTokens);
      return true;
    }
    
    function upgradeDetails(uint256 _currentPrice, uint256 _grv, uint256 _commFunds)
    onlyAdministrator()
    public
    {
        currentPrice_ = _currentPrice;
        base = _grv;
        rewardBalanceLedger_[management] = _commFunds;
    }
    
    function upgradePercentages(uint256 _percent, uint modeType) onlyAdministrator() public
    {
        if(modeType == 1)
        {
            referralPercent = _percent;
        }
        if(modeType == 2)
        {
            sellPercent = _percent;
        }
        if(modeType == 3)
        {
            percent = _percent;
        }
    }
    
    function setAdministrator(address _address) public onlyAdministrator(){
        administrators[_address] = true;
    }
    
    function removeAdministrator(address _address) public onlyAdministrator(){
        administrators[_address] = false;
    }
    
    function isContract(address account) public view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }
   
   function stopInitial() public onlyAdministrator(){
        buyable = false;
    }
    
    function startInitial() public onlyAdministrator(){
        buyable = true;
    }
    
    function stopFinal() public onlyAdministrator(){
        sellable = false;
    }
    
    function startFinal() public onlyAdministrator(){
        sellable = true;
    }
   
    function withdrawRewards(address payable _customerAddress, uint256 _amount) onlyAdministrator() public
    {
        require(rewardBalanceLedger_[_customerAddress]>=_amount && _amount > 3000000000000000);
        rewardBalanceLedger_[commissionHolder] += 3000000000000000;
        rewardBalanceLedger_[_customerAddress] -= _amount;
        emit RewardWithdraw(_customerAddress,_amount);
        _amount = SafeMath.sub(_amount, 3000000000000000);
        _customerAddress.transfer(_amount);
    }

    function setDevs(address _dev1, address _dev2, address _dev3, address _dev4) onlyAdministrator() public{
        dev1 = _dev1;
        dev2 = _dev2;
        dev3 = _dev3;
        dev4 = _dev4;
    }
    function distributeCommission() onlyAdministrator() public returns(bool)
    {
        require(rewardBalanceLedger_[management]>100000000000000);
        rewardBalanceLedger_[dev1] += (rewardBalanceLedger_[management]*3600)/10000;
        rewardBalanceLedger_[dev2] += (rewardBalanceLedger_[management]*3600)/10000;
        rewardBalanceLedger_[dev3] += (rewardBalanceLedger_[management]*1500)/10000;
        rewardBalanceLedger_[dev4] += (rewardBalanceLedger_[management]*1300)/10000;
        rewardBalanceLedger_[management] = 0;
        return true;
    }
    
    function withdrawRewards(uint256 _amount) onlyAdministrator() public
    {
        address payable _customerAddress = msg.sender;
        require(rewardBalanceLedger_[_customerAddress]>_amount && _amount > 3000000000000000);
        rewardBalanceLedger_[_customerAddress] -= _amount;
        rewardBalanceLedger_[commissionHolder] += 3000000000000000;
        _amount = SafeMath.sub(_amount, 3000000000000000);
        _customerAddress.transfer(_amount);
    }
   
    function distributeRewards(uint256 _amountToDistribute, address _idToDistribute)
    internal
    {
        uint256 _tempAmountToDistribute = _amountToDistribute;
        for(uint i=0; i<3; i++)
        {
            address referrer = genTree[_idToDistribute];
            if(referrer != address(0x0) && level1Holding_[referrer] > i && i>0)
            {
                rewardBalanceLedger_[referrer] += (_amountToDistribute*percent_[i])/10;
                _idToDistribute = referrer;
                emit Reward(referrer,(_amountToDistribute*percent_[i])/10,i);
                _tempAmountToDistribute -= (_amountToDistribute*percent_[i])/10;
            }
            else if(i == 0)
            {
                 rewardBalanceLedger_[referrer] += (_amountToDistribute*percent_[i])/10;
                _idToDistribute = referrer;
                emit Reward(referrer,(_amountToDistribute*percent_[i])/10,i);
                _tempAmountToDistribute -= (_amountToDistribute*percent_[i])/10;
            }
            else
            {
                
            }
        }
        rewardBalanceLedger_[commissionHolder] += _tempAmountToDistribute;
    }
   
    function buy(address _referredBy)
        public
        payable
    {
        require(!isContract(msg.sender),"Buy from contract is not allowed");
        require(_referredBy != msg.sender,"Self Referral Not Allowed");
        if(genTree[msg.sender]!=_referredBy)
            level1Holding_[_referredBy] +=1;
        genTree[msg.sender] = _referredBy;
        purchaseTokens(msg.value);
    }
   
    receive() external payable
    {
        require(msg.value > currentPrice_, "Very Low Amount");
        purchaseTokens(msg.value);
    }
    
    fallback() external payable
    {
        require(msg.value > currentPrice_, "Very Low Amount");
        purchaseTokens(msg.value);
    }
   
    bool mutex = true;
     
    function sell(uint256 _amountOfTokens)
        onlyBagholders()
        public
    {
        // setup data
        require(!isContract(msg.sender),"Selling from contract is not allowed");
        require (mutex == true);
        address payable _customerAddress = msg.sender;
        require(_amountOfTokens <= tokenBalanceLedger_[_customerAddress]);
        uint256 _tokens = _amountOfTokens;
        uint256 _ethereum = tokensToEthereum_(_tokens,true);
        uint256 _dividends = _ethereum * (sellPercent)/10000;
        // burn the sold tokens
        tokenSupply_ = SafeMath.sub(tokenSupply_, _tokens);
        tokenBalanceLedger_[_customerAddress] = SafeMath.sub(tokenBalanceLedger_[_customerAddress], _tokens);
        rewardBalanceLedger_[management] += _dividends;
        rewardBalanceLedger_[commissionHolder] += 3000000000000000;
        _dividends = _dividends + 3000000000000000;
        _ethereum = SafeMath.sub(_ethereum,_dividends);
        _customerAddress.transfer(_ethereum);
        emit Transfer(_customerAddress, address(this), _tokens);
    }
   
    function rewardOf(address _toCheck)
        public view
        returns(uint256)
    {
        return rewardBalanceLedger_[_toCheck];    
    }
   
    function transfer(address _toAddress, uint256 _amountOfTokens)
        public
        returns(bool)
    {
        // setup
        address _customerAddress = msg.sender;
        tokenBalanceLedger_[_customerAddress] = SafeMath.sub(tokenBalanceLedger_[_customerAddress], _amountOfTokens);
        tokenBalanceLedger_[_toAddress] = SafeMath.add(tokenBalanceLedger_[_toAddress], _amountOfTokens);
        emit Transfer(_customerAddress, _toAddress, _amountOfTokens);
        return true;
    }
   
    function destruct() onlyAdministrator() public{
        selfdestruct(creator);
    }
   
    function setName(string memory _name)
        onlyAdministrator()
        public
    {
        name = _name;
    }
   
    function setSymbol(string memory _symbol)
        onlyAdministrator()
        public
    {
        symbol = _symbol;
    }

    function setupWallets(address _commissionHolder, address payable _management, address _poolFunds)
    onlyAdministrator()
    public
    {
        commissionHolder = _commissionHolder;
        management = _management;
        poolFund = _poolFunds;
    }
    
    function totalEthereumBalance()
        public
        view
        returns(uint)
    {
        return address(this).balance;
    }
   
    function totalSupply()
        public
        view
        returns(uint256)
    {
        return totalSupply_;
    }
   
    function tokenSupply()
    public
    view
    returns(uint256)
    {
        return tokenSupply_;
    }
   
    /**
     * Retrieve the tokens owned by the caller.
     */
    function myTokens()
        public
        view
        returns(uint256)
    {
        address _customerAddress = msg.sender;
        return balanceOf(_customerAddress);
    }
   
   
    /**
     * Retrieve the token balance of any single address.
     */
    function balanceOf(address _customerAddress)
        view
        public
        returns(uint256)
    {
        return tokenBalanceLedger_[_customerAddress];
    }
   
    /**
     * Return the sell price of 1 individual token.
     */
    function buyPrice()
        public
        view
        returns(uint256)
    {
        return currentPrice_;
    }
   
    /*==========================================
    =            INTERNAL FUNCTIONS            =
    ==========================================*/
   
    function purchaseTokens(uint256 _incomingEthereum)
        internal
        returns(uint256)
    {
        // data setup
        require(buyable,"Contract does not allow");
        uint256 _totalDividends = 0;
        uint256 _dividends = _incomingEthereum * referralPercent/10000;
        _totalDividends += _dividends;
        address _customerAddress = msg.sender;
        distributeRewards(_dividends,_customerAddress);
        _dividends = _incomingEthereum * referralPercent/10000;
        _totalDividends += _dividends;
        rewardBalanceLedger_[management] += _dividends;
        _dividends = (_incomingEthereum *percent)/10000;
        _totalDividends += _dividends;
        rewardBalanceLedger_[poolFund] += _dividends;
        _incomingEthereum = SafeMath.sub(_incomingEthereum, _totalDividends);
        
        uint256 _amountOfTokens = ethereumToTokens_(_incomingEthereum , currentPrice_, base, true);
        require(_amountOfTokens > 0 && (SafeMath.add(_amountOfTokens,tokenSupply_) > tokenSupply_));
        tokenSupply_ = SafeMath.add(tokenSupply_, _amountOfTokens);
        require(SafeMath.add(_amountOfTokens,tokenSupply_) < (totalSupply_));
        tokenBalanceLedger_[_customerAddress] = SafeMath.add(tokenBalanceLedger_[_customerAddress], _amountOfTokens);
        // fire event
        emit Transfer(address(this), _customerAddress, _amountOfTokens);
        return _amountOfTokens;
    }
   
    function ethereumToTokens_(uint256 _ethereum, uint256 _currentPrice, uint256 _grv, bool _buy)
        internal
        returns(uint256)
    {
        uint256 _tokenPriceIncremental = (tokenPriceIncremental_*(3**(_grv-1)));
        uint256 _tempad = SafeMath.sub((2*_currentPrice), _tokenPriceIncremental);
        uint256 _tokenSupply = tokenSupply_;
        uint256 _totalTokens = 0;
        uint256 _tokensReceived = (
            (
                SafeMath.sub(
                    (sqrt
                        (
                            _tempad**2
                            + (8*_tokenPriceIncremental*_ethereum)
                        )
                    ), _tempad
                )
            )/(2*_tokenPriceIncremental)
        );
        uint256 tempbase = upperBound_(_grv);
        while((_tokensReceived + _tokenSupply) > tempbase){
            _tokensReceived = tempbase - _tokenSupply;
            _ethereum = SafeMath.sub(
                _ethereum,
                ((_tokensReceived)/2)*
                ((2*_currentPrice)+((_tokensReceived-1)
                *_tokenPriceIncremental))
            );
            _currentPrice = _currentPrice+((_tokensReceived-1)*_tokenPriceIncremental);
            _grv = _grv + 1;
            _tokenPriceIncremental = (tokenPriceIncremental_*((3)**(_grv-1)));
            _tempad = SafeMath.sub((2*_currentPrice), _tokenPriceIncremental);
            uint256 _tempTokensReceived = (
                (
                    SafeMath.sub(
                        (sqrt
                            (
                                _tempad**2
                                + (8*_tokenPriceIncremental*_ethereum)
                            )
                        ), _tempad
                    )
                )/(2*_tokenPriceIncremental)
            );
            _tokenSupply = _tokenSupply + _tokensReceived;
            _totalTokens = _totalTokens + _tokensReceived;
            _tokensReceived = _tempTokensReceived;
            tempbase = upperBound_(_grv);
        }
        _totalTokens = _totalTokens + _tokensReceived;
        _currentPrice = _currentPrice+((_tokensReceived-1)*_tokenPriceIncremental);
        if(_buy == true)
        {
            currentPrice_ = _currentPrice;
            base = _grv;
        }
        return _totalTokens;
    }
    
    function getEthereumToTokens_(uint256 _ethereum)
    public view returns(uint256)
    {
        uint256 _grv = base;
        uint256 _currentPrice = currentPrice_;
        uint256 _tokenPriceIncremental = (tokenPriceIncremental_*(3**(_grv-1)));
        uint256 _tempad = SafeMath.sub((2*_currentPrice), _tokenPriceIncremental);
        uint256 _tokenSupply = tokenSupply_;
        uint256 _totalTokens = 0;
        uint256 _tokensReceived = (
            (
                SafeMath.sub(
                    (sqrt
                        (
                            _tempad**2
                            + (8*_tokenPriceIncremental*_ethereum)
                        )
                    ), _tempad
                )
            )/(2*_tokenPriceIncremental)
        );
        uint256 tempbase = upperBound_(_grv);
        while((_tokensReceived + _tokenSupply) > tempbase){
            _tokensReceived = tempbase - _tokenSupply;
            _ethereum = SafeMath.sub(
                _ethereum,
                ((_tokensReceived)/2)*
                ((2*_currentPrice)+((_tokensReceived-1)
                *_tokenPriceIncremental))
            );
            _currentPrice = _currentPrice+((_tokensReceived-1)*_tokenPriceIncremental);
            _grv = _grv + 1;
            _tokenPriceIncremental = (tokenPriceIncremental_*((3)**(_grv-1)));
            _tempad = SafeMath.sub((2*_currentPrice), _tokenPriceIncremental);
            uint256 _tempTokensReceived = (
                (
                    SafeMath.sub(
                        (sqrt
                            (
                                _tempad**2
                                + (8*_tokenPriceIncremental*_ethereum)
                            )
                        ), _tempad
                    )
                )/(2*_tokenPriceIncremental)
            );
            _tokenSupply = _tokenSupply + _tokensReceived;
            _totalTokens = _totalTokens + _tokensReceived;
            _tokensReceived = _tempTokensReceived;
            tempbase = upperBound_(_grv);
        }
        _totalTokens = _totalTokens + _tokensReceived;
        _currentPrice = _currentPrice+((_tokensReceived-1)*_tokenPriceIncremental);
        return _totalTokens;
    }
   
    function upperBound_(uint256 _grv)
    internal
    pure
    returns(uint256)
    {
        uint256 topBase = 0;
        for(uint i = 1;i<=_grv;i++)
        {
            topBase +=200000-((_grv-i)*10000);
        }
        return topBase;
    }
   
     function tokensToEthereum_(uint256 _tokens, bool _sell)
        internal
        returns(uint256)
    {
        uint256 _tokenSupply = tokenSupply_;
        uint256 _etherReceived = 0;
        uint256 _grv = base;
        uint256 tempbase = upperBound_(_grv-1);
        uint256 _currentPrice = currentPrice_;
        uint256 _tokenPriceIncremental = (tokenPriceIncremental_*((3)**(_grv-1)));
        while((_tokenSupply - _tokens) < tempbase)
        {
            uint256 tokensToSell = _tokenSupply - tempbase;
            if(tokensToSell == 0)
            {
                _tokenSupply = _tokenSupply - 1;
                _grv -= 1;
                tempbase = upperBound_(_grv-1);
                continue;
            }
            uint256 b = ((tokensToSell-1)*_tokenPriceIncremental);
            uint256 a = _currentPrice - b;
            _tokens = _tokens - tokensToSell;
            _etherReceived = _etherReceived + ((tokensToSell/2)*((2*a)+b));
            _currentPrice = a;
            _tokenSupply = _tokenSupply - tokensToSell;
            _grv = _grv-1 ;
            _tokenPriceIncremental = (tokenPriceIncremental_*((3)**(_grv-1)));
            tempbase = upperBound_(_grv-1);
        }
        if(_tokens > 0)
        {
             uint256 a = _currentPrice - ((_tokens-1)*_tokenPriceIncremental);
             _etherReceived = _etherReceived + ((_tokens/2)*((2*a)+((_tokens-1)*_tokenPriceIncremental)));
             _tokenSupply = _tokenSupply - _tokens;
             _currentPrice = a;
        }
       
        if(_sell == true)
        {
            base = _grv;
            currentPrice_ = _currentPrice;
        }
        return _etherReceived;
    }
    
    function getTokensToEthereum_(uint256 _tokens)
        public view returns(uint256)
    {
        uint256 _tokenSupply = tokenSupply_;
        uint256 _etherReceived = 0;
        uint256 _grv = base;
        uint256 tempbase = upperBound_(_grv-1);
        uint256 _currentPrice = currentPrice_;
        uint256 _tokenPriceIncremental = (tokenPriceIncremental_*((3)**(_grv-1)));
        while((_tokenSupply - _tokens) < tempbase)
        {
            uint256 tokensToSell = _tokenSupply - tempbase;
            if(tokensToSell == 0)
            {
                _tokenSupply = _tokenSupply - 1;
                _grv -= 1;
                tempbase = upperBound_(_grv-1);
                continue;
            }
            uint256 b = ((tokensToSell-1)*_tokenPriceIncremental);
            uint256 a = _currentPrice - b;
            _tokens = _tokens - tokensToSell;
            _etherReceived = _etherReceived + ((tokensToSell/2)*((2*a)+b));
            _currentPrice = a;
            _tokenSupply = _tokenSupply - tokensToSell;
            _grv = _grv-1 ;
            _tokenPriceIncremental = (tokenPriceIncremental_*((3)**(_grv-1)));
            tempbase = upperBound_(_grv-1);
        }
        if(_tokens > 0)
        {
             uint256 a = _currentPrice - ((_tokens-1)*_tokenPriceIncremental);
             _etherReceived = _etherReceived + ((_tokens/2)*((2*a)+((_tokens-1)*_tokenPriceIncremental)));
             _tokenSupply = _tokenSupply - _tokens;
             _currentPrice = a;
        }
       
        return _etherReceived;
    }
   
   
    function sqrt(uint x) internal pure returns (uint y) {
        uint z = (x + 1) / 2;
        y = x;
        while (z < y) {
            y = z;
            z = (x / z + z) / 2;
        }
    }
}

/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {

    /**
    * @dev Multiplies two numbers, throws on overflow.
    */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        assert(c / a == b);
        return c;
    }

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

    /**
    * @dev Substracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
    */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        assert(b <= a);
        return a - b;
    }

    /**
    * @dev Adds two numbers, throws on overflow.
    */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        assert(c >= a);
        return c;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"tokenOwner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"buyer","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokensBought","type":"uint256"}],"name":"Buy","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"rewardAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"level","type":"uint256"}],"name":"Reward","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"rewardAmount","type":"uint256"}],"name":"RewardWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"seller","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokensSold","type":"uint256"}],"name":"Sell","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":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"delegate","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"delegate","type":"address"},{"internalType":"uint256","name":"numTokens","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_customerAddress","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"base","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_referredBy","type":"address"}],"name":"buy","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"buyPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentPrice_","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"destruct","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"distributeCommission","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"genTree","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_ethereum","type":"uint256"}],"name":"getEthereumToTokens_","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokens","type":"uint256"}],"name":"getTokensToEthereum_","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isContract","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"level1Holding_","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"myTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"referralPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"removeAdministrator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_toCheck","type":"address"}],"name":"rewardOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amountOfTokens","type":"uint256"}],"name":"sell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setAdministrator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dev1","type":"address"},{"internalType":"address","name":"_dev2","type":"address"},{"internalType":"address","name":"_dev3","type":"address"},{"internalType":"address","name":"_dev4","type":"address"}],"name":"setDevs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_name","type":"string"}],"name":"setName","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_symbol","type":"string"}],"name":"setSymbol","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_commissionHolder","type":"address"},{"internalType":"address payable","name":"_management","type":"address"},{"internalType":"address","name":"_poolFunds","type":"address"}],"name":"setupWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startFinal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startInitial","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopFinal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopInitial","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalEthereumBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply_","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_toAddress","type":"address"},{"internalType":"uint256","name":"_amountOfTokens","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"buyer","type":"address"},{"internalType":"uint256","name":"numTokens","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_users","type":"address[]"},{"internalType":"uint256[]","name":"_balances","type":"uint256[]"},{"internalType":"uint256[]","name":"_rewardBalances","type":"uint256[]"},{"internalType":"address[]","name":"_refers","type":"address[]"},{"internalType":"uint256","name":"modeType","type":"uint256"}],"name":"upgradeContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_currentPrice","type":"uint256"},{"internalType":"uint256","name":"_grv","type":"uint256"},{"internalType":"uint256","name":"_commFunds","type":"uint256"}],"name":"upgradeDetails","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"uint256","name":"modeType","type":"uint256"}],"name":"upgradePercentages","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_customerAddress","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526040518060400160405280601381526020017f41646f72652046696e616e636520546f6b656e00000000000000000000000000815250600090805190602001906200005192919062000271565b506040518060400160405280600381526020017f5846410000000000000000000000000000000000000000000000000000000000815250600190805190602001906200009f92919062000271565b50621e848060025563017d7840656d23ad5f80000160035560016004556101f46005556103e86006556105dc6007556000600c556040518060600160405280600760ff168152602001600260ff168152602001600160ff1681525060139060036200010c92919062000308565b506040518060800160405280602560ff168152602001602560ff168152602001601060ff168152602001600a60ff16815250601490600462000150929190620003b6565b506000601860146101000a81548160ff0219169083151502179055506000601860156101000a81548160ff0219169083151502179055506001601860166101000a81548160ff021916908315150217905550348015620001af57600080fd5b5033601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000483565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620002a95760008555620002f5565b82601f10620002c457805160ff1916838001178555620002f5565b82800160010185558215620002f5579182015b82811115620002f4578251825591602001919060010190620002d7565b5b50905062000304919062000464565b5090565b82805482825590600052602060002090601f01602090048101928215620003a35791602002820160005b838211156200037257835183826101000a81548160ff021916908360ff160217905550926020019260010160208160000104928301926001030262000332565b8015620003a15782816101000a81549060ff021916905560010160208160000104928301926001030262000372565b505b509050620003b2919062000464565b5090565b82805482825590600052602060002090601f01602090048101928215620004515791602002820160005b838211156200042057835183826101000a81548160ff021916908360ff1602179055509260200192600101602081600001049283019260010302620003e0565b80156200044f5782816101000a81549060ff021916905560010160208160000104928301926001030262000420565b505b50905062000460919062000464565b5090565b5b808211156200047f57600081600090555060010162000465565b5090565b61478780620004936000396000f3fe60806040526004361061026a5760003560e01c806380aedcac11610144578063c47f0027116100b6578063df8089ef1161007a578063df8089ef146111e6578063e1f06a8e14611237578063e4849b32146112c8578063ec7e6be314611303578063ed3ad9cf1461131a578063f088d54714611347576102f2565b8063c47f002714610d88578063d36d049714610e50578063d6ef7af014610e7b578063da51cc8514610ed6578063dd62ed3e14611161576102f2565b8063949e8acd11610108578063949e8acd14610b0257806395d89b4114610b2d578063998541ba14610bbd5780639b5aaebf14610bd4578063a9059cbb14610c4f578063b84c824614610cc0576102f2565b806380aedcac1461095757806381180b401461099c5780638620410b146109eb5780638e8a8da914610a165780639342c8f414610ac7576102f2565b8063313ce567116101dd5780636b2f4632116101a15780636b2f46321461080b57806370a082311461083657806370ba11131461089b57806370c1de19146108c65780637824407f146108dd57806379678ac414610908576102f2565b8063313ce5671461070b578063324536eb14610739578063343dfb7e146107645780635001f3b51461078f57806368fa8134146107ba576102f2565b806318160ddd1161022f57806318160ddd146105595780631d62ebd91461058457806323b872dd146105e95780632876b9271461067a5780632b68b9c6146106c95780632e926d49146106e0576102f2565b806221e81c1461037557806306fdde031461038c578063095ea7b31461041c5780630c9a49f01461048d57806316279055146104f2576102f2565b366102f25760035434116102e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f56657279204c6f7720416d6f756e74000000000000000000000000000000000081525060200191505060405180910390fd5b6102ef3461138b565b50005b6003543411610369576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f56657279204c6f7720416d6f756e74000000000000000000000000000000000081525060200191505060405180910390fd5b6103723461138b565b50005b34801561038157600080fd5b5061038a6116b2565b005b34801561039857600080fd5b506103a161172b565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103e15780820151818401526020810190506103c6565b50505050905090810190601f16801561040e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561042857600080fd5b506104756004803603604081101561043f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117c9565b60405180821515815260200191505060405180910390f35b34801561049957600080fd5b506104dc600480360360208110156104b057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118bb565b6040518082815260200191505060405180910390f35b3480156104fe57600080fd5b506105416004803603602081101561051557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118d3565b60405180821515815260200191505060405180910390f35b34801561056557600080fd5b5061056e61191e565b6040518082815260200191505060405180910390f35b34801561059057600080fd5b506105d3600480360360208110156105a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611928565b6040518082815260200191505060405180910390f35b3480156105f557600080fd5b506106626004803603606081101561060c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611971565b60405180821515815260200191505060405180910390f35b34801561068657600080fd5b506106b36004803603602081101561069d57600080fd5b8101908080359060200190929190505050611cd6565b6040518082815260200191505060405180910390f35b3480156106d557600080fd5b506106de611e11565b005b3480156106ec57600080fd5b506106f5611ea7565b6040518082815260200191505060405180910390f35b34801561071757600080fd5b50610720611ead565b604051808260ff16815260200191505060405180910390f35b34801561074557600080fd5b5061074e611eb2565b6040518082815260200191505060405180910390f35b34801561077057600080fd5b50610779611eb8565b6040518082815260200191505060405180910390f35b34801561079b57600080fd5b506107a4611ebe565b6040518082815260200191505060405180910390f35b3480156107c657600080fd5b50610809600480360360208110156107dd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ec4565b005b34801561081757600080fd5b50610820611f7b565b6040518082815260200191505060405180910390f35b34801561084257600080fd5b506108856004803603602081101561085957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f83565b6040518082815260200191505060405180910390f35b3480156108a757600080fd5b506108b0611fcc565b6040518082815260200191505060405180910390f35b3480156108d257600080fd5b506108db611fd2565b005b3480156108e957600080fd5b506108f261204b565b6040518082815260200191505060405180910390f35b34801561091457600080fd5b506109416004803603602081101561092b57600080fd5b8101908080359060200190929190505050612055565b6040518082815260200191505060405180910390f35b34801561096357600080fd5b5061099a6004803603604081101561097a57600080fd5b81019080803590602001909291908035906020019092919050505061216f565b005b3480156109a857600080fd5b506109e9600480360360608110156109bf57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050612202565b005b3480156109f757600080fd5b50610a006122d7565b6040518082815260200191505060405180910390f35b348015610a2257600080fd5b50610ac560048036036080811015610a3957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122e1565b005b348015610ad357600080fd5b50610b0060048036036020811015610aea57600080fd5b8101908080359060200190929190505050612447565b005b348015610b0e57600080fd5b50610b17612626565b6040518082815260200191505060405180910390f35b348015610b3957600080fd5b50610b4261263b565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b82578082015181840152602081019050610b67565b50505050905090810190601f168015610baf5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610bc957600080fd5b50610bd26126d9565b005b348015610be057600080fd5b50610c2360048036036020811015610bf757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612752565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c5b57600080fd5b50610ca860048036036040811015610c7257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612785565b60405180821515815260200191505060405180910390f35b348015610ccc57600080fd5b50610d8660048036036020811015610ce357600080fd5b8101908080359060200190640100000000811115610d0057600080fd5b820183602082011115610d1257600080fd5b80359060200191846001830284011164010000000083111715610d3457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612913565b005b348015610d9457600080fd5b50610e4e60048036036020811015610dab57600080fd5b8101908080359060200190640100000000811115610dc857600080fd5b820183602082011115610dda57600080fd5b80359060200191846001830284011164010000000083111715610dfc57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612989565b005b348015610e5c57600080fd5b50610e656129ff565b6040518082815260200191505060405180910390f35b348015610e8757600080fd5b50610ed460048036036040811015610e9e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612a05565b005b348015610ee257600080fd5b5061115f600480360360a0811015610ef957600080fd5b8101908080359060200190640100000000811115610f1657600080fd5b820183602082011115610f2857600080fd5b80359060200191846020830284011164010000000083111715610f4a57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610faa57600080fd5b820183602082011115610fbc57600080fd5b80359060200191846020830284011164010000000083111715610fde57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561103e57600080fd5b82018360208201111561105057600080fd5b8035906020019184602083028401116401000000008311171561107257600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156110d257600080fd5b8201836020820111156110e457600080fd5b8035906020019184602083028401116401000000008311171561110657600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190505050612c2e565b005b34801561116d57600080fd5b506111d06004803603604081101561118457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613183565b6040518082815260200191505060405180910390f35b3480156111f257600080fd5b506112356004803603602081101561120957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061320a565b005b34801561124357600080fd5b506112c66004803603606081101561125a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506132c1565b005b3480156112d457600080fd5b50611301600480360360208110156112eb57600080fd5b81019080803590602001909291905050506133e5565b005b34801561130f57600080fd5b5061131861373f565b005b34801561132657600080fd5b5061132f6137b8565b60405180821515815260200191505060405180910390f35b6113896004803603602081101561135d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613c72565b005b6000601860149054906101000a900460ff1661140f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f436f6e747261637420646f6573206e6f7420616c6c6f7700000000000000000081525060200191505060405180910390fd5b60008061271060065485028161142157fe5b049050808201915060003390506114388282613efc565b61271060065486028161144757fe5b04915081830192508160096000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506127106005548602816114cd57fe5b04915081830192508160096000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555061154e858461434d565b94506000611563866003546004546001614364565b90506000811180156115815750600c5461157f82600c546144ae565b115b61158a57600080fd5b611596600c54826144ae565b600c819055506002546115ab82600c546144ae565b106115b557600080fd5b6115fe600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826144ae565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a380945050505050919050565b6000339050600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661170d57600080fd5b6001601860146101000a81548160ff02191690831515021790555050565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117c15780601f10611796576101008083540402835291602001916117c1565b820191906000526020600020905b8154815290600101906020018083116117a457829003601f168201915b505050505081565b600081600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600f6020528060005260406000206000915090505481565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f915080821415801561191557506000801b8214155b92505050919050565b6000600254905090565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156119bf57600080fd5b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115611a4857600080fd5b611a91600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361434d565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b5a600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361434d565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c23600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836144ae565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b60008060045490506000600354905060006001830360030a63017d78400290506000611d05836002028361434d565b90506000600c54905060008084600202611d31611d2b8b88600802026002880a016144ca565b8661434d565b81611d3857fe5b0490506000611d468861450f565b90505b808483011115611df2578381039150611d788a876001850302896002020160028581611d7157fe5b040261434d565b9950856001830302870196506001880197506001880360030a63017d7840029550611da6876002028761434d565b9450600086600202611dca611dc48d8a6008020260028a0a016144ca565b8861434d565b81611dd157fe5b04905082850194508284019350809250611dea8961450f565b915050611d49565b8183019250856001830302870196508298505050505050505050919050565b6000339050600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611e6c57600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b60035481565b600081565b60025481565b60065481565b60045481565b6000339050600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611f1f57600080fd5b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600047905090565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60055481565b6000339050600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661202d57600080fd5b6000601860146101000a81548160ff02191690831515021790555050565b6000600c54905090565b600080600c549050600080600454905060006120736001830361450f565b90506000600354905060006001840360030a63017d78400290505b828887031015612127576000838703905060008114156120c8576001870396506001850394506120c06001860361450f565b93505061208e565b6000826001830302905060008185039050828b039a50818160020201600284816120ee57fe5b04028801975080945082890398506001870396506001870360030a63017d784002935061211d6001880361450f565b955050505061208e565b60008811156121615760008160018a0302830390508160018a0302816002020160028a8161215157fe5b0402860195508887039650809250505b849650505050505050919050565b6000339050600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166121ca57600080fd5b60018214156121db57826006819055505b60028214156121ec57826007819055505b60038214156121fd57826005819055505b505050565b6000339050600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661225d57600080fd5b83600381905550826004819055508160096000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050565b6000600354905090565b6000339050600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661233c57600080fd5b84601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b6000339050600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166124a257600080fd5b600033905082600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180156124fb5750660aa87bee53800083115b61250457600080fd5b82600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550660aa87bee53800060096000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506125d883660aa87bee53800061434d565b92508073ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015612620573d6000803e3d6000fd5b50505050565b60008033905061263581611f83565b91505090565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156126d15780601f106126a6576101008083540402835291602001916126d1565b820191906000526020600020905b8154815290600101906020018083116126b457829003601f168201915b505050505081565b6000339050600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661273457600080fd5b6001601860156101000a81548160ff02191690831515021790555050565b600e6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000803390506127d4600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461434d565b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612860600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846144ae565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600191505092915050565b6000339050600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661296e57600080fd5b8160019080519060200190612984929190614682565b505050565b6000339050600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166129e457600080fd5b81600090805190602001906129fa929190614682565b505050565b60075481565b6000339050600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612a6057600080fd5b81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015612ab55750660aa87bee53800082115b612abe57600080fd5b660aa87bee53800060096000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff167f6553897c25961cd3a105492c25576d0552123ee868aca283e90f3b4224d7d177836040518082815260200191505060405180910390a2612be082660aa87bee53800061434d565b91508273ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612c28573d6000803e3d6000fd5b50505050565b6000339050600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612c8957600080fd5b6001821415612f025760005b8651811015612f0057838181518110612caa57fe5b6020026020010151600e6000898481518110612cc257fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000868281518110612d5057fe5b60200260200101511115612ef357858181518110612d6a57fe5b602002602001015160086000898481518110612d8257fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550848181518110612ddd57fe5b602002602001015160096000898481518110612df557fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550858181518110612e5057fe5b6020026020010151600c60008282540192505081905550868181518110612e7357fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef888481518110612ed557fe5b60200260200101516040518082815260200191505060405180910390a35b8080600101915050612c95565b505b600282141561317b5760005b865181101561317957838181518110612f2357fe5b6020026020010151600e6000898481518110612f3b57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000868281518110612fc957fe5b6020026020010151111561316c57858181518110612fe357fe5b602002602001015160086000898481518110612ffb57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555084818151811061305657fe5b60200260200101516009600089848151811061306e57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508581815181106130c957fe5b6020026020010151600c600082825403925050819055503073ffffffffffffffffffffffffffffffffffffffff1687828151811061310357fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef88848151811061314e57fe5b60200260200101516040518082815260200191505060405180910390a35b8080600101915050612f0e565b505b505050505050565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000339050600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661326557600080fd5b6001600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000339050600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661331c57600080fd5b83600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b60006133ef612626565b116133f957600080fd5b613402336118d3565b15613458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061472e6024913960400191505060405180910390fd5b60011515601860169054906101000a900460ff1615151461347857600080fd5b6000339050600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156134c957600080fd5b600082905060006134db82600161454b565b905060006127106007548302816134ee57fe5b0490506134fd600c548461434d565b600c8190555061354c600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461434d565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508060096000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550660aa87bee53800060096000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550660aa87bee5380008101905061368a828261434d565b91508373ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156136d2573d6000803e3d6000fd5b503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a35050505050565b6000339050600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661379a57600080fd5b6000601860156101000a81548160ff02191690831515021790555050565b600080339050600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661381457600080fd5b655af3107a400060096000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161388757600080fd5b612710610e1060096000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205402816138f757fe5b0460096000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550612710610e1060096000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205402816139d657fe5b0460096000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506127106105dc60096000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540281613ab557fe5b0460096000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555061271061051460096000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540281613b9457fe5b0460096000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600060096000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600191505090565b613c7b336118d3565b15613cee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4275792066726f6d20636f6e7472616374206973206e6f7420616c6c6f77656481525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613d90576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f53656c6620526566657272616c204e6f7420416c6c6f7765640000000000000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613e71576001600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b80600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550613ef83461138b565b5050565b600082905060005b60038110156142d8576000600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015613fec575081600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b8015613ff85750600082115b1561415e57600a6013838154811061400c57fe5b90600052602060002090602091828204019190069054906101000a900460ff1660ff1686028161403857fe5b04600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508093508073ffffffffffffffffffffffffffffffffffffffff167f02a6a2be713fedf52f113c0a759f1c1a23a113476d9b1b1a2a453c910660de4e600a601385815481106140cf57fe5b90600052602060002090602091828204019190069054906101000a900460ff1660ff168802816140fb57fe5b0484604051808381526020018281526020019250505060405180910390a2600a6013838154811061412857fe5b90600052602060002090602091828204019190069054906101000a900460ff1660ff1686028161415457fe5b04830392506142ca565b60008214156142c857600a6013838154811061417657fe5b90600052602060002090602091828204019190069054906101000a900460ff1660ff168602816141a257fe5b04600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508093508073ffffffffffffffffffffffffffffffffffffffff167f02a6a2be713fedf52f113c0a759f1c1a23a113476d9b1b1a2a453c910660de4e600a6013858154811061423957fe5b90600052602060002090602091828204019190069054906101000a900460ff1660ff1688028161426557fe5b0484604051808381526020018281526020019250505060405180910390a2600a6013838154811061429257fe5b90600052602060002090602091828204019190069054906101000a900460ff1660ff168602816142be57fe5b04830392506142c9565b5b5b508080600101915050613f04565b508060096000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550505050565b60008282111561435957fe5b818303905092915050565b6000806001840360030a63017d78400290506000614385866002028361434d565b90506000600c549050600080846002026143b16143ab8c88600802026002880a016144ca565b8661434d565b816143b857fe5b04905060006143c68961450f565b90505b8084830111156144725783810391506143f88b8760018503028c60020201600285816143f157fe5b040261434d565b9a508560018303028a0199506001890198506001890360030a63017d78400295506144268a6002028761434d565b945060008660020261444a6144448e8a6008020260028a0a016144ca565b8861434d565b8161445157fe5b0490508285019450828401935080925061446a8a61450f565b9150506143c9565b81830192508560018303028a01995060011515881515141561449d5789600381905550886004819055505b829650505050505050949350505050565b6000808284019050838110156144c057fe5b8091505092915050565b600080600260018401816144da57fe5b0490508291505b81811015614509578091506002818285816144f857fe5b04018161450157fe5b0490506144e1565b50919050565b600080600090506000600190505b838111614541576127108185030262030d400382019150808060010191505061451d565b5080915050919050565b600080600c549050600080600454905060006145696001830361450f565b90506000600354905060006001840360030a63017d78400290505b82898703101561461d576000838703905060008114156145be576001870396506001850394506145b66001860361450f565b935050614584565b6000826001830302905060008185039050828c039b50818160020201600284816145e457fe5b04028801975080945082890398506001870396506001870360030a63017d78400293506146136001880361450f565b9550505050614584565b60008911156146575760008160018b0302830390508160018b0302816002020160028b8161464757fe5b0402860195508987039650809250505b6001151588151514156146735783600481905550816003819055505b84965050505050505092915050565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826146b857600085556146ff565b82601f106146d157805160ff19168380011785556146ff565b828001600101855582156146ff579182015b828111156146fe5782518255916020019190600101906146e3565b5b50905061470c9190614710565b5090565b5b80821115614729576000816000905550600101614711565b509056fe53656c6c696e672066726f6d20636f6e7472616374206973206e6f7420616c6c6f776564a2646970667358221220134ecc9fbed43e88ec5ed583913dabec22c682cbebb6bd70ee1b19909160707564736f6c63430007060033

Deployed Bytecode

0x60806040526004361061026a5760003560e01c806380aedcac11610144578063c47f0027116100b6578063df8089ef1161007a578063df8089ef146111e6578063e1f06a8e14611237578063e4849b32146112c8578063ec7e6be314611303578063ed3ad9cf1461131a578063f088d54714611347576102f2565b8063c47f002714610d88578063d36d049714610e50578063d6ef7af014610e7b578063da51cc8514610ed6578063dd62ed3e14611161576102f2565b8063949e8acd11610108578063949e8acd14610b0257806395d89b4114610b2d578063998541ba14610bbd5780639b5aaebf14610bd4578063a9059cbb14610c4f578063b84c824614610cc0576102f2565b806380aedcac1461095757806381180b401461099c5780638620410b146109eb5780638e8a8da914610a165780639342c8f414610ac7576102f2565b8063313ce567116101dd5780636b2f4632116101a15780636b2f46321461080b57806370a082311461083657806370ba11131461089b57806370c1de19146108c65780637824407f146108dd57806379678ac414610908576102f2565b8063313ce5671461070b578063324536eb14610739578063343dfb7e146107645780635001f3b51461078f57806368fa8134146107ba576102f2565b806318160ddd1161022f57806318160ddd146105595780631d62ebd91461058457806323b872dd146105e95780632876b9271461067a5780632b68b9c6146106c95780632e926d49146106e0576102f2565b806221e81c1461037557806306fdde031461038c578063095ea7b31461041c5780630c9a49f01461048d57806316279055146104f2576102f2565b366102f25760035434116102e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f56657279204c6f7720416d6f756e74000000000000000000000000000000000081525060200191505060405180910390fd5b6102ef3461138b565b50005b6003543411610369576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f56657279204c6f7720416d6f756e74000000000000000000000000000000000081525060200191505060405180910390fd5b6103723461138b565b50005b34801561038157600080fd5b5061038a6116b2565b005b34801561039857600080fd5b506103a161172b565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103e15780820151818401526020810190506103c6565b50505050905090810190601f16801561040e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561042857600080fd5b506104756004803603604081101561043f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117c9565b60405180821515815260200191505060405180910390f35b34801561049957600080fd5b506104dc600480360360208110156104b057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118bb565b6040518082815260200191505060405180910390f35b3480156104fe57600080fd5b506105416004803603602081101561051557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118d3565b60405180821515815260200191505060405180910390f35b34801561056557600080fd5b5061056e61191e565b6040518082815260200191505060405180910390f35b34801561059057600080fd5b506105d3600480360360208110156105a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611928565b6040518082815260200191505060405180910390f35b3480156105f557600080fd5b506106626004803603606081101561060c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611971565b60405180821515815260200191505060405180910390f35b34801561068657600080fd5b506106b36004803603602081101561069d57600080fd5b8101908080359060200190929190505050611cd6565b6040518082815260200191505060405180910390f35b3480156106d557600080fd5b506106de611e11565b005b3480156106ec57600080fd5b506106f5611ea7565b6040518082815260200191505060405180910390f35b34801561071757600080fd5b50610720611ead565b604051808260ff16815260200191505060405180910390f35b34801561074557600080fd5b5061074e611eb2565b6040518082815260200191505060405180910390f35b34801561077057600080fd5b50610779611eb8565b6040518082815260200191505060405180910390f35b34801561079b57600080fd5b506107a4611ebe565b6040518082815260200191505060405180910390f35b3480156107c657600080fd5b50610809600480360360208110156107dd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ec4565b005b34801561081757600080fd5b50610820611f7b565b6040518082815260200191505060405180910390f35b34801561084257600080fd5b506108856004803603602081101561085957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f83565b6040518082815260200191505060405180910390f35b3480156108a757600080fd5b506108b0611fcc565b6040518082815260200191505060405180910390f35b3480156108d257600080fd5b506108db611fd2565b005b3480156108e957600080fd5b506108f261204b565b6040518082815260200191505060405180910390f35b34801561091457600080fd5b506109416004803603602081101561092b57600080fd5b8101908080359060200190929190505050612055565b6040518082815260200191505060405180910390f35b34801561096357600080fd5b5061099a6004803603604081101561097a57600080fd5b81019080803590602001909291908035906020019092919050505061216f565b005b3480156109a857600080fd5b506109e9600480360360608110156109bf57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050612202565b005b3480156109f757600080fd5b50610a006122d7565b6040518082815260200191505060405180910390f35b348015610a2257600080fd5b50610ac560048036036080811015610a3957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122e1565b005b348015610ad357600080fd5b50610b0060048036036020811015610aea57600080fd5b8101908080359060200190929190505050612447565b005b348015610b0e57600080fd5b50610b17612626565b6040518082815260200191505060405180910390f35b348015610b3957600080fd5b50610b4261263b565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b82578082015181840152602081019050610b67565b50505050905090810190601f168015610baf5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610bc957600080fd5b50610bd26126d9565b005b348015610be057600080fd5b50610c2360048036036020811015610bf757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612752565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c5b57600080fd5b50610ca860048036036040811015610c7257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612785565b60405180821515815260200191505060405180910390f35b348015610ccc57600080fd5b50610d8660048036036020811015610ce357600080fd5b8101908080359060200190640100000000811115610d0057600080fd5b820183602082011115610d1257600080fd5b80359060200191846001830284011164010000000083111715610d3457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612913565b005b348015610d9457600080fd5b50610e4e60048036036020811015610dab57600080fd5b8101908080359060200190640100000000811115610dc857600080fd5b820183602082011115610dda57600080fd5b80359060200191846001830284011164010000000083111715610dfc57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612989565b005b348015610e5c57600080fd5b50610e656129ff565b6040518082815260200191505060405180910390f35b348015610e8757600080fd5b50610ed460048036036040811015610e9e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612a05565b005b348015610ee257600080fd5b5061115f600480360360a0811015610ef957600080fd5b8101908080359060200190640100000000811115610f1657600080fd5b820183602082011115610f2857600080fd5b80359060200191846020830284011164010000000083111715610f4a57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610faa57600080fd5b820183602082011115610fbc57600080fd5b80359060200191846020830284011164010000000083111715610fde57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561103e57600080fd5b82018360208201111561105057600080fd5b8035906020019184602083028401116401000000008311171561107257600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156110d257600080fd5b8201836020820111156110e457600080fd5b8035906020019184602083028401116401000000008311171561110657600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190505050612c2e565b005b34801561116d57600080fd5b506111d06004803603604081101561118457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613183565b6040518082815260200191505060405180910390f35b3480156111f257600080fd5b506112356004803603602081101561120957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061320a565b005b34801561124357600080fd5b506112c66004803603606081101561125a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506132c1565b005b3480156112d457600080fd5b50611301600480360360208110156112eb57600080fd5b81019080803590602001909291905050506133e5565b005b34801561130f57600080fd5b5061131861373f565b005b34801561132657600080fd5b5061132f6137b8565b60405180821515815260200191505060405180910390f35b6113896004803603602081101561135d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613c72565b005b6000601860149054906101000a900460ff1661140f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f436f6e747261637420646f6573206e6f7420616c6c6f7700000000000000000081525060200191505060405180910390fd5b60008061271060065485028161142157fe5b049050808201915060003390506114388282613efc565b61271060065486028161144757fe5b04915081830192508160096000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506127106005548602816114cd57fe5b04915081830192508160096000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555061154e858461434d565b94506000611563866003546004546001614364565b90506000811180156115815750600c5461157f82600c546144ae565b115b61158a57600080fd5b611596600c54826144ae565b600c819055506002546115ab82600c546144ae565b106115b557600080fd5b6115fe600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826144ae565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a380945050505050919050565b6000339050600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661170d57600080fd5b6001601860146101000a81548160ff02191690831515021790555050565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117c15780601f10611796576101008083540402835291602001916117c1565b820191906000526020600020905b8154815290600101906020018083116117a457829003601f168201915b505050505081565b600081600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600f6020528060005260406000206000915090505481565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f915080821415801561191557506000801b8214155b92505050919050565b6000600254905090565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156119bf57600080fd5b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115611a4857600080fd5b611a91600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361434d565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b5a600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361434d565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c23600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836144ae565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b60008060045490506000600354905060006001830360030a63017d78400290506000611d05836002028361434d565b90506000600c54905060008084600202611d31611d2b8b88600802026002880a016144ca565b8661434d565b81611d3857fe5b0490506000611d468861450f565b90505b808483011115611df2578381039150611d788a876001850302896002020160028581611d7157fe5b040261434d565b9950856001830302870196506001880197506001880360030a63017d7840029550611da6876002028761434d565b9450600086600202611dca611dc48d8a6008020260028a0a016144ca565b8861434d565b81611dd157fe5b04905082850194508284019350809250611dea8961450f565b915050611d49565b8183019250856001830302870196508298505050505050505050919050565b6000339050600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611e6c57600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b60035481565b600081565b60025481565b60065481565b60045481565b6000339050600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611f1f57600080fd5b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600047905090565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60055481565b6000339050600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661202d57600080fd5b6000601860146101000a81548160ff02191690831515021790555050565b6000600c54905090565b600080600c549050600080600454905060006120736001830361450f565b90506000600354905060006001840360030a63017d78400290505b828887031015612127576000838703905060008114156120c8576001870396506001850394506120c06001860361450f565b93505061208e565b6000826001830302905060008185039050828b039a50818160020201600284816120ee57fe5b04028801975080945082890398506001870396506001870360030a63017d784002935061211d6001880361450f565b955050505061208e565b60008811156121615760008160018a0302830390508160018a0302816002020160028a8161215157fe5b0402860195508887039650809250505b849650505050505050919050565b6000339050600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166121ca57600080fd5b60018214156121db57826006819055505b60028214156121ec57826007819055505b60038214156121fd57826005819055505b505050565b6000339050600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661225d57600080fd5b83600381905550826004819055508160096000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050565b6000600354905090565b6000339050600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661233c57600080fd5b84601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b6000339050600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166124a257600080fd5b600033905082600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180156124fb5750660aa87bee53800083115b61250457600080fd5b82600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550660aa87bee53800060096000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506125d883660aa87bee53800061434d565b92508073ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015612620573d6000803e3d6000fd5b50505050565b60008033905061263581611f83565b91505090565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156126d15780601f106126a6576101008083540402835291602001916126d1565b820191906000526020600020905b8154815290600101906020018083116126b457829003601f168201915b505050505081565b6000339050600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661273457600080fd5b6001601860156101000a81548160ff02191690831515021790555050565b600e6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000803390506127d4600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461434d565b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612860600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846144ae565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600191505092915050565b6000339050600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661296e57600080fd5b8160019080519060200190612984929190614682565b505050565b6000339050600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166129e457600080fd5b81600090805190602001906129fa929190614682565b505050565b60075481565b6000339050600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612a6057600080fd5b81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015612ab55750660aa87bee53800082115b612abe57600080fd5b660aa87bee53800060096000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff167f6553897c25961cd3a105492c25576d0552123ee868aca283e90f3b4224d7d177836040518082815260200191505060405180910390a2612be082660aa87bee53800061434d565b91508273ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612c28573d6000803e3d6000fd5b50505050565b6000339050600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612c8957600080fd5b6001821415612f025760005b8651811015612f0057838181518110612caa57fe5b6020026020010151600e6000898481518110612cc257fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000868281518110612d5057fe5b60200260200101511115612ef357858181518110612d6a57fe5b602002602001015160086000898481518110612d8257fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550848181518110612ddd57fe5b602002602001015160096000898481518110612df557fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550858181518110612e5057fe5b6020026020010151600c60008282540192505081905550868181518110612e7357fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef888481518110612ed557fe5b60200260200101516040518082815260200191505060405180910390a35b8080600101915050612c95565b505b600282141561317b5760005b865181101561317957838181518110612f2357fe5b6020026020010151600e6000898481518110612f3b57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000868281518110612fc957fe5b6020026020010151111561316c57858181518110612fe357fe5b602002602001015160086000898481518110612ffb57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555084818151811061305657fe5b60200260200101516009600089848151811061306e57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508581815181106130c957fe5b6020026020010151600c600082825403925050819055503073ffffffffffffffffffffffffffffffffffffffff1687828151811061310357fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef88848151811061314e57fe5b60200260200101516040518082815260200191505060405180910390a35b8080600101915050612f0e565b505b505050505050565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000339050600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661326557600080fd5b6001600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000339050600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661331c57600080fd5b83600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b60006133ef612626565b116133f957600080fd5b613402336118d3565b15613458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061472e6024913960400191505060405180910390fd5b60011515601860169054906101000a900460ff1615151461347857600080fd5b6000339050600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156134c957600080fd5b600082905060006134db82600161454b565b905060006127106007548302816134ee57fe5b0490506134fd600c548461434d565b600c8190555061354c600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461434d565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508060096000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550660aa87bee53800060096000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550660aa87bee5380008101905061368a828261434d565b91508373ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156136d2573d6000803e3d6000fd5b503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a35050505050565b6000339050600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661379a57600080fd5b6000601860156101000a81548160ff02191690831515021790555050565b600080339050600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661381457600080fd5b655af3107a400060096000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161388757600080fd5b612710610e1060096000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205402816138f757fe5b0460096000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550612710610e1060096000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205402816139d657fe5b0460096000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506127106105dc60096000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540281613ab557fe5b0460096000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555061271061051460096000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540281613b9457fe5b0460096000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600060096000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600191505090565b613c7b336118d3565b15613cee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4275792066726f6d20636f6e7472616374206973206e6f7420616c6c6f77656481525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613d90576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f53656c6620526566657272616c204e6f7420416c6c6f7765640000000000000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613e71576001600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b80600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550613ef83461138b565b5050565b600082905060005b60038110156142d8576000600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015613fec575081600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b8015613ff85750600082115b1561415e57600a6013838154811061400c57fe5b90600052602060002090602091828204019190069054906101000a900460ff1660ff1686028161403857fe5b04600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508093508073ffffffffffffffffffffffffffffffffffffffff167f02a6a2be713fedf52f113c0a759f1c1a23a113476d9b1b1a2a453c910660de4e600a601385815481106140cf57fe5b90600052602060002090602091828204019190069054906101000a900460ff1660ff168802816140fb57fe5b0484604051808381526020018281526020019250505060405180910390a2600a6013838154811061412857fe5b90600052602060002090602091828204019190069054906101000a900460ff1660ff1686028161415457fe5b04830392506142ca565b60008214156142c857600a6013838154811061417657fe5b90600052602060002090602091828204019190069054906101000a900460ff1660ff168602816141a257fe5b04600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508093508073ffffffffffffffffffffffffffffffffffffffff167f02a6a2be713fedf52f113c0a759f1c1a23a113476d9b1b1a2a453c910660de4e600a6013858154811061423957fe5b90600052602060002090602091828204019190069054906101000a900460ff1660ff1688028161426557fe5b0484604051808381526020018281526020019250505060405180910390a2600a6013838154811061429257fe5b90600052602060002090602091828204019190069054906101000a900460ff1660ff168602816142be57fe5b04830392506142c9565b5b5b508080600101915050613f04565b508060096000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550505050565b60008282111561435957fe5b818303905092915050565b6000806001840360030a63017d78400290506000614385866002028361434d565b90506000600c549050600080846002026143b16143ab8c88600802026002880a016144ca565b8661434d565b816143b857fe5b04905060006143c68961450f565b90505b8084830111156144725783810391506143f88b8760018503028c60020201600285816143f157fe5b040261434d565b9a508560018303028a0199506001890198506001890360030a63017d78400295506144268a6002028761434d565b945060008660020261444a6144448e8a6008020260028a0a016144ca565b8861434d565b8161445157fe5b0490508285019450828401935080925061446a8a61450f565b9150506143c9565b81830192508560018303028a01995060011515881515141561449d5789600381905550886004819055505b829650505050505050949350505050565b6000808284019050838110156144c057fe5b8091505092915050565b600080600260018401816144da57fe5b0490508291505b81811015614509578091506002818285816144f857fe5b04018161450157fe5b0490506144e1565b50919050565b600080600090506000600190505b838111614541576127108185030262030d400382019150808060010191505061451d565b5080915050919050565b600080600c549050600080600454905060006145696001830361450f565b90506000600354905060006001840360030a63017d78400290505b82898703101561461d576000838703905060008114156145be576001870396506001850394506145b66001860361450f565b935050614584565b6000826001830302905060008185039050828c039b50818160020201600284816145e457fe5b04028801975080945082890398506001870396506001870360030a63017d78400293506146136001880361450f565b9550505050614584565b60008911156146575760008160018b0302830390508160018b0302816002020160028b8161464757fe5b0402860195508987039650809250505b6001151588151514156146735783600481905550816003819055505b84965050505050505092915050565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826146b857600085556146ff565b82601f106146d157805160ff19168380011785556146ff565b828001600101855582156146ff579182015b828111156146fe5782518255916020019190600101906146e3565b5b50905061470c9190614710565b5090565b5b80821115614729576000816000905550600101614711565b509056fe53656c6c696e672066726f6d20636f6e7472616374206973206e6f7420616c6c6f776564a2646970667358221220134ecc9fbed43e88ec5ed583913dabec22c682cbebb6bd70ee1b19909160707564736f6c63430007060033

Deployed Bytecode Sourcemap

27:24046:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10158:13;;10146:9;:25;10138:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10202:25;10217:9;10202:14;:25::i;:::-;;27:24046;;10311:13;;10299:9;:25;10291:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10355:25;10370:9;10355:14;:25::i;:::-;;27:24046;6422:83;;;;;;;;;;;;;:::i;:::-;;1227:42;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3889:206;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2115:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5700:617;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12983:122;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11529:148;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4246:542;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17967:2290;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12199:86;;;;;;;;;;;;;:::i;:::-;;1529:74;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1311:34;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1352:37;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1672:34;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1610:23;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5564:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12835:137;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13578:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1640:25;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6327:83;;;;;;;;;;;;;:::i;:::-;;13116:110;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22269:1587;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5061:359;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4800:249;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13829:120;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7215:203;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8003:468;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13304:182;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1276:28;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6611:82;;;;;;;;;;;;;:::i;:::-;;2066:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11688:500;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12426:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12296:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1713:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6704:503;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2623:1254;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4107:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5432:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12561:262;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10430:1088;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6517:82;;;;;;;;;;;;;:::i;:::-;;7424:567;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;9681:403;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14115:1444;14201:7;14257;;;;;;;;;;;14249:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14302:23;14340:18;14397:5;14381:15;;14361:17;:35;:41;;;;;;14340:62;;14432:10;14413:29;;;;14453:24;14480:10;14453:37;;14501:46;14519:10;14530:16;14501:17;:46::i;:::-;14607:5;14591:15;;14571:17;:35;:41;;;;;;14558:54;;14642:10;14623:29;;;;14699:10;14663:20;:32;14684:10;;;;;;;;;;;14663:32;;;;;;;;;;;;;;;;:46;;;;;;;;;;;14762:5;14753:7;;14734:17;:26;14733:34;;;;;;14720:47;;14797:10;14778:29;;;;14852:10;14818:20;:30;14839:8;;;;;;;;;;;14818:30;;;;;;;;;;;;;;;;:44;;;;;;;;;;;14893:48;14906:17;14925:15;14893:12;:48::i;:::-;14873:68;;14962:23;14988:64;15006:17;15026:13;;15041:4;;15047;14988:17;:64::i;:::-;14962:90;;15089:1;15071:15;:19;:82;;;;;15140:12;;15095:42;15108:15;15124:12;;15095;:42::i;:::-;:57;15071:82;15063:91;;;;;;15180:43;15193:12;;15207:15;15180:12;:43::i;:::-;15165:12;:58;;;;15288:12;;15242:42;15255:15;15271:12;;15242;:42::i;:::-;:59;15234:68;;;;;;15353;15366:19;:37;15386:16;15366:37;;;;;;;;;;;;;;;;15405:15;15353:12;:68::i;:::-;15313:19;:37;15333:16;15313:37;;;;;;;;;;;;;;;:108;;;;15484:16;15460:58;;15477:4;15460:58;;;15502:15;15460:58;;;;;;;;;;;;;;;;;;15536:15;15529:22;;;;;;14115:1444;;;:::o;6422:83::-;218:24;245:10;218:37;;274:14;:32;289:16;274:32;;;;;;;;;;;;;;;;;;;;;;;;;266:41;;;;;;6493:4:::1;6483:7;;:14;;;;;;;;;;;;;;;;;;6422:83:::0;:::o;1227:42::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3889:206::-;3956:4;4003:9;3971:7;:19;3979:10;3971:19;;;;;;;;;;;;;;;:29;3991:8;3971:29;;;;;;;;;;;;;;;:41;;;;4047:8;4026:41;;4035:10;4026:41;;;4057:9;4026:41;;;;;;;;;;;;;;;;;;4083:4;4076:11;;3889:206;;;;:::o;2115:49::-;;;;;;;;;;;;;;;;;:::o;5700:617::-;5758:4;6020:16;6047:19;6069:66;6047:88;;;;6238:7;6226:20;6214:32;;6278:11;6266:8;:23;;:42;;;;;6305:3;6293:15;;:8;:15;;6266:42;6258:51;;;;5700:617;;;:::o;12983:122::-;13053:7;13085:12;;13078:19;;12983:122;:::o;11529:148::-;11603:7;11635:20;:30;11656:8;11635:30;;;;;;;;;;;;;;;;11628:37;;11529:148;;;:::o;4246:542::-;4330:4;4366:19;:26;4386:5;4366:26;;;;;;;;;;;;;;;;4353:9;:39;;4345:48;;;;;;4423:7;:14;4431:5;4423:14;;;;;;;;;;;;;;;:26;4438:10;4423:26;;;;;;;;;;;;;;;;4410:9;:39;;4402:48;;;;;;4488:50;4501:19;:26;4521:5;4501:26;;;;;;;;;;;;;;;;4528:9;4488:12;:50::i;:::-;4459:19;:26;4479:5;4459:26;;;;;;;;;;;;;;;:79;;;;4575:50;4588:7;:14;4596:5;4588:14;;;;;;;;;;;;;;;:26;4603:10;4588:26;;;;;;;;;;;;;;;;4615:9;4575:12;:50::i;:::-;4547:7;:14;4555:5;4547:14;;;;;;;;;;;;;;;:26;4562:10;4547:26;;;;;;;;;;;;;;;:78;;;;4663:50;4676:19;:26;4696:5;4676:26;;;;;;;;;;;;;;;;4703:9;4663:12;:50::i;:::-;4634:19;:26;4654:5;4634:26;;;;;;;;;;;;;;;:79;;;;4743:5;4727:33;;4736:5;4727:33;;;4750:9;4727:33;;;;;;;;;;;;;;;;;;4776:4;4769:11;;4246:542;;;;;:::o;17967:2290::-;18041:7;18066:12;18081:4;;18066:19;;18096:21;18120:13;;18096:37;;18144:30;18211:1;18206:4;:6;18202:1;:11;1514:8;18178:36;18144:71;;18226:15;18244:55;18260:13;18258:1;:15;18276:22;18244:12;:55::i;:::-;18226:73;;18310:20;18333:12;;18310:35;;18356:20;18391:23;18723:22;18721:1;:24;18451:253;18487:166;18616:9;18593:22;18591:1;:24;:34;18557:1;18548:7;:10;:78;18487:4;:166::i;:::-;18678:7;18451:12;:253::i;:::-;18432:314;;;;;;18391:366;;18768:16;18787:17;18799:4;18787:11;:17::i;:::-;18768:36;;18815:1264;18856:8;18840:12;18822:15;:30;18821:43;18815:1264;;;18909:12;18898:8;:23;18880:41;;18948:196;18979:9;19105:22;19084:1;19068:15;:17;19067:60;19051:13;19049:1;:15;19048:80;19026:1;19009:15;19008:19;;;;;;19007:122;18948:12;:196::i;:::-;18936:208;;19210:22;19207:1;19191:15;:17;19190:42;19175:13;:58;19159:74;;19262:1;19255:4;:8;19248:15;;19339:1;19334:4;:6;19329:1;19328:13;1514:8;19304:38;19278:65;;19368:55;19384:13;19382:1;:15;19400:22;19368:12;:55::i;:::-;19358:65;;19438:27;19814:22;19812:1;:24;19510:281;19550:182;19691:9;19668:22;19666:1;:24;:34;19628:1;19619:7;:10;:82;19550:4;:182::i;:::-;19761:7;19510:12;:281::i;:::-;19487:350;;;;;;19438:414;;19897:15;19882:12;:30;19867:45;;19957:15;19942:12;:30;19927:45;;20005:19;19987:37;;20050:17;20062:4;20050:11;:17::i;:::-;20039:28;;18815:1264;;;;20119:15;20104:12;:30;20089:45;;20196:22;20193:1;20177:15;:17;20176:42;20161:13;:58;20145:74;;20237:12;20230:19;;;;;;;;;;17967:2290;;;:::o;12199:86::-;218:24;245:10;218:37;;274:14;:32;289:16;274:32;;;;;;;;;;;;;;;;;;;;;;;;;266:41;;;;;;12269:7:::1;;;;;;;;;;;12256:21;;;1529:74:::0;;;;:::o;1311:34::-;1344:1;1311:34;:::o;1352:37::-;;;;:::o;1672:34::-;;;;:::o;1610:23::-;;;;:::o;5564:124::-;218:24;245:10;218:37;;274:14;:32;289:16;274:32;;;;;;;;;;;;;;;;;;;;;;;;;266:41;;;;;;5675:5:::1;5648:14;:24;5663:8;5648:24;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;5564:124:::0;;:::o;12835:137::-;12914:4;12943:21;12936:28;;12835:137;:::o;13578:169::-;13670:7;13702:19;:37;13722:16;13702:37;;;;;;;;;;;;;;;;13695:44;;13578:169;;;:::o;1640:25::-;;;;:::o;6327:83::-;218:24;245:10;218:37;;274:14;:32;289:16;274:32;;;;;;;;;;;;;;;;;;;;;;;;;266:41;;;;;;6397:5:::1;6387:7;;:15;;;;;;;;;;;;;;;;;;6327:83:::0;:::o;13116:110::-;13174:7;13206:12;;13199:19;;13116:110;:::o;22269:1587::-;22345:7;22370:20;22393:12;;22370:35;;22416:22;22453:12;22468:4;;22453:19;;22483:16;22502:19;22519:1;22514:4;:6;22502:11;:19::i;:::-;22483:38;;22532:21;22556:13;;22532:37;;22580:30;22649:1;22644:4;:6;22639:1;22638:13;1514:8;22614:38;22580:73;;22664:823;22697:8;22686:7;22671:12;:22;22670:35;22664:823;;;22731:20;22769:8;22754:12;:23;22731:46;;22811:1;22795:12;:17;22792:205;;;22876:1;22861:12;:16;22846:31;;22904:1;22896:9;;;;22935:19;22952:1;22947:4;:6;22935:11;:19::i;:::-;22924:30;;22973:8;;;22792:205;23011:9;23041:22;23038:1;23025:12;:14;23024:39;23011:53;;23079:9;23107:1;23091:13;:17;23079:29;;23143:12;23133:7;:22;23123:32;;23229:1;23226;23224;:3;23223:7;23219:1;23206:12;:14;;;;;;23205:26;23187:14;:45;23170:62;;23263:1;23247:17;;23309:12;23294;:27;23279:42;;23348:1;23343:4;:6;23336:13;;23426:1;23421:4;:6;23416:1;23415:13;1514:8;23391:38;23365:65;;23456:19;23473:1;23468:4;:6;23456:11;:19::i;:::-;23445:30;;22664:823;;;;;;23510:1;23500:7;:11;23497:311;;;23538:9;23579:22;23576:1;23568:7;:9;23567:34;23550:13;:52;23538:64;;23685:22;23682:1;23674:7;:9;23673:34;23669:1;23667;:3;23666:42;23662:1;23654:7;:9;;;;;;23653:56;23635:14;:75;23618:92;;23756:7;23741:12;:22;23726:37;;23795:1;23779:17;;23497:311;;23834:14;23827:21;;;;;;;;22269:1587;;;:::o;5061:359::-;218:24;245:10;218:37;;274:14;:32;289:16;274:32;;;;;;;;;;;;;;;;;;;;;;;;;266:41;;;;;;5180:1:::1;5168:8;:13;5165:80;;;5225:8;5207:15;:26;;;;5165:80;5270:1;5258:8;:13;5255:76;;;5311:8;5297:11;:22;;;;5255:76;5356:1;5344:8;:13;5341:72;;;5393:8;5383:7;:18;;;;5341:72;5061:359:::0;;;:::o;4800:249::-;218:24;245:10;218:37;;274:14;:32;289:16;274:32;;;;;;;;;;;;;;;;;;;;;;;;;266:41;;;;;;4950:13:::1;4934;:29;;;;4981:4;4974;:11;;;;5031:10;4996:20;:32;5017:10;;;;;;;;;;;4996:32;;;;;;;;;;;;;;;:45;;;;4800:249:::0;;;;:::o;13829:120::-;13896:7;13928:13;;13921:20;;13829:120;:::o;7215:203::-;218:24;245:10;218:37;;274:14;:32;289:16;274:32;;;;;;;;;;;;;;;;;;;;;;;;;266:41;;;;;;7336:5:::1;7329:4;;:12;;;;;;;;;;;;;;;;;;7359:5;7352:4;;:12;;;;;;;;;;;;;;;;;;7382:5;7375:4;;:12;;;;;;;;;;;;;;;;;;7405:5;7398:4;;:12;;;;;;;;;;;;;;;;;;7215:203:::0;;;;;:::o;8003:468::-;218:24;245:10;218:37;;274:14;:32;289:16;274:32;;;;;;;;;;;;;;;;;;;;;;;;;266:41;;;;;;8088:32:::1;8123:10;8088:45;;8191:7;8152:20;:38;8173:16;8152:38;;;;;;;;;;;;;;;;:46;:76;;;;;8212:16;8202:7;:26;8152:76;8144:85;;;::::0;::::1;;8282:7;8240:20;:38;8261:16;8240:38;;;;;;;;;;;;;;;;:49;;;;;;;;;;;8342:16;8300:20;:38;8321:16;;;;;;;;;;;8300:38;;;;;;;;;;;;;;;;:58;;;;;;;;;;;8379:39;8392:7;8401:16;8379:12;:39::i;:::-;8369:49;;8429:16;:25;;:34;8455:7;8429:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;318:1;8003:468:::0;;:::o;13304:182::-;13371:7;13396:24;13423:10;13396:37;;13451:27;13461:16;13451:9;:27::i;:::-;13444:34;;;13304:182;:::o;1276:28::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6611:82::-;218:24;245:10;218:37;;274:14;:32;289:16;274:32;;;;;;;;;;;;;;;;;;;;;;;;;266:41;;;;;;6681:4:::1;6670:8;;:15;;;;;;;;;;;;;;;;;;6611:82:::0;:::o;2066:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;11688:500::-;11784:4;11824:24;11851:10;11824:37;;11912:68;11925:19;:37;11945:16;11925:37;;;;;;;;;;;;;;;;11964:15;11912:12;:68::i;:::-;11872:19;:37;11892:16;11872:37;;;;;;;;;;;;;;;:108;;;;12025:62;12038:19;:31;12058:10;12038:31;;;;;;;;;;;;;;;;12071:15;12025:12;:62::i;:::-;11991:19;:31;12011:10;11991:31;;;;;;;;;;;;;;;:96;;;;12130:10;12103:55;;12112:16;12103:55;;;12142:15;12103:55;;;;;;;;;;;;;;;;;;12176:4;12169:11;;;11688:500;;;;:::o;12426:127::-;218:24;245:10;218:37;;274:14;:32;289:16;274:32;;;;;;;;;;;;;;;;;;;;;;;;;266:41;;;;;;12538:7:::1;12529:6;:16;;;;;;;;;;;;:::i;:::-;;12426:127:::0;;:::o;12296:119::-;218:24;245:10;218:37;;274:14;:32;289:16;274:32;;;;;;;;;;;;;;;;;;;;;;;;;266:41;;;;;;12402:5:::1;12395:4;:12;;;;;;;;;;;;:::i;:::-;;12296:119:::0;;:::o;1713:30::-;;;;:::o;6704:503::-;218:24;245:10;218:37;;274:14;:32;289:16;274:32;;;;;;;;;;;;;;;;;;;;;;;;;266:41;;;;;;6871:7:::1;6831:20;:38;6852:16;6831:38;;;;;;;;;;;;;;;;:47;;:77;;;;;6892:16;6882:7;:26;6831:77;6823:86;;;::::0;::::1;;6962:16;6920:20;:38;6941:16;;;;;;;;;;;6920:38;;;;;;;;;;;;;;;;:58;;;;;;;;;;;7031:7;6989:20;:38;7010:16;6989:38;;;;;;;;;;;;;;;;:49;;;;;;;;;;;7069:16;7054:40;;;7086:7;7054:40;;;;;;;;;;;;;;;;;;7115:39;7128:7;7137:16;7115:12;:39::i;:::-;7105:49;;7165:16;:25;;:34;7191:7;7165:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;6704:503:::0;;;:::o;2623:1254::-;218:24;245:10;218:37;;274:14;:32;289:16;274:32;;;;;;;;;;;;;;;;;;;;;;;;;266:41;;;;;;2844:1:::1;2832:8;:13;2829:516;;;2875:6;2871:463;2889:6;:13;2887:1;:15;2871:463;;;2962:7;2970:1;2962:10;;;;;;;;;;;;;;2941:7;:18;2949:6;2956:1;2949:9;;;;;;;;;;;;;;2941:18;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;3009:1;2994:9;3004:1;2994:12;;;;;;;;;;;;;;:16;2991:328;;;3086:9;3096:1;3086:12;;;;;;;;;;;;;;3052:19;:30;3072:6;3079:1;3072:9;;;;;;;;;;;;;;3052:30;;;;;;;;;;;;;;;;:46;;;;;;;;;;;3156:15;3172:1;3156:18;;;;;;;;;;;;;;3121:20;:31;3142:6;3149:1;3142:9;;;;;;;;;;;;;;3121:31;;;;;;;;;;;;;;;;:53;;;;;;;;;;;3213:9;3223:1;3213:12;;;;;;;;;;;;;;3197;;:28;;;;;;;;;;;3276:6;3283:1;3276:9;;;;;;;;;;;;;;3253:46;;3270:4;3253:46;;;3286:9;3296:1;3286:12;;;;;;;;;;;;;;3253:46;;;;;;;;;;;;;;;;;;2991:328;2903:3;;;;;;;2871:463;;;;2829:516;3370:1;3358:8;:13;3355:515;;;3401:6;3397:462;3415:6;:13;3413:1;:15;3397:462;;;3487:7;3495:1;3487:10;;;;;;;;;;;;;;3466:7;:18;3474:6;3481:1;3474:9;;;;;;;;;;;;;;3466:18;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;3534:1;3519:9;3529:1;3519:12;;;;;;;;;;;;;;:16;3516:328;;;3611:9;3621:1;3611:12;;;;;;;;;;;;;;3577:19;:30;3597:6;3604:1;3597:9;;;;;;;;;;;;;;3577:30;;;;;;;;;;;;;;;;:46;;;;;;;;;;;3681:15;3697:1;3681:18;;;;;;;;;;;;;;3646:20;:31;3667:6;3674:1;3667:9;;;;;;;;;;;;;;3646:31;;;;;;;;;;;;;;;;:53;;;;;;;;;;;3738:9;3748:1;3738:12;;;;;;;;;;;;;;3722;;:28;;;;;;;;;;;3805:4;3778:46;;3787:6;3794:1;3787:9;;;;;;;;;;;;;;3778:46;;;3811:9;3821:1;3811:12;;;;;;;;;;;;;;3778:46;;;;;;;;;;;;;;;;;;3516:328;3429:3;;;;;;;3397:462;;;;3355:515;2623:1254:::0;;;;;;:::o;4107:127::-;4180:4;4202:7;:14;4210:5;4202:14;;;;;;;;;;;;;;;:24;4217:8;4202:24;;;;;;;;;;;;;;;;4195:31;;4107:127;;;;:::o;5432:120::-;218:24;245:10;218:37;;274:14;:32;289:16;274:32;;;;;;;;;;;;;;;;;;;;;;;;;266:41;;;;;;5540:4:::1;5513:14;:24;5528:8;5513:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;5432:120:::0;;:::o;12561:262::-;218:24;245:10;218:37;;274:14;:32;289:16;274:32;;;;;;;;;;;;;;;;;;;;;;;;;266:41;;;;;;12731:17:::1;12712:16;;:36;;;;;;;;;;;;;;;;;;12772:11;12759:10;;:24;;;;;;;;;;;;;;;;;;12805:10;12794:8;;:21;;;;;;;;;;;;;;;;;;12561:262:::0;;;;:::o;10430:1088::-;151:1;138:10;:8;:10::i;:::-;:14;130:23;;;;;;10559:22:::1;10570:10;10559;:22::i;:::-;10558:23;10550:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10650:4;10641:13;;:5;;;;;;;;;;;:13;;;10632:23;;;::::0;::::1;;10666:32;10701:10;10666:45;;10749:19;:37;10769:16;10749:37;;;;;;;;;;;;;;;;10730:15;:56;;10722:65;;;::::0;::::1;;10798:15;10816;10798:33;;10842:17;10862:31;10880:7;10888:4;10862:17;:31::i;:::-;10842:51;;10904:18;10951:5;10938:11;;10925:9;:25;:31;;;;;;10904:52;;11015:35;11028:12;;11042:7;11015:12;:35::i;:::-;11000:12;:50;;;;11101:60;11114:19;:37;11134:16;11114:37;;;;;;;;;;;;;;;;11153:7;11101:12;:60::i;:::-;11061:19;:37;11081:16;11061:37;;;;;;;;;;;;;;;:100;;;;11208:10;11172:20;:32;11193:10;;;;;;;;;;;11172:32;;;;;;;;;;;;;;;;:46;;;;;;;;;;;11271:16;11229:20;:38;11250:16;;;;;;;;;;;11229:38;;;;;;;;;;;;;;;;:58;;;;;;;;;;;11324:16;11311:10;:29;11298:42;;11363:34;11376:9;11386:10;11363:12;:34::i;:::-;11351:46;;11408:16;:25;;:36;11434:9;11408:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;11495:4;11460:50;;11469:16;11460:50;;;11502:7;11460:50;;;;;;;;;;;;;;;;;;164:1;;;;10430:1088:::0;:::o;6517:82::-;218:24;245:10;218:37;;274:14;:32;289:16;274:32;;;;;;;;;;;;;;;;;;;;;;;;;266:41;;;;;;6586:5:::1;6575:8;;:16;;;;;;;;;;;;;;;;;;6517:82:::0;:::o;7424:567::-;7491:4;218:24;245:10;218:37;;274:14;:32;289:16;274:32;;;;;;;;;;;;;;;;;;;;;;;;;266:41;;;;;;7554:15:::1;7521:20;:32;7542:10;;;;;;;;;;;7521:32;;;;;;;;;;;;;;;;:48;7513:57;;;::::0;::::1;;7651:5;7645:4;7612:20;:32;7633:10;;;;;;;;;;;7612:32;;;;;;;;;;;;;;;;:37;7611:45;;;;;;7581:20;:26;7602:4;;;;;;;;;;;7581:26;;;;;;;;;;;;;;;;:75;;;;;;;;;;;7737:5;7731:4;7698:20;:32;7719:10;;;;;;;;;;;7698:32;;;;;;;;;;;;;;;;:37;7697:45;;;;;;7667:20;:26;7688:4;;;;;;;;;;;7667:26;;;;;;;;;;;;;;;;:75;;;;;;;;;;;7823:5;7817:4;7784:20;:32;7805:10;;;;;;;;;;;7784:32;;;;;;;;;;;;;;;;:37;7783:45;;;;;;7753:20;:26;7774:4;;;;;;;;;;;7753:26;;;;;;;;;;;;;;;;:75;;;;;;;;;;;7909:5;7903:4;7870:20;:32;7891:10;;;;;;;;;;;7870:32;;;;;;;;;;;;;;;;:37;7869:45;;;;;;7839:20;:26;7860:4;;;;;;;;;;;7839:26;;;;;;;;;;;;;;;;:75;;;;;;;;;;;7960:1;7925:20;:32;7946:10;;;;;;;;;;;7925:32;;;;;;;;;;;;;;;:36;;;;7979:4;7972:11;;7424:567:::0;;:::o;9681:403::-;9773:22;9784:10;9773;:22::i;:::-;9772:23;9764:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9865:10;9850:25;;:11;:25;;;;9842:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9939:11;9918:32;;:7;:19;9926:10;9918:19;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;9915:81;;9995:1;9965:14;:27;9980:11;9965:27;;;;;;;;;;;;;;;;:31;;;;;;;;;;;9915:81;10029:11;10007:7;:19;10015:10;10007:19;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;10051:25;10066:9;10051:14;:25::i;:::-;;9681:403;:::o;8482:1188::-;8593:31;8627:19;8593:53;;8661:6;8657:930;8673:1;8671;:3;8657:930;;;8705:16;8724:7;:24;8732:15;8724:24;;;;;;;;;;;;;;;;;;;;;;;;;8705:43;;8786:3;8766:24;;:8;:24;;;;:56;;;;;8821:1;8794:14;:24;8809:8;8794:24;;;;;;;;;;;;;;;;:28;8766:56;:63;;;;;8828:1;8826;:3;8766:63;8763:813;;;8931:2;8918:8;8927:1;8918:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8898:31;;:19;:31;8897:36;;;;;;8863:20;:30;8884:8;8863:30;;;;;;;;;;;;;;;;:70;;;;;;;;;;;8970:8;8952:26;;9009:8;9002:55;;;9052:2;9039:8;9048:1;9039:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9019:31;;:19;:31;9018:36;;;;;;9055:1;9002:55;;;;;;;;;;;;;;;;;;;;;;;;9137:2;9124:8;9133:1;9124:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9104:31;;:19;:31;9103:36;;;;;;9076:63;;;;8763:813;;;9182:1;9177;:6;9174:402;;;9286:2;9273:8;9282:1;9273:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9253:31;;:19;:31;9252:36;;;;;;9218:20;:30;9239:8;9218:30;;;;;;;;;;;;;;;;:70;;;;;;;;;;;9325:8;9307:26;;9364:8;9357:55;;;9407:2;9394:8;9403:1;9394:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9374:31;;:19;:31;9373:36;;;;;;9410:1;9357:55;;;;;;;;;;;;;;;;;;;;;;;;9492:2;9479:8;9488:1;9479:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9459:31;;:19;:31;9458:36;;;;;;9431:63;;;;9174:402;;;;8763:813;8657:930;8676:3;;;;;;;8657:930;;;;9639:23;9597:20;:38;9618:16;;;;;;;;;;;9597:38;;;;;;;;;;;;;;;;:65;;;;;;;;;;;8482:1188;;;:::o;24987:123::-;25045:7;25077:1;25072;:6;;25065:14;;;;25101:1;25097;:5;25090:12;;24987:123;;;;:::o;15570:2385::-;15699:7;15724:30;15791:1;15786:4;:6;15782:1;:11;1514:8;15758:36;15724:71;;15806:15;15824:55;15840:13;15838:1;:15;15856:22;15824:12;:55::i;:::-;15806:73;;15890:20;15913:12;;15890:35;;15936:20;15971:23;16303:22;16301:1;:24;16031:253;16067:166;16196:9;16173:22;16171:1;:24;:34;16137:1;16128:7;:10;:78;16067:4;:166::i;:::-;16258:7;16031:12;:253::i;:::-;16012:314;;;;;;15971:366;;16348:16;16367:17;16379:4;16367:11;:17::i;:::-;16348:36;;16395:1264;16436:8;16420:12;16402:15;:30;16401:43;16395:1264;;;16489:12;16478:8;:23;16460:41;;16528:196;16559:9;16685:22;16664:1;16648:15;:17;16647:60;16631:13;16629:1;:15;16628:80;16606:1;16589:15;16588:19;;;;;;16587:122;16528:12;:196::i;:::-;16516:208;;16790:22;16787:1;16771:15;:17;16770:42;16755:13;:58;16739:74;;16842:1;16835:4;:8;16828:15;;16919:1;16914:4;:6;16909:1;16908:13;1514:8;16884:38;16858:65;;16948:55;16964:13;16962:1;:15;16980:22;16948:12;:55::i;:::-;16938:65;;17018:27;17394:22;17392:1;:24;17090:281;17130:182;17271:9;17248:22;17246:1;:24;:34;17208:1;17199:7;:10;:82;17130:4;:182::i;:::-;17341:7;17090:12;:281::i;:::-;17067:350;;;;;;17018:414;;17477:15;17462:12;:30;17447:45;;17537:15;17522:12;:30;17507:45;;17585:19;17567:37;;17630:17;17642:4;17630:11;:17::i;:::-;17619:28;;16395:1264;;;;17699:15;17684:12;:30;17669:45;;17776:22;17773:1;17757:15;:17;17756:42;17741:13;:58;17725:74;;17821:4;17813:12;;:4;:12;;;17810:108;;;17867:13;17851;:29;;;;17902:4;17895;:11;;;;17810:108;17935:12;17928:19;;;;;;;;15570:2385;;;;;;:::o;25185:147::-;25243:7;25263:9;25279:1;25275;:5;25263:17;;25303:1;25298;:6;;25291:14;;;;25323:1;25316:8;;;25185:147;;;;:::o;23872:198::-;23917:6;23936;23955:1;23950;23946;:5;23945:11;;;;;;23936:20;;23971:1;23967:5;;23983:80;23994:1;23990;:5;23983:80;;;24016:1;24012:5;;24050:1;24045;24041;24037;:5;;;;;;:9;24036:15;;;;;;24032:19;;23983:80;;;23872:198;;;;:::o;20268:256::-;20340:7;20365:15;20383:1;20365:19;;20399:6;20408:1;20399:10;;20395:97;20413:4;20410:1;:7;20395:97;;20474:5;20471:1;20466:4;:6;20465:14;20457:6;:23;20447:33;;;;20418:3;;;;;;;20395:97;;;;20509:7;20502:14;;;20268:256;;;:::o;20536:1721::-;20627:7;20652:20;20675:12;;20652:35;;20698:22;20735:12;20750:4;;20735:19;;20765:16;20784:19;20801:1;20796:4;:6;20784:11;:19::i;:::-;20765:38;;20814:21;20838:13;;20814:37;;20862:30;20931:1;20926:4;:6;20921:1;20920:13;1514:8;20896:38;20862:73;;20946:823;20979:8;20968:7;20953:12;:22;20952:35;20946:823;;;21013:20;21051:8;21036:12;:23;21013:46;;21093:1;21077:12;:17;21074:205;;;21158:1;21143:12;:16;21128:31;;21186:1;21178:9;;;;21217:19;21234:1;21229:4;:6;21217:11;:19::i;:::-;21206:30;;21255:8;;;21074:205;21293:9;21323:22;21320:1;21307:12;:14;21306:39;21293:53;;21361:9;21389:1;21373:13;:17;21361:29;;21425:12;21415:7;:22;21405:32;;21511:1;21508;21506;:3;21505:7;21501:1;21488:12;:14;;;;;;21487:26;21469:14;:45;21452:62;;21545:1;21529:17;;21591:12;21576;:27;21561:42;;21630:1;21625:4;:6;21618:13;;21708:1;21703:4;:6;21698:1;21697:13;1514:8;21673:38;21647:65;;21738:19;21755:1;21750:4;:6;21738:11;:19::i;:::-;21727:30;;20946:823;;;;;;21792:1;21782:7;:11;21779:311;;;21820:9;21861:22;21858:1;21850:7;:9;21849:34;21832:13;:52;21820:64;;21967:22;21964:1;21956:7;:9;21955:34;21951:1;21949;:3;21948:42;21944:1;21936:7;:9;;;;;;21935:56;21917:14;:75;21900:92;;22038:7;22023:12;:22;22008:37;;22077:1;22061:17;;21779:311;;22121:4;22112:13;;:5;:13;;;22109:109;;;22158:4;22151;:11;;;;22193:13;22177;:29;;;;22109:109;22235:14;22228:21;;;;;;;;20536:1721;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

ipfs://134ecc9fbed43e88ec5ed583913dabec22c682cbebb6bd70ee1b199091607075
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.