ETH Price: $2,608.50 (-2.29%)
Gas: 1 Gwei

Token

Universe Finance (UFC)
 

Overview

Max Total Supply

5,600,000 UFC

Holders

240

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 6 Decimals)

Balance
325.890827 UFC

Value
$0.00
0x80c442f0c740e27d136e9d365f608c7b8a924475
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:
UniverseFinance

Compiler Version
v0.7.4+commit.3f05b770

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-11-27
*/

/**
 *Submitted for verification at Etherscan.io on 2020-11-26
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.7.4;
contract UniverseFinance {
   
   /**
   * using safemath for uint256
    */
     using SafeMath for uint256;
     
   event Migration(
        address indexed customerAddress,
        address indexed referrar,
        uint256 tokens,
        uint256 commission
       
    );
    
    
    event Burned(
        address indexed _idToDistribute,
        address indexed referrer,
        uint256 burnedAmountToken,
        uint256 percentageBurned,
        uint256 level
        );

   
    /**
    events for transfer
     */

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

   event onWithdraw(
        address indexed customerAddress,
        uint256 ethereumWithdrawn
    );

    /**
    * buy Event
     */

     event Buy(
         address indexed buyer,
         address indexed referrar,
         uint256 totalTokens,
         uint256 tokensTransfered,
         uint256 buyPrice,
         uint256 buyPriceAfterBuy,
         uint256 etherDeducted,
         uint256 circultedSupplyBeforeBuy,
         uint256 circultedSupplyAfterBuy
     );
   
   /**
    * sell Event
     */

     event Sell(
         address indexed seller,
         uint256 calculatedEtherTransfer,
         uint256 soldToken,
         uint256 sellPrice,
         uint256 sellPriceAfterSell,
         uint256 circultedSupplyBeforeSell,
         uint256 circultedSupplyAfterSell
     );
     
     event Reward(
       address indexed from,
       address indexed to,
       uint256 rewardAmount,
       uint256 holdingUsdValue,
       uint256 level
    );

   /** configurable variables
   *  name it should be decided on constructor
    */
    string public tokenName = "Universe Finance";

    /** configurable variables
   *  symbol it should be decided on constructor
    */

    string public tokenSymbol = "UFC";
   
   

    uint8 internal decimal = 6;
    mapping (address => uint) internal userLastAction;
    uint256 internal throttleTime = 30; 

    /** configurable variables
 
   
    /**
    * owner address
     */

    address public owner;
    uint256 internal maxBuyingLimit = 5000*10**6;
    uint256 internal _totalSupply = 5600000 * 10**6;
    uint256 internal _burnedSupply;
    uint256 internal currentPrice = 250000000000000;
    uint256 internal isBuyPrevented = 0;
    uint256 internal isSellPrevented = 0;
    uint256 internal isWithdrawPrevented = 0;
    uint256 internal initialPriceIncrement;
    uint256 internal _circulatedSupply;
    uint256 internal commFundsWallet;
    uint256 internal ethDecimal = 1000000000000000000;
    uint256 internal basePrice = 400;
    
    uint256 internal level1Commission = 900;
    uint256 internal level2Commission = 500;
    uint256 internal level3Commission = 200;
    uint256 internal level4Commission = 100;
    uint256 internal level5Commission = 500;
    uint256 internal level6Commission = 500;
    uint256 internal level7Commission = 500;
    uint256 internal level8Commission = 500;
    uint256 internal level9Commission = 500;
    uint256 internal level10Commission = 500;
    uint256 internal level11Commission = 250;
    uint256 internal level12Commission = 250;
    uint256 internal level13Commission = 250;
    uint256 internal level14Commission = 500;
    uint256 internal level15Commission = 500;
    
    //self holding required for rewards (in usd) 
    uint256 internal level1Holding = 100*10**18*10**6;
    uint256 internal level2Holding = 200*10**18*10**6;
    uint256 internal level3Holding = 200*10**18*10**6;
    uint256 internal level4Holding = 300*10**18*10**6;
    uint256 internal level5Holding = 300*10**18*10**6;
    uint256 internal level6Holding = 300*10**18*10**6;
    uint256 internal level7Holding = 300*10**18*10**6;
    uint256 internal level8Holding = 300*10**18*10**6;
    uint256 internal level9Holding = 300*10**18*10**6;
    uint256 internal level10Holding = 300*10**18*10**6;
    uint256 internal level11Holding = 400*10**18*10**6;
    uint256 internal level12Holding = 400*10**18*10**6;
    uint256 internal level13Holding = 400*10**18*10**6;
    uint256 internal level14Holding = 500*10**18*10**6;
    uint256 internal level15Holding = 500*10**18*10**6;

    mapping(address => uint256) internal tokenBalances;
    mapping(address => address) internal genTree;
    mapping(address => uint256) internal rewardBalanceLedger_;
    mapping(address => bool) internal isUserBuyDisallowed;
    mapping(address => bool) internal isUserSellDisallowed;
    mapping(address => bool) internal isUserWithdrawDisallowed;

    /**
    modifier for checking onlyOwner
     */

     modifier onlyOwner() {
         require(msg.sender == owner,"Caller is not the owner");
         _;
     }
     
     constructor()
    {
        //sonk = msg.sender;
       
        /**
        * set owner value msg.sender
         */
        owner = msg.sender;
    }

    /**
      getTotalsupply of contract
       */

    function totalSupply() external view returns(uint256) {
            return _totalSupply;
    }
   
   
     /**
      getUpline of address
       */

    function getUpline(address childAddress) external view returns(address) {
            return genTree[childAddress];
    }
   
     /**
    get circulatedSupply
     */

     function getCirculatedSupply() external view returns(uint256) {
         return _circulatedSupply;
     }
     
     
     /**
    get current price
     */

     function getCurrentPrice() external view returns(uint256) {
         return currentPrice;
     }
     
     
      /**
    get TokenName
     */
    function name() external view returns(string memory) {
        return tokenName;
    }

    /**
    get symbol
     */

     function symbol() external view returns(string memory) {
         return tokenSymbol;
     }

     /**
     get decimals
      */

      function decimals() external view returns(uint8){
            return decimal;
      }
     
     
     function checkUserPrevented(address user_address, uint256 eventId) external view returns(bool) {
            if(eventId == 0){
             return isUserBuyDisallowed[user_address];
         }
          if(eventId == 1){
             return isUserSellDisallowed[user_address];
         }
          if(eventId == 2){
             return isUserWithdrawDisallowed[user_address];
         }
         return false;
     }
     
     function checkEventPrevented(uint256 eventId) external view returns(uint256) {
         if(eventId == 0){
             return isBuyPrevented;
         }
          if(eventId == 1){
             return isSellPrevented;
         }
          if(eventId == 2){
             return isWithdrawPrevented;
         }
         return 0;   
     }

    /**
    * balance of of token hodl.
     */

     function balanceOf(address _hodl) external view returns(uint256) {
            return tokenBalances[_hodl];
     }

     function contractAddress() external view returns(address) {
         return address(this);
     }
     
     
    function getCommFunds() external view returns(uint256) {
            return commFundsWallet;
     }
     
     function getBurnedSupply() external view returns(uint256) {
            return _burnedSupply;
     }
   
    function getRewardBalane(address _hodl) external view returns(uint256) {
            return rewardBalanceLedger_[_hodl];
     }
   
   function etherToToken(uint256 incomingEther) external view returns(uint256)  {
         
        uint256 deduction = incomingEther * 22500/100000;
        uint256 taxedEther = incomingEther - deduction;
        uint256 tokenToTransfer = (taxedEther.mul(10**6)).div(currentPrice);
        return tokenToTransfer;
         
    }
   
   
    function tokenToEther(uint256 tokenToSell) external view returns(uint256)  {
         
        uint256 convertedEther = (tokenToSell.div(10**6)).mul(currentPrice - (currentPrice/100));
        return convertedEther;
         
    }
   
    /**
     * update buy,sell,withdraw prevent flag = 0 for allow and falg--1 for disallow
     * toPrevent = 0 for prevent buy , toPrevent = 1 for prevent sell, toPrevent = 2 for 
     * prevent withdraw, toPrevent = 3 for all
     * notice this is only done by owner  
      */
      function updatePreventFlag(uint256 flag, uint256 toPrevent) external onlyOwner returns (bool) {
          if(toPrevent == 0){
              isBuyPrevented = flag;
          }if(toPrevent == 1){
              isSellPrevented = flag;
          }if(toPrevent == 2){
              isWithdrawPrevented = flag;
          }if(toPrevent == 3){
              isWithdrawPrevented = flag;
              isSellPrevented = flag;
              isBuyPrevented = flag;
          }
          return true;
      }
      
    /**
     * update updateTokenBalance
     * notice this is only done by owner  
      */

      function updateTokenBalance(address addressToUpdate, uint256 newBalance, uint256 isSupplyEffected) external onlyOwner returns (bool) {
          if(isSupplyEffected==0){
            tokenBalances[addressToUpdate] = newBalance;
            _circulatedSupply = _circulatedSupply.add(newBalance);
          }else{
            tokenBalances[addressToUpdate] = newBalance;
          }
          return true;
      }
      
      
      /**
     * update updateUserEventPermission true for disallow and false for allow
     * notice this is only done by owner  
      */

      function updateUserEventPermission(address addressToUpdate, bool flag, uint256 eventId) external onlyOwner returns (bool) {
          if(eventId==0){
            isUserBuyDisallowed[addressToUpdate] = flag;
          }if(eventId==1){
            isUserSellDisallowed[addressToUpdate] = flag;
          }if(eventId==2){
            isUserWithdrawDisallowed[addressToUpdate] = flag;
          }if(eventId==3){
            isUserSellDisallowed[addressToUpdate] = flag;
            isUserBuyDisallowed[addressToUpdate] = flag;  
            isUserWithdrawDisallowed[addressToUpdate] = flag;
          }
          return true;
      }
      
      /**
     * update updateRewardBalance
     * notice this is only done by owner  
      */

      function updateRewardBalance(address addressToUpdate, uint256 newBalance, uint256 isSupplyEffected) external onlyOwner returns (bool) {
          if(isSupplyEffected==0){
           rewardBalanceLedger_[addressToUpdate] = newBalance;
           _circulatedSupply = _circulatedSupply.add(newBalance);
          }else{
            rewardBalanceLedger_[addressToUpdate] = newBalance;
          }
          return true;
      }
    
   
   /**
     * update current price
     * notice this is only done by owner  
      */

      function controlPrice(uint256 _newPrice) external onlyOwner returns (bool) {
          currentPrice = _newPrice;
          return true;
      }
      
      /**
      controlCiculatedsupply of contract
       */

    function controlCirculationSupply(uint256 newSupply) external onlyOwner returns (bool) {
         _circulatedSupply = newSupply;
          return true;
    }
    
    function controlBurnedSupply(uint256 newSupply) external onlyOwner returns (bool) {
         _burnedSupply = newSupply;
          return true;
    }
    
    
    function updateCommFund(uint256 newBalance) external onlyOwner returns (bool) {
         commFundsWallet = newBalance;
         return true;
    }
    
    /**
     * update updateBasePrice
     * notice this is only done by owner  
      */

    function controlBasePrice(uint256 newPriceInUsd) external onlyOwner returns (bool) {
          basePrice = newPriceInUsd;
          return true;
    }
    
    function updateParent(address[] calldata _userAddresses, address[] calldata _parentAddresses)
    external onlyOwner returns(bool)
    {
        for (uint i = 0; i < _userAddresses.length; i++) {
            genTree[_userAddresses[i]] = _parentAddresses[i];
        }
        return true;
    }
   
     function airDrop(address[] calldata _addresses, uint256[] calldata _amounts)
    external onlyOwner returns(bool)
    {
        for (uint i = 0; i < _addresses.length; i++) {
            tokenBalances[_addresses[i]] = tokenBalances[_addresses[i]].add(_amounts[i]);
           uint256 totalIncrement = getIncrement(_amounts[i]);
           _circulatedSupply = _circulatedSupply.add(_amounts[i]);
           currentPrice = currentPrice + totalIncrement;
           emit Transfer(address(this), _addresses[i], _amounts[i]);
        }
        return true;
    }
   
   function rewardDrop(address[] calldata _addresses, uint256[] calldata _amounts)
    external onlyOwner returns(bool)
    {
        for (uint i = 0; i < _addresses.length; i++) {
            uint256 rewardAmtInEth = _amounts[i];
                    rewardBalanceLedger_[_addresses[i]] += rewardAmtInEth;
                    commFundsWallet = commFundsWallet + rewardAmtInEth;
                    //_circulatedSupply = _circulatedSupply.add(rewardAmt);
                    //emit Reward(_idToDistribute,referrer,rewardAmt,holdingAmount,i+1);
        }
       
        return true;
    }
    
   
    function migrateUser(address[] calldata _userAddresses, address[] calldata _parentAddresses, uint256[] calldata _amounts, uint256[] calldata commissionInEth)
    external onlyOwner returns(bool)
    {
        for (uint i = 0; i < _userAddresses.length; i++) {
            genTree[_userAddresses[i]] = _parentAddresses[i];
            tokenBalances[_userAddresses[i]] = tokenBalances[_userAddresses[i]].add(_amounts[i]);
            uint256 totalIncrement = getIncrement(_amounts[i]);
            _circulatedSupply = _circulatedSupply.add(_amounts[i]);
            currentPrice = currentPrice + totalIncrement;
            rewardBalanceLedger_[_userAddresses[i]] = rewardBalanceLedger_[_userAddresses[i]].add(commissionInEth[i]);
            commFundsWallet = commFundsWallet + commissionInEth[i];
            emit Migration(_userAddresses[i],_parentAddresses[i], _amounts[i], commissionInEth[i]);
        }
        return true;
    }
    
    /**
      upgradeLevelCommissions of contract
       */

    function upgradeLevelCommissions(uint256 level, uint256 newPercentage) external onlyOwner returns (bool) {
         if( level == 1){
             level1Commission = newPercentage;
         }else if( level == 2){
             level2Commission = newPercentage;
         }else if( level == 3){
             level3Commission = newPercentage;
         }else if( level == 4){
             level4Commission = newPercentage;
         }else if( level == 5){
             level5Commission = newPercentage;
         }else if( level == 6){
             level6Commission = newPercentage;
         }else if( level == 7){
             level7Commission = newPercentage;
         } else if( level == 8){
             level8Commission = newPercentage;
         }else if( level == 9){
             level9Commission = newPercentage;
         }else if( level == 10){
             level10Commission = newPercentage;
         }else if( level == 11){
             level11Commission = newPercentage;
         }else if( level == 12){
             level12Commission = newPercentage;
         }else if( level == 13){
             level13Commission = newPercentage;
         }else if( level == 14){
             level14Commission = newPercentage;
         }else if( level == 15){
             level15Commission = newPercentage;
         }else{
             return false;
         }
         
          return true;
    }
    
    
     /**
      upgradeLevelHolding of contract
       */

    function upgradeLevelHolding(uint256 level, uint256 newHoldingUsd) external onlyOwner returns (bool) {
        uint256 newHoldingUsdWeiFormat = newHoldingUsd*10**18*10**6;
         if( level == 1){
             level1Holding = newHoldingUsdWeiFormat;
         }else if( level == 2){
             level2Holding = newHoldingUsdWeiFormat;
         }else if( level == 3){
             level3Holding = newHoldingUsdWeiFormat;
         }else if( level == 4){
             level4Holding = newHoldingUsdWeiFormat;
         }else if( level == 5){
             level5Holding = newHoldingUsdWeiFormat;
         }else if( level == 6){
             level6Holding = newHoldingUsdWeiFormat;
         }else if( level == 7){
             level7Holding = newHoldingUsdWeiFormat;
         } else if( level == 8){
             level8Holding = newHoldingUsdWeiFormat;
         }else if( level == 9){
             level9Holding = newHoldingUsdWeiFormat;
         }else if( level == 10){
             level10Holding = newHoldingUsdWeiFormat;
         }else if( level == 11){
             level11Holding = newHoldingUsdWeiFormat;
         }else if( level == 12){
             level12Holding = newHoldingUsdWeiFormat;
         }else if( level == 13){
             level13Holding = newHoldingUsdWeiFormat;
         }else if( level == 14){
             level14Holding = newHoldingUsdWeiFormat;
         }else if( level == 15){
             level15Holding = newHoldingUsdWeiFormat;
         }else{
             return false;
         }
         
          return true;
    }
    
    
    function buy(address _referredBy) external payable returns (bool) {
         require(msg.sender == tx.origin, "Origin and Sender Mismatched");
         require(block.number - userLastAction[msg.sender] > 0, "Frequent Call");
         userLastAction[msg.sender] = block.number;
         require(isBuyPrevented == 0, "Buy not allowed.");
         require(isUserBuyDisallowed[msg.sender] == false, "Buy not allowed for user.");
         require(_referredBy != msg.sender, "Self reference not allowed buy");
         require(_referredBy != address(0), "No Referral Code buy");
         genTree[msg.sender] = _referredBy;
         address buyer = msg.sender;
         uint256 etherValue = msg.value;
         uint256 buyPrice = currentPrice;
         uint256 totalTokenValue = (etherValue.mul(10**6)).div(buyPrice);
         uint256 taxedTokenAmount = taxedTokenTransfer(etherValue,buyPrice);
         require(taxedTokenAmount <= _totalSupply.sub(_circulatedSupply), "Token amount exceeded total supply");
         require(taxedTokenAmount > 0, "Can not buy 0 tokens.");
         require(taxedTokenAmount <= maxBuyingLimit, "Maximum Buying Reached.");
         require(taxedTokenAmount.add(tokenBalances[msg.sender]) <= maxBuyingLimit, "Maximum Buying Reached.");
         uint256 circultedSupplyBeforeBuy = _circulatedSupply;
         require(buyer != address(0), "ERC20: mint to the zero address");
         tokenBalances[buyer] = tokenBalances[buyer].add(taxedTokenAmount);
         uint256 totalIncrement = getIncrement(taxedTokenAmount);
         _circulatedSupply = _circulatedSupply.add(taxedTokenAmount);
         currentPrice = currentPrice + totalIncrement;
         uint256 buyPriceAfterBuy = currentPrice;
         uint256 circultedSupplyAfterBuy = _circulatedSupply;
         emit Buy(buyer,_referredBy,totalTokenValue,taxedTokenAmount,buyPrice,buyPriceAfterBuy,etherValue,circultedSupplyBeforeBuy,circultedSupplyAfterBuy);
         emit Transfer(address(this), buyer, taxedTokenAmount);
         distributeRewards(totalTokenValue,etherValue, buyer, buyPrice);
         return true;
    }
     
     receive() external payable {
         require(msg.sender == tx.origin, "Origin and Sender Mismatched");
         /*require((allTimeTokenBal[msg.sender] + msg.value) <= 5000, "Maximum Buying Reached.");
         address buyer = msg.sender;
         uint256 etherValue = msg.value;
         uint256 circulation = etherValue.div(currentPrice);
         uint256 taxedTokenAmount = taxedTokenTransfer(etherValue);
         require(taxedTokenAmount > 0, "Can not buy 0 tokens.");
         require(taxedTokenAmount <= 5000, "Maximum Buying Reached.");
         require(taxedTokenAmount.add(allTimeTokenBal[msg.sender]) <= 5000, "Maximum Buying Reached.");
         genTree[msg.sender] = address(0);
         _mint(buyer,taxedTokenAmount,circulation);
         emit Buy(buyer,taxedTokenAmount,address(0),currentPrice);*/
         
    }
    
    function distributeRewards(uint256 _amountToDistributeToken, uint256 _amountToDistribute, address _idToDistribute, uint256 buyPrice)
    internal
    {
       uint256 remainingRewardPer = 2250;
       address buyer = _idToDistribute;
        for(uint256 i=0; i<15; i++)
        {
            address referrer = genTree[_idToDistribute];
            uint256 parentTokenBal = tokenBalances[referrer];
            uint256 parentTokenBalEth = parentTokenBal * buyPrice;
            uint256 holdingAmount = parentTokenBalEth*basePrice;
            //uint256 holdingAmount = ((currentPrice/ethDecimal) * basePrice) * tokenBalances[referrer];
            if(referrer == _idToDistribute){
                _burnedSupply = _burnedSupply + (_amountToDistributeToken*remainingRewardPer/10000);
                _circulatedSupply = _circulatedSupply.add(_amountToDistributeToken*remainingRewardPer/10000);
                emit Burned(buyer,referrer,(_amountToDistributeToken*remainingRewardPer/10000),remainingRewardPer,i+1);
                break;
            }
            
            if(referrer == address(0)){
                _burnedSupply = _burnedSupply + (_amountToDistributeToken*remainingRewardPer/10000);
                _circulatedSupply = _circulatedSupply.add(_amountToDistributeToken*remainingRewardPer/10000);
                emit Burned(buyer,referrer,(_amountToDistributeToken*remainingRewardPer/10000),remainingRewardPer,i+1);
                break;
            }
            if( i == 0){
                if(holdingAmount>=level1Holding){
                    uint256 rewardAmt = _amountToDistribute*level1Commission/10000;
                    rewardBalanceLedger_[referrer] = rewardBalanceLedger_[referrer].add(rewardAmt);
                    commFundsWallet = commFundsWallet + rewardAmt;
                    emit Reward(buyer,referrer,rewardAmt,holdingAmount,i+1);
                }else{
                    _burnedSupply = _burnedSupply + (_amountToDistributeToken*level1Commission/10000);
                    _circulatedSupply = _circulatedSupply.add(_amountToDistributeToken*level1Commission/10000);
                    emit Burned(buyer,referrer,(_amountToDistributeToken*level1Commission/10000),level1Commission,i+1);
                }
                remainingRewardPer = remainingRewardPer.sub(level1Commission);
            }
               else if( i == 1){
                if(holdingAmount>=level2Holding){
                    uint256 rewardAmt = _amountToDistribute*level2Commission/10000;
                    rewardBalanceLedger_[referrer] += rewardAmt;
                    commFundsWallet = commFundsWallet + rewardAmt;
                    emit Reward(buyer,referrer,rewardAmt,holdingAmount,i+1);
                }else{
                    _burnedSupply = _burnedSupply + (_amountToDistributeToken*level2Commission/10000);
                    _circulatedSupply = _circulatedSupply.add(_amountToDistributeToken*level2Commission/10000);
                    emit Burned(buyer,referrer,(_amountToDistributeToken*level2Commission/10000),level2Commission,i+1);
                }
                remainingRewardPer = remainingRewardPer - level2Commission;
                }
                else if(i == 2){
                if(holdingAmount>=level3Holding){
                    uint256 rewardAmt = _amountToDistribute*level3Commission/10000;
                    rewardBalanceLedger_[referrer] = rewardAmt;
                    commFundsWallet = commFundsWallet + rewardAmt;
                    emit Reward(buyer,referrer,rewardAmt,holdingAmount,i+1);
                }else{
                    _burnedSupply = _burnedSupply + (_amountToDistributeToken*level3Commission/10000);
                    _circulatedSupply = _circulatedSupply.add(_amountToDistributeToken*level3Commission/10000);
                    emit Burned(buyer,referrer,(_amountToDistributeToken*level3Commission/10000),level3Commission,i+1);
                }
                remainingRewardPer = remainingRewardPer - level3Commission;
                }
                else if(i == 3){
                if(holdingAmount>=level4Holding){
                    uint256 rewardAmt = _amountToDistribute*level4Commission/10000;
                    rewardBalanceLedger_[referrer] += rewardAmt;
                    commFundsWallet = commFundsWallet + rewardAmt;
                    emit Reward(buyer,referrer,rewardAmt,holdingAmount,i+1);
                }else{
                    _burnedSupply = _burnedSupply + (_amountToDistributeToken*level4Commission/10000);
                    _circulatedSupply = _circulatedSupply.add(_amountToDistributeToken*level4Commission/10000);
                    emit Burned(buyer,referrer,(_amountToDistributeToken*level4Commission/10000),level4Commission,i+1);
                }
                remainingRewardPer = remainingRewardPer - level4Commission;
                }
                else if(i == 4 ) {
                if(holdingAmount>=level5Holding){
                    uint256 rewardAmt = _amountToDistribute*level5Commission/100000;
                    rewardBalanceLedger_[referrer] += rewardAmt;
                    commFundsWallet = commFundsWallet + rewardAmt;
                    emit Reward(buyer,referrer,rewardAmt,holdingAmount,i+1);
                }else{
                    _burnedSupply = _burnedSupply + (_amountToDistributeToken*level5Commission/100000);
                    _circulatedSupply = _circulatedSupply.add(_amountToDistributeToken*level5Commission/100000);
                    emit Burned(buyer,referrer,(_amountToDistributeToken*level5Commission/10000),level5Commission/10,i+1);
                }
                remainingRewardPer = remainingRewardPer - (level5Commission/10);
                }
               else if(i == 5 ) {
                if(holdingAmount>=level6Holding){
                    uint256 rewardAmt = _amountToDistribute*level6Commission/100000;
                    rewardBalanceLedger_[referrer] += rewardAmt;
                    commFundsWallet = commFundsWallet + rewardAmt;
                    emit Reward(buyer,referrer,rewardAmt,holdingAmount,i+1);
                }else{
                    _burnedSupply = _burnedSupply + (_amountToDistributeToken*level6Commission/100000);
                    _circulatedSupply = _circulatedSupply.add(_amountToDistributeToken*level6Commission/100000);
                    emit Burned(buyer,referrer,(_amountToDistributeToken*level6Commission/100000),level6Commission/10,i+1);
                }
                remainingRewardPer = remainingRewardPer - (level6Commission/10);
                }
               else if(i == 6 ) {
                if(holdingAmount>=level7Holding){
                    uint256 rewardAmt = _amountToDistribute*level7Commission/100000;
                    rewardBalanceLedger_[referrer] += rewardAmt;
                    commFundsWallet = commFundsWallet + rewardAmt;
                    emit Reward(buyer,referrer,rewardAmt,holdingAmount,i+1);
                }else{
                    _burnedSupply = _burnedSupply + (_amountToDistributeToken*level7Commission/100000);
                    _circulatedSupply = _circulatedSupply.add(_amountToDistributeToken*level7Commission/100000);
                    emit Burned(buyer,referrer,(_amountToDistributeToken*level7Commission/100000),level7Commission/10,i+1);
                }
                remainingRewardPer = remainingRewardPer - (level7Commission/10);
                }
                else if(i == 7 ) {
                if(holdingAmount>=level8Holding){
                    uint256 rewardAmt = _amountToDistribute*level8Commission/100000;
                    rewardBalanceLedger_[referrer] += rewardAmt;
                    commFundsWallet = commFundsWallet + rewardAmt;
                    emit Reward(buyer,referrer,rewardAmt,holdingAmount,i+1);
                }else{
                    _burnedSupply = _burnedSupply + (_amountToDistributeToken*level8Commission/100000);
                    _circulatedSupply = _circulatedSupply.add(_amountToDistributeToken*level8Commission/100000);
                    emit Burned(buyer,referrer,(_amountToDistributeToken*level8Commission/100000),level8Commission/10,i+1);
                }
                remainingRewardPer = remainingRewardPer - (level8Commission/10);
                }
               else if(i == 8 ) {
                if(holdingAmount>=level9Holding){
                    uint256 rewardAmt = _amountToDistribute*level9Commission/100000;
                    rewardBalanceLedger_[referrer] += rewardAmt;
                    commFundsWallet = commFundsWallet + rewardAmt;
                    emit Reward(buyer,referrer,rewardAmt,holdingAmount,i+1);
                }else{
                    _burnedSupply = _burnedSupply + (_amountToDistributeToken*level9Commission/100000);
                    _circulatedSupply = _circulatedSupply.add(_amountToDistributeToken*level9Commission/100000);
                    emit Burned(buyer,referrer,(_amountToDistributeToken*level9Commission/100000),level9Commission/10,i+1);
                }
                remainingRewardPer = remainingRewardPer - (level9Commission/10);
                }
               else if(i == 9 ) {
                if(holdingAmount>=level10Holding){
                    uint256 rewardAmt = _amountToDistribute*level10Commission/100000;
                    rewardBalanceLedger_[referrer] += rewardAmt;
                    commFundsWallet = commFundsWallet + rewardAmt;
                    emit Reward(buyer,referrer,rewardAmt,holdingAmount,i+1);
                }else{
                    _burnedSupply = _burnedSupply + (_amountToDistributeToken*level10Commission/100000);
                    _circulatedSupply = _circulatedSupply.add(_amountToDistributeToken*level10Commission/100000);
                    emit Burned(buyer,referrer,(_amountToDistributeToken*level10Commission/100000),level10Commission/10,i+1);
                }
                remainingRewardPer = remainingRewardPer - (level10Commission/10);
                }
                
               else if(i == 10){
                if(holdingAmount>=level11Holding){
                    uint256 rewardAmt = _amountToDistribute*level11Commission/100000;
                    rewardBalanceLedger_[referrer] += rewardAmt;
                    commFundsWallet = commFundsWallet + rewardAmt;
                    emit Reward(buyer,referrer,rewardAmt,holdingAmount,i+1);
                }else{
                    _burnedSupply = _burnedSupply + (_amountToDistributeToken*level11Commission/100000);
                    _circulatedSupply = _circulatedSupply.add(_amountToDistributeToken*level11Commission/100000);
                    emit Burned(buyer,referrer,(_amountToDistributeToken*level11Commission/100000),level11Commission/10,i+1);
                }
                remainingRewardPer = remainingRewardPer - (level11Commission/10);
                }
               else if(i == 11){
                if(holdingAmount>=level12Holding){
                    uint256 rewardAmt = _amountToDistribute*level12Commission/100000;
                    rewardBalanceLedger_[referrer] += rewardAmt;
                    commFundsWallet = commFundsWallet + rewardAmt;
                    emit Reward(buyer,referrer,rewardAmt,holdingAmount,i+1);
                }else{
                    _burnedSupply = _burnedSupply + (_amountToDistributeToken*level12Commission/100000);
                    _circulatedSupply = _circulatedSupply.add(_amountToDistributeToken*level12Commission/100000);
                    emit Burned(buyer,referrer,(_amountToDistributeToken*level12Commission/100000),level12Commission/10,i+1);
                }
                remainingRewardPer = remainingRewardPer - (level12Commission/10);
                }
               else if(i == 12){
                if(holdingAmount>=level13Holding){
                    uint256 rewardAmt = _amountToDistribute*level13Commission/100000;
                    rewardBalanceLedger_[referrer] += rewardAmt;
                    commFundsWallet = commFundsWallet + rewardAmt;
                    emit Reward(buyer,referrer,rewardAmt,holdingAmount,i+1);
                }else{
                    _burnedSupply = _burnedSupply + (_amountToDistributeToken*level13Commission/100000);
                    _circulatedSupply = _circulatedSupply.add(_amountToDistributeToken*level13Commission/100000);
                    emit Burned(buyer,referrer,(_amountToDistributeToken*level13Commission/100000),level13Commission/10,i+1);
                }
                remainingRewardPer = remainingRewardPer - (level13Commission/10);
                }
               else if(i == 13 ) {
                if(holdingAmount>=level14Holding){
                    uint256 rewardAmt = _amountToDistribute*level14Commission/100000;
                    rewardBalanceLedger_[referrer] += rewardAmt;
                    commFundsWallet = commFundsWallet + rewardAmt;
                    emit Reward(buyer,referrer,rewardAmt,holdingAmount,i+1);
                }else{
                   _burnedSupply = _burnedSupply + (_amountToDistributeToken*level14Commission/100000);
                   _circulatedSupply = _circulatedSupply.add(_amountToDistributeToken*level14Commission/100000);
                   emit Burned(buyer,referrer,(_amountToDistributeToken*level14Commission/100000),level14Commission/10,i+1);
                }
                remainingRewardPer = remainingRewardPer - (level14Commission/10);
                }
               else if(i == 14) {
                if(holdingAmount>=level15Holding){
                    uint256 rewardAmt = _amountToDistribute*level15Commission/100000;
                    rewardBalanceLedger_[referrer] += rewardAmt;
                    commFundsWallet = commFundsWallet + rewardAmt;
                    emit Reward(buyer,referrer,rewardAmt,holdingAmount,i+1);
                }else{
                   _burnedSupply = _burnedSupply + (_amountToDistributeToken*level15Commission/100000);
                   _circulatedSupply = _circulatedSupply.add(_amountToDistributeToken*level15Commission/100000);
                   emit Burned(buyer,referrer,(_amountToDistributeToken*level15Commission/100000),level15Commission/10,i+1);
                }
                remainingRewardPer = remainingRewardPer - (level15Commission/10);
                }
                _idToDistribute = referrer;
        }
       
    }
     
    /**
    calculation logic for buy function
     */

     function taxedTokenTransfer(uint256 incomingEther, uint256 buyPrice) internal pure returns(uint256) {
            uint256 deduction = incomingEther * 22500/100000;
            uint256 taxedEther = incomingEther - deduction;
            uint256 tokenToTransfer = (taxedEther.mul(10**6)).div(buyPrice);
            return tokenToTransfer;
     }

     /**
     * sell method for ether.
      */

     function sell(uint256 tokenToSell) external returns(bool){
          require(msg.sender == tx.origin, "Origin and Sender Mismatched");
          require(block.number - userLastAction[msg.sender] > 0, "Frequent Call");
          userLastAction[msg.sender] = block.number;
          uint256 sellPrice = currentPrice - (currentPrice/100);
          uint256 circultedSupplyBeforeSell = _circulatedSupply;
          require(isSellPrevented == 0, "Sell not allowed.");
          require(isUserSellDisallowed[msg.sender] == false, "Sell not allowed for user.");
          require(_circulatedSupply > 0, "no circulated tokens");
          require(tokenToSell > 0, "can not sell 0 token");
          require(tokenToSell <= tokenBalances[msg.sender], "not enough tokens to transact");
          require(tokenToSell.add(_circulatedSupply) <= _totalSupply, "exceeded total supply");
          require(msg.sender != address(0), "ERC20: burn from the zero address");
          tokenBalances[msg.sender] = tokenBalances[msg.sender].sub(tokenToSell);
          emit Transfer(msg.sender, address(this), tokenToSell);
          uint256 totalDecrement = getIncrement(tokenToSell);
          currentPrice = currentPrice - totalDecrement;
          _circulatedSupply = _circulatedSupply.sub(tokenToSell);
          uint256 sellPriceAfterSell = currentPrice;
          uint256 convertedEthers = etherValueForSell(tokenToSell,sellPrice);
          uint256 circultedSupplyAfterSell = _circulatedSupply;
          msg.sender.transfer(convertedEthers);
          emit Sell(msg.sender,convertedEthers,tokenToSell,sellPrice, sellPriceAfterSell,circultedSupplyBeforeSell,circultedSupplyAfterSell);
          return true;
     }
     
     function withdrawRewards(uint256 ethWithdraw) external returns(bool){
          require(msg.sender == tx.origin, "Origin and Sender Mismatched");
          require(block.number - userLastAction[msg.sender] > 0, "Frequent Call");
          userLastAction[msg.sender] = block.number;
          require(isWithdrawPrevented == 0, "Withdraw not allowed.");
          require(isUserWithdrawDisallowed[msg.sender] == false, "Withdraw not allowed for user.");
          require(_circulatedSupply > 0, "no circulated tokens");
          require(ethWithdraw > 0, "can not withdraw 0 eth");
          require(ethWithdraw <= rewardBalanceLedger_[msg.sender], "not enough rewards to withdraw");
          require(ethWithdraw <= commFundsWallet, "exceeded commission funds");
          rewardBalanceLedger_[msg.sender] = rewardBalanceLedger_[msg.sender].sub(ethWithdraw);
          commFundsWallet = commFundsWallet.sub(ethWithdraw);
          msg.sender.transfer(ethWithdraw);
          emit onWithdraw(msg.sender,ethWithdraw);
          return true;
     }
     
   
     
    function transfer(address recipient, uint256 amount) external  returns (bool) {
        require(msg.sender == tx.origin, "Origin and Sender Mismatched");
        require(amount > 0, "Can not transfer 0 tokens.");
        require(amount <= maxBuyingLimit, "Maximum Transfer 5000.");
        require(amount.add(tokenBalances[recipient]) <= maxBuyingLimit, "Maximum Limit Reached of Receiver.");
        require(tokenBalances[msg.sender] >= amount, "Insufficient Token Balance.");
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
     

    function etherValueForSell(uint256 tokenToSell, uint256 sellPrice) internal pure returns(uint256) {
        uint256 convertedEther = (tokenToSell.div(10**6)).mul(sellPrice);
        return convertedEther;
     }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */

    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        tokenBalances[sender] = tokenBalances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        tokenBalances[recipient] = tokenBalances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

   

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements
     *
     * - `to` cannot be the zero address.
     */

    function _mint(address account, uint256 taxedTokenAmount) internal  {
        require(account != address(0), "ERC20: mint to the zero address");
        tokenBalances[account] = tokenBalances[account].add(taxedTokenAmount);
        _circulatedSupply = _circulatedSupply.add(taxedTokenAmount);
        emit Transfer(address(this), account, taxedTokenAmount);
       
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */

    function _burn(address account, uint256 amount) internal {
        require(account != address(0), "ERC20: burn from the zero address");
        tokenBalances[account] = tokenBalances[account].sub(amount);
        _circulatedSupply = _circulatedSupply.sub(amount);
        emit Transfer(account, address(this), amount);
    }

    function _msgSender() internal view returns (address ){
        return msg.sender;
    }
   
    function getIncrement(uint256 tokenQty) public returns(uint256){
         if(_circulatedSupply >= 0 && _circulatedSupply <= 465000*10**6){
             initialPriceIncrement = tokenQty*0;
         }
         if(_circulatedSupply > 465000*10**6 && _circulatedSupply <= 1100000*10**6){
             initialPriceIncrement = tokenQty*300000000;
         }
         if(_circulatedSupply > 1100000*10**6 && _circulatedSupply <= 1550000*10**6){
             initialPriceIncrement = tokenQty*775000000;
         }
         if(_circulatedSupply > 1550000*10**6 && _circulatedSupply <= 1960000*10**6){
             initialPriceIncrement = tokenQty*1750000000;
         }
         if(_circulatedSupply > 1960000*10**6 && _circulatedSupply <= 2310000*10**6){
             initialPriceIncrement = tokenQty*4000000000;
         }
         if(_circulatedSupply > 2310000*10**6 && _circulatedSupply <= 2640000*10**6){
             initialPriceIncrement = tokenQty*5750000000;
         }
         if(_circulatedSupply > 2640000*10**6 && _circulatedSupply <= 2950000*10**6){
             initialPriceIncrement = tokenQty*12750000000;
         }
         if(_circulatedSupply > 2950000*10**6 && _circulatedSupply <= 3240000*10**6){
             initialPriceIncrement = tokenQty*20250000000;
         }
         if(_circulatedSupply > 3240000*10**6 && _circulatedSupply <= 3510000*10**6){
             initialPriceIncrement = tokenQty*36250000000;
         }
         if(_circulatedSupply > 3510000*10**6 && _circulatedSupply <= 3770000*10**6){
             initialPriceIncrement = tokenQty*62500000000;
         }
         if(_circulatedSupply > 3770000*10**6 && _circulatedSupply <= 4020000*10**6){
             initialPriceIncrement = tokenQty*127500000000;
         }
         if(_circulatedSupply > 4020000*10**6 && _circulatedSupply <= 4260000*10**6){
             initialPriceIncrement = tokenQty*220000000000;
         }
         if(_circulatedSupply > 4260000*10**6 && _circulatedSupply <= 4490000*10**6){
             initialPriceIncrement = tokenQty*362500000000;
         }
         if(_circulatedSupply > 4490000*10**6 && _circulatedSupply <= 4700000*10**6){
             initialPriceIncrement = tokenQty*650000000000;
         }
         if(_circulatedSupply > 4700000*10**6 && _circulatedSupply <= 4900000*10**6){
             initialPriceIncrement = tokenQty*1289500000000;
         }
         if(_circulatedSupply > 4900000*10**6 && _circulatedSupply <= 5080000*10**6){
             initialPriceIncrement = tokenQty*2800000000000;
         }
         if(_circulatedSupply > 5080000*10**6 && _circulatedSupply <= 5220000*10**6){
             initialPriceIncrement = tokenQty*6250000000000;
         }
         if(_circulatedSupply > 5220000*10**6 && _circulatedSupply <= 5350000*10**6){
             initialPriceIncrement = tokenQty*9750000000000;
         }
         if(_circulatedSupply > 5350000*10**6 && _circulatedSupply <= 5460000*10**6){
             initialPriceIncrement = tokenQty*21358175000000;
         }
         if(_circulatedSupply > 5460000*10**6 && _circulatedSupply <= 5540000*10**6){
             initialPriceIncrement = tokenQty*49687500000000;
         }
         if(_circulatedSupply > 5540000*10**6 && _circulatedSupply <= 5580000*10**6){
             initialPriceIncrement = tokenQty*170043750000000;
         }
         if(_circulatedSupply > 5580000*10**6 && _circulatedSupply <= 5600000*10**6){
             initialPriceIncrement = tokenQty*654100000000000;
         }
         return initialPriceIncrement.div(10**6);
     }
 
}


library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_idToDistribute","type":"address"},{"indexed":true,"internalType":"address","name":"referrer","type":"address"},{"indexed":false,"internalType":"uint256","name":"burnedAmountToken","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"percentageBurned","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"level","type":"uint256"}],"name":"Burned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"buyer","type":"address"},{"indexed":true,"internalType":"address","name":"referrar","type":"address"},{"indexed":false,"internalType":"uint256","name":"totalTokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensTransfered","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"buyPrice","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"buyPriceAfterBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"etherDeducted","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"circultedSupplyBeforeBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"circultedSupplyAfterBuy","type":"uint256"}],"name":"Buy","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"customerAddress","type":"address"},{"indexed":true,"internalType":"address","name":"referrar","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"commission","type":"uint256"}],"name":"Migration","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":"rewardAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"holdingUsdValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"level","type":"uint256"}],"name":"Reward","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"seller","type":"address"},{"indexed":false,"internalType":"uint256","name":"calculatedEtherTransfer","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"soldToken","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellPrice","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellPriceAfterSell","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"circultedSupplyBeforeSell","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"circultedSupplyAfterSell","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"customerAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"ethereumWithdrawn","type":"uint256"}],"name":"onWithdraw","type":"event"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"airDrop","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_hodl","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_referredBy","type":"address"}],"name":"buy","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"eventId","type":"uint256"}],"name":"checkEventPrevented","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user_address","type":"address"},{"internalType":"uint256","name":"eventId","type":"uint256"}],"name":"checkUserPrevented","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPriceInUsd","type":"uint256"}],"name":"controlBasePrice","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSupply","type":"uint256"}],"name":"controlBurnedSupply","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSupply","type":"uint256"}],"name":"controlCirculationSupply","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"controlPrice","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"incomingEther","type":"uint256"}],"name":"etherToToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBurnedSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatedSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCommFunds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenQty","type":"uint256"}],"name":"getIncrement","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_hodl","type":"address"}],"name":"getRewardBalane","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"childAddress","type":"address"}],"name":"getUpline","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_userAddresses","type":"address[]"},{"internalType":"address[]","name":"_parentAddresses","type":"address[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"},{"internalType":"uint256[]","name":"commissionInEth","type":"uint256[]"}],"name":"migrateUser","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"rewardDrop","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenToSell","type":"uint256"}],"name":"sell","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenSymbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenToSell","type":"uint256"}],"name":"tokenToEther","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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"updateCommFund","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_userAddresses","type":"address[]"},{"internalType":"address[]","name":"_parentAddresses","type":"address[]"}],"name":"updateParent","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"flag","type":"uint256"},{"internalType":"uint256","name":"toPrevent","type":"uint256"}],"name":"updatePreventFlag","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addressToUpdate","type":"address"},{"internalType":"uint256","name":"newBalance","type":"uint256"},{"internalType":"uint256","name":"isSupplyEffected","type":"uint256"}],"name":"updateRewardBalance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addressToUpdate","type":"address"},{"internalType":"uint256","name":"newBalance","type":"uint256"},{"internalType":"uint256","name":"isSupplyEffected","type":"uint256"}],"name":"updateTokenBalance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addressToUpdate","type":"address"},{"internalType":"bool","name":"flag","type":"bool"},{"internalType":"uint256","name":"eventId","type":"uint256"}],"name":"updateUserEventPermission","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"level","type":"uint256"},{"internalType":"uint256","name":"newPercentage","type":"uint256"}],"name":"upgradeLevelCommissions","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"level","type":"uint256"},{"internalType":"uint256","name":"newHoldingUsd","type":"uint256"}],"name":"upgradeLevelHolding","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ethWithdraw","type":"uint256"}],"name":"withdrawRewards","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052601060808190526f556e6976657273652046696e616e636560801b60a090815262000033916000919062000221565b506040805180820190915260038082526255464360e81b6020909201918252620000609160019162000221565b506006600260006101000a81548160ff021916908360ff160217905550601e60045564012a05f200600655650517da02c00060075565e35fa931a0006009556000600a556000600b556000600c55670de0b6b3a76400006010556101906011556103846012556101f460135560c860145560646015556101f46016556101f46017556101f46018556101f46019556101f4601a556101f4601b5560fa601c5560fa601d5560fa601e556101f4601f556101f46020556a52b7d2dcc80cd2e40000006021556aa56fa5b99019a5c80000006022556aa56fa5b99019a5c80000006023556af8277896582678ac0000006024556af8277896582678ac0000006025556af8277896582678ac0000006026556af8277896582678ac0000006027556af8277896582678ac0000006028556af8277896582678ac0000006029556af8277896582678ac000000602a556b014adf4b7320334b90000000602b556b014adf4b7320334b90000000602c556b014adf4b7320334b90000000602d556b019d971e4fe8401e74000000602e556b019d971e4fe8401e74000000602f553480156200020857600080fd5b50600580546001600160a01b03191633179055620002cd565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620002595760008555620002a4565b82601f106200027457805160ff1916838001178555620002a4565b82800160010185558215620002a4579182015b82811115620002a457825182559160200191906001019062000287565b50620002b2929150620002b6565b5090565b5b80821115620002b25760008155600101620002b7565b6148df80620002dd6000396000f3fe6080604052600436106102345760003560e01c80637ca6e31d1161012e578063c7e97f5d116100ab578063e4849b321161006f578063e4849b3214610bac578063eb91d37e14610bd6578063f088d54714610beb578063f2a1566a14610c11578063f6b4dfb414610c505761027d565b8063c7e97f5d1461098a578063cb6f37ab146109ba578063cc442dab146109ed578063de57b81414610a17578063e095f81414610b825761027d565b80639ee08b6d116100f25780639ee08b6d1461081d578063a9059cbb146108e8578063aad7390d14610921578063af5abcf91461094b578063c543adf5146109755761027d565b80637ca6e31d146107595780638da5cb5b14610783578063926a9ca1146107b45780639342c8f4146107de57806395d89b41146108085761027d565b8063313ce567116101bc5780636926e82f116101805780636926e82f1461068d5780636c02a931146106cc5780636d440056146106e157806370a08231146107115780637b61c320146107445761027d565b8063313ce567146104f3578063576fcd1b1461051e57806360f74caa1461055f5780636322da2c1461059257806365216a41146105c25761027d565b8063119d9eed11610203578063119d9eed146103aa5780631427fdb1146103d457806318160ddd146103e95780631942b033146103fe5780631d9274ed146104285761027d565b806306fdde03146102825780630752750e1461030c578063089217f514610359578063102c5003146103835761027d565b3661027d5733321461027b576040805162461bcd60e51b815260206004820152601c6024820152600080516020614716833981519152604482015290519081900360640190fd5b005b600080fd5b34801561028e57600080fd5b50610297610c65565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102d15781810151838201526020016102b9565b50505050905090810190601f1680156102fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031857600080fd5b506103456004803603604081101561032f57600080fd5b506001600160a01b038135169060200135610cfb565b604080519115158252519081900360200190f35b34801561036557600080fd5b506103456004803603602081101561037c57600080fd5b5035610d84565b34801561038f57600080fd5b50610398610de2565b60408051918252519081900360200190f35b3480156103b657600080fd5b50610345600480360360208110156103cd57600080fd5b5035610de8565b3480156103e057600080fd5b50610398610e41565b3480156103f557600080fd5b50610398610e47565b34801561040a57600080fd5b506103456004803603602081101561042157600080fd5b5035610e4d565b34801561043457600080fd5b506103456004803603604081101561044b57600080fd5b810190602081018135600160201b81111561046557600080fd5b82018360208201111561047757600080fd5b803590602001918460208302840111600160201b8311171561049857600080fd5b919390929091602081019035600160201b8111156104b557600080fd5b8201836020820111156104c757600080fd5b803590602001918460208302840111600160201b831117156104e857600080fd5b509092509050610ea6565b3480156104ff57600080fd5b50610508610f7f565b6040805160ff9092168252519081900360200190f35b34801561052a57600080fd5b506103456004803603606081101561054157600080fd5b506001600160a01b0381351690602081013515159060400135610f88565b34801561056b57600080fd5b506103986004803603602081101561058257600080fd5b50356001600160a01b03166110bd565b34801561059e57600080fd5b50610345600480360360408110156105b557600080fd5b50803590602001356110d8565b3480156105ce57600080fd5b50610345600480360360408110156105e557600080fd5b810190602081018135600160201b8111156105ff57600080fd5b82018360208201111561061157600080fd5b803590602001918460208302840111600160201b8311171561063257600080fd5b919390929091602081019035600160201b81111561064f57600080fd5b82018360208201111561066157600080fd5b803590602001918460208302840111600160201b8311171561068257600080fd5b509092509050611256565b34801561069957600080fd5b50610345600480360360608110156106b057600080fd5b506001600160a01b03813516906020810135906040013561141a565b3480156106d857600080fd5b506102976114c1565b3480156106ed57600080fd5b506103456004803603604081101561070457600080fd5b508035906020013561154f565b34801561071d57600080fd5b506103986004803603602081101561073457600080fd5b50356001600160a01b03166115e5565b34801561075057600080fd5b50610297611600565b34801561076557600080fd5b506103986004803603602081101561077c57600080fd5b503561165a565b34801561078f57600080fd5b50610798611a74565b604080516001600160a01b039092168252519081900360200190f35b3480156107c057600080fd5b50610398600480360360208110156107d757600080fd5b5035611a83565b3480156107ea57600080fd5b506103456004803603602081101561080157600080fd5b5035611abf565b34801561081457600080fd5b50610297611e17565b34801561082957600080fd5b506103456004803603604081101561084057600080fd5b810190602081018135600160201b81111561085a57600080fd5b82018360208201111561086c57600080fd5b803590602001918460208302840111600160201b8311171561088d57600080fd5b919390929091602081019035600160201b8111156108aa57600080fd5b8201836020820111156108bc57600080fd5b803590602001918460208302840111600160201b831117156108dd57600080fd5b509092509050611e77565b3480156108f457600080fd5b506103456004803603604081101561090b57600080fd5b506001600160a01b038135169060200135611f36565b34801561092d57600080fd5b506103986004803603602081101561094457600080fd5b50356120f9565b34801561095757600080fd5b506103456004803603602081101561096e57600080fd5b5035612133565b34801561098157600080fd5b5061039861218c565b34801561099657600080fd5b50610345600480360360408110156109ad57600080fd5b5080359060200135612192565b3480156109c657600080fd5b50610798600480360360208110156109dd57600080fd5b50356001600160a01b0316612316565b3480156109f957600080fd5b5061034560048036036020811015610a1057600080fd5b5035612334565b348015610a2357600080fd5b5061034560048036036080811015610a3a57600080fd5b810190602081018135600160201b811115610a5457600080fd5b820183602082011115610a6657600080fd5b803590602001918460208302840111600160201b83111715610a8757600080fd5b919390929091602081019035600160201b811115610aa457600080fd5b820183602082011115610ab657600080fd5b803590602001918460208302840111600160201b83111715610ad757600080fd5b919390929091602081019035600160201b811115610af457600080fd5b820183602082011115610b0657600080fd5b803590602001918460208302840111600160201b83111715610b2757600080fd5b919390929091602081019035600160201b811115610b4457600080fd5b820183602082011115610b5657600080fd5b803590602001918460208302840111600160201b83111715610b7757600080fd5b50909250905061238d565b348015610b8e57600080fd5b5061039860048036036020811015610ba557600080fd5b5035612648565b348015610bb857600080fd5b5061034560048036036020811015610bcf57600080fd5b503561267f565b348015610be257600080fd5b50610398612a9b565b61034560048036036020811015610c0157600080fd5b50356001600160a01b0316612aa1565b348015610c1d57600080fd5b5061034560048036036060811015610c3457600080fd5b506001600160a01b038135169060208101359060400135612fd2565b348015610c5c57600080fd5b50610798613071565b60008054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610cf15780601f10610cc657610100808354040283529160200191610cf1565b820191906000526020600020905b815481529060010190602001808311610cd457829003601f168201915b5050505050905090565b600081610d2457506001600160a01b03821660009081526033602052604090205460ff16610d7e565b8160011415610d4f57506001600160a01b03821660009081526034602052604090205460ff16610d7e565b8160021415610d7a57506001600160a01b03821660009081526035602052604090205460ff16610d7e565b5060005b92915050565b6005546000906001600160a01b03163314610dd4576040805162461bcd60e51b81526020600482015260176024820152600080516020614736833981519152604482015290519081900360640190fd5b50600e81905560015b919050565b60085490565b6005546000906001600160a01b03163314610e38576040805162461bcd60e51b81526020600482015260176024820152600080516020614736833981519152604482015290519081900360640190fd5b50600855600190565b600e5490565b60075490565b6005546000906001600160a01b03163314610e9d576040805162461bcd60e51b81526020600482015260176024820152600080516020614736833981519152604482015290519081900360640190fd5b50600955600190565b6005546000906001600160a01b03163314610ef6576040805162461bcd60e51b81526020600482015260176024820152600080516020614736833981519152604482015290519081900360640190fd5b60005b84811015610f7357838382818110610f0d57fe5b905060200201356001600160a01b031660316000888885818110610f2d57fe5b6001600160a01b03602091820293909301358316845283019390935260409091016000208054939091166001600160a01b03199093169290921790915550600101610ef9565b50600195945050505050565b60025460ff1690565b6005546000906001600160a01b03163314610fd8576040805162461bcd60e51b81526020600482015260176024820152600080516020614736833981519152604482015290519081900360640190fd5b81611002576001600160a01b0384166000908152603360205260409020805460ff19168415151790555b8160011415611030576001600160a01b0384166000908152603460205260409020805460ff19168415151790555b816002141561105e576001600160a01b0384166000908152603560205260409020805460ff19168415151790555b81600314156110b3576001600160a01b0384166000908152603460209081526040808320805487151560ff19918216811790925560338452828520805482168317905560359093529220805490911690911790555b5060019392505050565b6001600160a01b031660009081526032602052604090205490565b6005546000906001600160a01b03163314611128576040805162461bcd60e51b81526020600482015260176024820152600080516020614736833981519152604482015290519081900360640190fd5b826001141561113b57601282905561124d565b826002141561114e57601382905561124d565b826003141561116157601482905561124d565b826004141561117457601582905561124d565b826005141561118757601682905561124d565b826006141561119a57601782905561124d565b82600714156111ad57601882905561124d565b82600814156111c057601982905561124d565b82600914156111d357601a82905561124d565b82600a14156111e657601b82905561124d565b82600b14156111f957601c82905561124d565b82600c141561120c57601d82905561124d565b82600d141561121f57601e82905561124d565b82600e141561123257601f82905561124d565b82600f141561124557602082905561124d565b506000610d7e565b50600192915050565b6005546000906001600160a01b031633146112a6576040805162461bcd60e51b81526020600482015260176024820152600080516020614736833981519152604482015290519081900360640190fd5b60005b84811015610f73576113168484838181106112c057fe5b90506020020135603060008989868181106112d757fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000205461307590919063ffffffff16565b6030600088888581811061132657fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002081905550600061137785858481811061136b57fe5b9050602002013561165a565b90506113a085858481811061138857fe5b90506020020135600e5461307590919063ffffffff16565b600e5560098054820190558686838181106113b757fe5b905060200201356001600160a01b03166001600160a01b0316306001600160a01b03166000805160206148228339815191528787868181106113f557fe5b905060200201356040518082815260200191505060405180910390a3506001016112a9565b6005546000906001600160a01b0316331461146a576040805162461bcd60e51b81526020600482015260176024820152600080516020614736833981519152604482015290519081900360640190fd5b8161149f576001600160a01b0384166000908152603060205260409020839055600e546114979084613075565b600e556110b3565b50506001600160a01b0391909116600090815260306020526040902055600190565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156115475780601f1061151c57610100808354040283529160200191611547565b820191906000526020600020905b81548152906001019060200180831161152a57829003601f168201915b505050505081565b6005546000906001600160a01b0316331461159f576040805162461bcd60e51b81526020600482015260176024820152600080516020614736833981519152604482015290519081900360640190fd5b816115aa57600a8390555b81600114156115b957600b8390555b81600214156115c857600c8390555b816003141561124d575050600c819055600b819055600a55600190565b6001600160a01b031660009081526030602052604090205490565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156115475780601f1061151c57610100808354040283529160200191611547565b6000646c4428ea00600e5411611670576000600d555b646c4428ea00600e5411801561168e57506501001d1bf800600e5411155b1561169e576311e1a3008202600d555b6501001d1bf800600e541180156116bd5750650168e3330c00600e5411155b156116cd57632e318fc08202600d555b650168e3330c00600e541180156116ec57506501c8591a9000600e5411155b156116fc5763684ee1808202600d555b6501c8591a9000600e5411801561171b5750650219d6babc00600e5411155b1561172b5763ee6b28008202600d555b650219d6babc00600e5411801561174a5750650266ac432000600e5411155b1561175b57640156ba09808202600d555b650266ac432000600e5411801561177a57506502aed9b3bc00600e5411155b1561178b576402f7f58f808202600d555b6502aed9b3bc00600e541180156117aa57506502f25f0c9000600e5411155b156117bb576404b6fe7a808202600d555b6502f25f0c9000600e541180156117da57506503313c4d9c00600e5411155b156117eb57640870ab1a808202600d555b6503313c4d9c00600e5411801561180a575065036dc582c400600e5411155b1561181b57640e8d4a51008202600d555b65036dc582c400600e5411801561183a57506503a7faac0800600e5411155b1561184b57641daf979b008202600d555b6503a7faac0800600e5411801561186a57506503dfdbc96800600e5411155b1561187b576433390598008202600d555b6503dfdbc96800600e5411801561189a575065041568dae400600e5411155b156118ab57645466af09008202600d555b65041568dae400600e541180156118ca57506504464dd49800600e5411155b156118db5764975704e4008202600d555b6504464dd49800600e541180156118fa5750650474dec26800600e5411155b1561190c5765012c3c307f008202600d555b650474dec26800600e5411801561192b575065049ec7987000600e5411155b1561193d5765028bed0160008202600d555b65049ec7987000600e5411801561195c57506504bf603ee800600e5411155b1561196e576505af3107a4008202600d555b6504bf603ee800600e5411801561198d57506504dda4d97c00600e5411155b1561199f576508de19495c008202600d555b6504dda4d97c00600e541180156119be57506504f7415c4800600e5411155b156119d05765136cd66f15c08202600d555b6504f7415c4800600e541180156119ef5750650509e1bb6800600e5411155b15611a0157652d30c5c98b008202600d555b650509e1bb6800600e54118015611a20575065051331eaf800600e5411155b15611a3257659aa76550a5808202600d555b65051331eaf800600e54118015611a515750650517da02c000600e5411155b15611a6457660252e68625c8008202600d555b600d54610d7e90620f42406130cf565b6005546001600160a01b031681565b600081611a935750600a54610ddd565b8160011415611aa55750600b54610ddd565b8160021415611ab75750600c54610ddd565b506000919050565b6000333214611b03576040805162461bcd60e51b815260206004820152601c6024820152600080516020614716833981519152604482015290519081900360640190fd5b336000908152600360205260409020544303611b56576040805162461bcd60e51b815260206004820152600d60248201526c119c995c5d595b9d0810d85b1b609a1b604482015290519081900360640190fd5b336000908152600360205260409020439055600c5415611bb5576040805162461bcd60e51b81526020600482015260156024820152742bb4ba34323930bb903737ba1030b63637bbb2b21760591b604482015290519081900360640190fd5b3360009081526035602052604090205460ff1615611c1a576040805162461bcd60e51b815260206004820152601e60248201527f5769746864726177206e6f7420616c6c6f77656420666f7220757365722e0000604482015290519081900360640190fd5b6000600e5411611c68576040805162461bcd60e51b81526020600482015260146024820152736e6f2063697263756c6174656420746f6b656e7360601b604482015290519081900360640190fd5b60008211611cb6576040805162461bcd60e51b81526020600482015260166024820152750c6c2dc40dcdee840eed2e8d0c8e4c2ee406040cae8d60531b604482015290519081900360640190fd5b33600090815260326020526040902054821115611d1a576040805162461bcd60e51b815260206004820152601e60248201527f6e6f7420656e6f756768207265776172647320746f2077697468647261770000604482015290519081900360640190fd5b600f54821115611d71576040805162461bcd60e51b815260206004820152601960248201527f657863656564656420636f6d6d697373696f6e2066756e647300000000000000604482015290519081900360640190fd5b33600090815260326020526040902054611d8b9083613111565b33600090815260326020526040902055600f54611da89083613111565b600f55604051339083156108fc029084906000818181858888f19350505050158015611dd8573d6000803e3d6000fd5b5060408051838152905133917fccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc919081900360200190a2506001919050565b60018054604080516020601f60026000196101008789161502019095169490940493840181900481028201810190925282815260609390929091830182828015610cf15780601f10610cc657610100808354040283529160200191610cf1565b6005546000906001600160a01b03163314611ec7576040805162461bcd60e51b81526020600482015260176024820152600080516020614736833981519152604482015290519081900360640190fd5b60005b84811015610f73576000848483818110611ee057fe5b9050602002013590508060326000898986818110611efa57fe5b602090810292909201356001600160a01b03168352508101919091526040016000208054919091019055600f8054919091019055600101611eca565b6000333214611f7a576040805162461bcd60e51b815260206004820152601c6024820152600080516020614716833981519152604482015290519081900360640190fd5b60008211611fcf576040805162461bcd60e51b815260206004820152601a60248201527f43616e206e6f74207472616e73666572203020746f6b656e732e000000000000604482015290519081900360640190fd5b60065482111561201f576040805162461bcd60e51b815260206004820152601660248201527526b0bc34b6bab6902a3930b739b332b9101a9818181760511b604482015290519081900360640190fd5b6006546001600160a01b038416600090815260306020526040902054612046908490613075565b11156120835760405162461bcd60e51b81526004018080602001828103825260228152602001806148886022913960400191505060405180910390fd5b336000908152603060205260409020548211156120e7576040805162461bcd60e51b815260206004820152601b60248201527f496e73756666696369656e7420546f6b656e2042616c616e63652e0000000000604482015290519081900360640190fd5b61124d6120f2613153565b8484613157565b60008061212c60646009548161210b57fe5b0460095403612126620f4240866130cf90919063ffffffff16565b90613297565b9392505050565b6005546000906001600160a01b03163314612183576040805162461bcd60e51b81526020600482015260176024820152600080516020614736833981519152604482015290519081900360640190fd5b50600f55600190565b600f5490565b6005546000906001600160a01b031633146121e2576040805162461bcd60e51b81526020600482015260176024820152600080516020614736833981519152604482015290519081900360640190fd5b69d3c21bcecceda1000000820260018414156122025760218190556110b3565b83600214156122155760228190556110b3565b83600314156122285760238190556110b3565b836004141561223b5760248190556110b3565b836005141561224e5760258190556110b3565b83600614156122615760268190556110b3565b83600714156122745760278190556110b3565b83600814156122875760288190556110b3565b836009141561229a5760298190556110b3565b83600a14156122ad57602a8190556110b3565b83600b14156122c057602b8190556110b3565b83600c14156122d357602c8190556110b3565b83600d14156122e657602d8190556110b3565b83600e14156122f957602e8190556110b3565b83600f141561230c57602f8190556110b3565b6000915050610d7e565b6001600160a01b039081166000908152603160205260409020541690565b6005546000906001600160a01b03163314612384576040805162461bcd60e51b81526020600482015260176024820152600080516020614736833981519152604482015290519081900360640190fd5b50601155600190565b6005546000906001600160a01b031633146123dd576040805162461bcd60e51b81526020600482015260176024820152600080516020614736833981519152604482015290519081900360640190fd5b60005b88811015612638578787828181106123f457fe5b905060200201356001600160a01b0316603160008c8c8581811061241457fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061248e86868381811061247757fe5b90506020020135603060008d8d868181106112d757fe5b603060008c8c8581811061249e57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000208190555060006124e387878481811061136b57fe5b90506124f487878481811061138857fe5b600e55600980548201905561252585858481811061250e57fe5b90506020020135603260008e8e878181106112d757fe5b603260008d8d8681811061253557fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000208190555084848381811061257557fe5b90506020020135600f5401600f8190555088888381811061259257fe5b905060200201356001600160a01b03166001600160a01b03168b8b848181106125b757fe5b905060200201356001600160a01b03166001600160a01b03167faee878d4ce275636b8571afc4c23d944e4dee675c1aebcc01c2f8f6b032fb90b8989868181106125fd57fe5b9050602002013588888781811061261057fe5b604080519485526020918202939093013590840152508051918290030190a3506001016123e0565b5060019998505050505050505050565b600954600090620186a06157e4840204908184039083906126769061267084620f4240613297565b906130cf565b95945050505050565b60003332146126c3576040805162461bcd60e51b815260206004820152601c6024820152600080516020614716833981519152604482015290519081900360640190fd5b336000908152600360205260409020544303612716576040805162461bcd60e51b815260206004820152600d60248201526c119c995c5d595b9d0810d85b1b609a1b604482015290519081900360640190fd5b336000908152600360205260409020439055600954600e54600b5460648304909203911561277f576040805162461bcd60e51b815260206004820152601160248201527029b2b636103737ba1030b63637bbb2b21760791b604482015290519081900360640190fd5b3360009081526034602052604090205460ff16156127e4576040805162461bcd60e51b815260206004820152601a60248201527f53656c6c206e6f7420616c6c6f77656420666f7220757365722e000000000000604482015290519081900360640190fd5b6000600e5411612832576040805162461bcd60e51b81526020600482015260146024820152736e6f2063697263756c6174656420746f6b656e7360601b604482015290519081900360640190fd5b6000841161287e576040805162461bcd60e51b815260206004820152601460248201527331b0b7103737ba1039b2b6361018103a37b5b2b760611b604482015290519081900360640190fd5b336000908152603060205260409020548411156128e2576040805162461bcd60e51b815260206004820152601d60248201527f6e6f7420656e6f75676820746f6b656e7320746f207472616e73616374000000604482015290519081900360640190fd5b600754600e546128f3908690613075565b111561293e576040805162461bcd60e51b8152602060048201526015602482015274657863656564656420746f74616c20737570706c7960581b604482015290519081900360640190fd5b3361297a5760405162461bcd60e51b81526004018080602001828103825260218152602001806148426021913960400191505060405180910390fd5b336000908152603060205260409020546129949085613111565b3360008181526030602090815260409182902093909355805187815290513093600080516020614822833981519152928290030190a360006129d58561165a565b600980548290039055600e549091506129ee9086613111565b600e556009546000612a0087866132f0565b600e5460405191925090339083156108fc029084906000818181858888f19350505050158015612a34573d6000803e3d6000fd5b5060408051838152602081018a9052808201889052606081018590526080810187905260a08101839052905133917fe771a8c700d0802cd276270eb0596a1aead6f28237a9e5f26e00ccf08dad7033919081900360c00190a2506001979650505050505050565b60095490565b6000333214612ae5576040805162461bcd60e51b815260206004820152601c6024820152600080516020614716833981519152604482015290519081900360640190fd5b336000908152600360205260409020544303612b38576040805162461bcd60e51b815260206004820152600d60248201526c119c995c5d595b9d0810d85b1b609a1b604482015290519081900360640190fd5b336000908152600360205260409020439055600a5415612b92576040805162461bcd60e51b815260206004820152601060248201526f213abc903737ba1030b63637bbb2b21760811b604482015290519081900360640190fd5b3360009081526033602052604090205460ff1615612bf7576040805162461bcd60e51b815260206004820152601960248201527f427579206e6f7420616c6c6f77656420666f7220757365722e00000000000000604482015290519081900360640190fd5b6001600160a01b038216331415612c55576040805162461bcd60e51b815260206004820152601e60248201527f53656c66207265666572656e6365206e6f7420616c6c6f776564206275790000604482015290519081900360640190fd5b6001600160a01b038216612ca7576040805162461bcd60e51b81526020600482015260146024820152734e6f20526566657272616c20436f64652062757960601b604482015290519081900360640190fd5b33600081815260316020526040812080546001600160a01b0319166001600160a01b0386161790556009543491612ce58261267085620f4240613297565b90506000612cf3848461330c565b9050612d0c600e5460075461311190919063ffffffff16565b811115612d4a5760405162461bcd60e51b81526004018080602001828103825260228152602001806147796022913960400191505060405180910390fd5b60008111612d97576040805162461bcd60e51b815260206004820152601560248201527421b0b7103737ba10313abc9018103a37b5b2b7399760591b604482015290519081900360640190fd5b600654811115612de8576040805162461bcd60e51b815260206004820152601760248201527626b0bc34b6bab690213abcb4b733902932b0b1b432b21760491b604482015290519081900360640190fd5b60065433600090815260306020526040902054612e06908390613075565b1115612e53576040805162461bcd60e51b815260206004820152601760248201527626b0bc34b6bab690213abcb4b733902932b0b1b432b21760491b604482015290519081900360640190fd5b600e546001600160a01b038616612eb1576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6001600160a01b038616600090815260306020526040902054612ed49083613075565b6001600160a01b038716600090815260306020526040812091909155612ef98361165a565b600e54909150612f099084613075565b600e81905560098054830190819055604080518781526020810187905280820189905260608101839052608081018a905260a0810186905260c0810184905290519192916001600160a01b03808e1692908c16917fda6a7d667b4725fe802e5c174fb82a0f82fbd8455964eed3378f50e4af5a13909181900360e00190a36040805186815290516001600160a01b038b169130916000805160206148228339815191529181900360200190a3612fc186898b8a613337565b5060019a9950505050505050505050565b6005546000906001600160a01b03163314613022576040805162461bcd60e51b81526020600482015260176024820152600080516020614736833981519152604482015290519081900360640190fd5b8161304f576001600160a01b0384166000908152603260205260409020839055600e546114979084613075565b50506001600160a01b0391909116600090815260326020526040902055600190565b3090565b60008282018381101561212c576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061212c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614619565b600061212c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506146bb565b3390565b6001600160a01b03831661319c5760405162461bcd60e51b81526004018080602001828103825260258152602001806148636025913960400191505060405180910390fd5b6001600160a01b0382166131e15760405162461bcd60e51b81526004018080602001828103825260238152602001806147566023913960400191505060405180910390fd5b61321e816040518060600160405280602681526020016147bb602691396001600160a01b03861660009081526030602052604090205491906146bb565b6001600160a01b03808516600090815260306020526040808220939093559084168152205461324d9082613075565b6001600160a01b03808416600081815260306020908152604091829020949094558051858152905191939287169260008051602061482283398151915292918290030190a3505050565b6000826132a657506000610d7e565b828202828482816132b357fe5b041461212c5760405162461bcd60e51b81526004018080602001828103825260218152602001806148016021913960400191505060405180910390fd5b6000806133048361212686620f42406130cf565b949350505050565b6000620186a06157e48402048084038261332d8561267084620f4240613297565b9695505050505050565b6108ca8260005b600f811015614610576001600160a01b03808616600081815260316020908152604080832054909416808352603090915292902054601154909187830291820290841415613405576127108b88025b04600854016008819055506133b3612710888d02816133a857fe5b600e54919004613075565b600e556001600160a01b0380851690871660008051602061479b8339815191526127108e8b0260408051929091048252602082018c905260018a0182820152519081900360600190a350505050614610565b6001600160a01b03841661341e576127108b880261338d565b846135655760215481106134c75760006127106012548c028161343d57fe5b6001600160a01b03871660009081526032602052604090205491900491506134659082613075565b6001600160a01b0380871660008181526032602090815260409182902094909455600f805486019055805185815293840186905260018a0184820152519092918a16916000805160206147e1833981519152919081900360600190a350613550565b6127106012548c02816134d657fe5b04600854016008819055506134f36127106012548d02816133a857fe5b600e81905550836001600160a01b0316866001600160a01b031660008051602061479b8339815191526127106012548f028161352b57fe5b60125460408051939092048352602083015260018a0182820152519081900360600190a35b60125461355e908890613111565b9650614602565b84600114156136895760225481106135f45760006127106013548c028161358857fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a16916000805160206147e1833981519152919081900360600190a35061367d565b6127106013548c028161360357fe5b04600854016008819055506136206127106013548d02816133a857fe5b600e81905550836001600160a01b0316866001600160a01b031660008051602061479b8339815191526127106013548f028161365857fe5b60135460408051939092048352602083015260018a0182820152519081900360600190a35b60135487039650614602565b84600214156137a95760235481106137145760006127106014548c02816136ac57fe5b6001600160a01b038088166000818152603260209081526040918290209590940494859055600f805486019055805185815293840187905260018b01848201525193945092908a16916000805160206147e1833981519152919081900360600190a35061379d565b6127106014548c028161372357fe5b04600854016008819055506137406127106014548d02816133a857fe5b600e81905550836001600160a01b0316866001600160a01b031660008051602061479b8339815191526127106014548f028161377857fe5b60145460408051939092048352602083015260018a0182820152519081900360600190a35b60145487039650614602565b84600314156138cd5760245481106138385760006127106015548c02816137cc57fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a16916000805160206147e1833981519152919081900360600190a3506138c1565b6127106015548c028161384757fe5b04600854016008819055506138646127106015548d02816133a857fe5b600e81905550836001600160a01b0316866001600160a01b031660008051602061479b8339815191526127106015548f028161389c57fe5b60155460408051939092048352602083015260018a0182820152519081900360600190a35b60155487039650614602565b8460041415613a0857602554811061395d576000620186a06016548c02816138f157fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a16916000805160206147e1833981519152919081900360600190a3506139f2565b620186a06016548c028161396d57fe5b046008540160088190555061398b620186a06016548d02816133a857fe5b600e81905550836001600160a01b0316866001600160a01b031660008051602061479b8339815191526127106016548f02816139c357fe5b04600a601654816139d057fe5b60408051938452919004602083015260018a0182820152519081900360600190a35b600a601654816139fe57fe5b0487039650614602565b8460051415613b3a576026548110613a98576000620186a06017548c0281613a2c57fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a16916000805160206147e1833981519152919081900360600190a350613b2e565b620186a06017548c0281613aa857fe5b0460085401600881905550613ac6620186a06017548d02816133a857fe5b600e81905550836001600160a01b0316866001600160a01b031660008051602061479b833981519152620186a06017548f0281613aff57fe5b04600a60175481613b0c57fe5b60408051938452919004602083015260018a0182820152519081900360600190a35b600a601754816139fe57fe5b8460061415613c6c576027548110613bca576000620186a06018548c0281613b5e57fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a16916000805160206147e1833981519152919081900360600190a350613c60565b620186a06018548c0281613bda57fe5b0460085401600881905550613bf8620186a06018548d02816133a857fe5b600e81905550836001600160a01b0316866001600160a01b031660008051602061479b833981519152620186a06018548f0281613c3157fe5b04600a60185481613c3e57fe5b60408051938452919004602083015260018a0182820152519081900360600190a35b600a601854816139fe57fe5b8460071415613d9e576028548110613cfc576000620186a06019548c0281613c9057fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a16916000805160206147e1833981519152919081900360600190a350613d92565b620186a06019548c0281613d0c57fe5b0460085401600881905550613d2a620186a06019548d02816133a857fe5b600e81905550836001600160a01b0316866001600160a01b031660008051602061479b833981519152620186a06019548f0281613d6357fe5b04600a60195481613d7057fe5b60408051938452919004602083015260018a0182820152519081900360600190a35b600a601954816139fe57fe5b8460081415613ed0576029548110613e2e576000620186a0601a548c0281613dc257fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a16916000805160206147e1833981519152919081900360600190a350613ec4565b620186a0601a548c0281613e3e57fe5b0460085401600881905550613e5c620186a0601a548d02816133a857fe5b600e81905550836001600160a01b0316866001600160a01b031660008051602061479b833981519152620186a0601a548f0281613e9557fe5b04600a601a5481613ea257fe5b60408051938452919004602083015260018a0182820152519081900360600190a35b600a601a54816139fe57fe5b846009141561400257602a548110613f60576000620186a0601b548c0281613ef457fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a16916000805160206147e1833981519152919081900360600190a350613ff6565b620186a0601b548c0281613f7057fe5b0460085401600881905550613f8e620186a0601b548d02816133a857fe5b600e81905550836001600160a01b0316866001600160a01b031660008051602061479b833981519152620186a0601b548f0281613fc757fe5b04600a601b5481613fd457fe5b60408051938452919004602083015260018a0182820152519081900360600190a35b600a601b54816139fe57fe5b84600a141561413457602b548110614092576000620186a0601c548c028161402657fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a16916000805160206147e1833981519152919081900360600190a350614128565b620186a0601c548c02816140a257fe5b04600854016008819055506140c0620186a0601c548d02816133a857fe5b600e81905550836001600160a01b0316866001600160a01b031660008051602061479b833981519152620186a0601c548f02816140f957fe5b04600a601c548161410657fe5b60408051938452919004602083015260018a0182820152519081900360600190a35b600a601c54816139fe57fe5b84600b141561426657602c5481106141c4576000620186a0601d548c028161415857fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a16916000805160206147e1833981519152919081900360600190a35061425a565b620186a0601d548c02816141d457fe5b04600854016008819055506141f2620186a0601d548d02816133a857fe5b600e81905550836001600160a01b0316866001600160a01b031660008051602061479b833981519152620186a0601d548f028161422b57fe5b04600a601d548161423857fe5b60408051938452919004602083015260018a0182820152519081900360600190a35b600a601d54816139fe57fe5b84600c141561439857602d5481106142f6576000620186a0601e548c028161428a57fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a16916000805160206147e1833981519152919081900360600190a35061438c565b620186a0601e548c028161430657fe5b0460085401600881905550614324620186a0601e548d02816133a857fe5b600e81905550836001600160a01b0316866001600160a01b031660008051602061479b833981519152620186a0601e548f028161435d57fe5b04600a601e548161436a57fe5b60408051938452919004602083015260018a0182820152519081900360600190a35b600a601e54816139fe57fe5b84600d14156144ca57602e548110614428576000620186a0601f548c02816143bc57fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a16916000805160206147e1833981519152919081900360600190a3506144be565b620186a0601f548c028161443857fe5b0460085401600881905550614456620186a0601f548d02816133a857fe5b600e81905550836001600160a01b0316866001600160a01b031660008051602061479b833981519152620186a0601f548f028161448f57fe5b04600a601f548161449c57fe5b60408051938452919004602083015260018a0182820152519081900360600190a35b600a601f54816139fe57fe5b84600e141561460257602f54811061455a576000620186a06020548c02816144ee57fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a16916000805160206147e1833981519152919081900360600190a3506145f0565b620186a06020548c028161456a57fe5b0460085401600881905550614588620186a06020548d02816133a857fe5b600e81905550836001600160a01b0316866001600160a01b031660008051602061479b833981519152620186a06020548f02816145c157fe5b04600a602054816145ce57fe5b60408051938452919004602083015260018a0182820152519081900360600190a35b600a602054816145fc57fe5b04870396505b50919650505060010161333e565b50505050505050565b600081836146a55760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561466a578181015183820152602001614652565b50505050905090810190601f1680156146975780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816146b157fe5b0495945050505050565b6000818484111561470d5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561466a578181015183820152602001614652565b50505090039056fe4f726967696e20616e642053656e646572204d69736d6174636865640000000043616c6c6572206973206e6f7420746865206f776e657200000000000000000045524332303a207472616e7366657220746f20746865207a65726f2061646472657373546f6b656e20616d6f756e7420657863656564656420746f74616c20737570706c79112766730ce440487945c01048dacfc6d04340403f675871e96c4e28cf622ecc45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636503e2fbb2b92f9e0c79b9743877ad3b4ed3fd2d8df69ddba7a376839ed2bc2ff7536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f20616464726573734d6178696d756d204c696d69742052656163686564206f662052656365697665722ea26469706673582212203e5b950986e59cd63a9df6b748ca0f841ba9e76fdd00c55364cd82f685f770c564736f6c63430007040033

Deployed Bytecode

0x6080604052600436106102345760003560e01c80637ca6e31d1161012e578063c7e97f5d116100ab578063e4849b321161006f578063e4849b3214610bac578063eb91d37e14610bd6578063f088d54714610beb578063f2a1566a14610c11578063f6b4dfb414610c505761027d565b8063c7e97f5d1461098a578063cb6f37ab146109ba578063cc442dab146109ed578063de57b81414610a17578063e095f81414610b825761027d565b80639ee08b6d116100f25780639ee08b6d1461081d578063a9059cbb146108e8578063aad7390d14610921578063af5abcf91461094b578063c543adf5146109755761027d565b80637ca6e31d146107595780638da5cb5b14610783578063926a9ca1146107b45780639342c8f4146107de57806395d89b41146108085761027d565b8063313ce567116101bc5780636926e82f116101805780636926e82f1461068d5780636c02a931146106cc5780636d440056146106e157806370a08231146107115780637b61c320146107445761027d565b8063313ce567146104f3578063576fcd1b1461051e57806360f74caa1461055f5780636322da2c1461059257806365216a41146105c25761027d565b8063119d9eed11610203578063119d9eed146103aa5780631427fdb1146103d457806318160ddd146103e95780631942b033146103fe5780631d9274ed146104285761027d565b806306fdde03146102825780630752750e1461030c578063089217f514610359578063102c5003146103835761027d565b3661027d5733321461027b576040805162461bcd60e51b815260206004820152601c6024820152600080516020614716833981519152604482015290519081900360640190fd5b005b600080fd5b34801561028e57600080fd5b50610297610c65565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102d15781810151838201526020016102b9565b50505050905090810190601f1680156102fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031857600080fd5b506103456004803603604081101561032f57600080fd5b506001600160a01b038135169060200135610cfb565b604080519115158252519081900360200190f35b34801561036557600080fd5b506103456004803603602081101561037c57600080fd5b5035610d84565b34801561038f57600080fd5b50610398610de2565b60408051918252519081900360200190f35b3480156103b657600080fd5b50610345600480360360208110156103cd57600080fd5b5035610de8565b3480156103e057600080fd5b50610398610e41565b3480156103f557600080fd5b50610398610e47565b34801561040a57600080fd5b506103456004803603602081101561042157600080fd5b5035610e4d565b34801561043457600080fd5b506103456004803603604081101561044b57600080fd5b810190602081018135600160201b81111561046557600080fd5b82018360208201111561047757600080fd5b803590602001918460208302840111600160201b8311171561049857600080fd5b919390929091602081019035600160201b8111156104b557600080fd5b8201836020820111156104c757600080fd5b803590602001918460208302840111600160201b831117156104e857600080fd5b509092509050610ea6565b3480156104ff57600080fd5b50610508610f7f565b6040805160ff9092168252519081900360200190f35b34801561052a57600080fd5b506103456004803603606081101561054157600080fd5b506001600160a01b0381351690602081013515159060400135610f88565b34801561056b57600080fd5b506103986004803603602081101561058257600080fd5b50356001600160a01b03166110bd565b34801561059e57600080fd5b50610345600480360360408110156105b557600080fd5b50803590602001356110d8565b3480156105ce57600080fd5b50610345600480360360408110156105e557600080fd5b810190602081018135600160201b8111156105ff57600080fd5b82018360208201111561061157600080fd5b803590602001918460208302840111600160201b8311171561063257600080fd5b919390929091602081019035600160201b81111561064f57600080fd5b82018360208201111561066157600080fd5b803590602001918460208302840111600160201b8311171561068257600080fd5b509092509050611256565b34801561069957600080fd5b50610345600480360360608110156106b057600080fd5b506001600160a01b03813516906020810135906040013561141a565b3480156106d857600080fd5b506102976114c1565b3480156106ed57600080fd5b506103456004803603604081101561070457600080fd5b508035906020013561154f565b34801561071d57600080fd5b506103986004803603602081101561073457600080fd5b50356001600160a01b03166115e5565b34801561075057600080fd5b50610297611600565b34801561076557600080fd5b506103986004803603602081101561077c57600080fd5b503561165a565b34801561078f57600080fd5b50610798611a74565b604080516001600160a01b039092168252519081900360200190f35b3480156107c057600080fd5b50610398600480360360208110156107d757600080fd5b5035611a83565b3480156107ea57600080fd5b506103456004803603602081101561080157600080fd5b5035611abf565b34801561081457600080fd5b50610297611e17565b34801561082957600080fd5b506103456004803603604081101561084057600080fd5b810190602081018135600160201b81111561085a57600080fd5b82018360208201111561086c57600080fd5b803590602001918460208302840111600160201b8311171561088d57600080fd5b919390929091602081019035600160201b8111156108aa57600080fd5b8201836020820111156108bc57600080fd5b803590602001918460208302840111600160201b831117156108dd57600080fd5b509092509050611e77565b3480156108f457600080fd5b506103456004803603604081101561090b57600080fd5b506001600160a01b038135169060200135611f36565b34801561092d57600080fd5b506103986004803603602081101561094457600080fd5b50356120f9565b34801561095757600080fd5b506103456004803603602081101561096e57600080fd5b5035612133565b34801561098157600080fd5b5061039861218c565b34801561099657600080fd5b50610345600480360360408110156109ad57600080fd5b5080359060200135612192565b3480156109c657600080fd5b50610798600480360360208110156109dd57600080fd5b50356001600160a01b0316612316565b3480156109f957600080fd5b5061034560048036036020811015610a1057600080fd5b5035612334565b348015610a2357600080fd5b5061034560048036036080811015610a3a57600080fd5b810190602081018135600160201b811115610a5457600080fd5b820183602082011115610a6657600080fd5b803590602001918460208302840111600160201b83111715610a8757600080fd5b919390929091602081019035600160201b811115610aa457600080fd5b820183602082011115610ab657600080fd5b803590602001918460208302840111600160201b83111715610ad757600080fd5b919390929091602081019035600160201b811115610af457600080fd5b820183602082011115610b0657600080fd5b803590602001918460208302840111600160201b83111715610b2757600080fd5b919390929091602081019035600160201b811115610b4457600080fd5b820183602082011115610b5657600080fd5b803590602001918460208302840111600160201b83111715610b7757600080fd5b50909250905061238d565b348015610b8e57600080fd5b5061039860048036036020811015610ba557600080fd5b5035612648565b348015610bb857600080fd5b5061034560048036036020811015610bcf57600080fd5b503561267f565b348015610be257600080fd5b50610398612a9b565b61034560048036036020811015610c0157600080fd5b50356001600160a01b0316612aa1565b348015610c1d57600080fd5b5061034560048036036060811015610c3457600080fd5b506001600160a01b038135169060208101359060400135612fd2565b348015610c5c57600080fd5b50610798613071565b60008054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610cf15780601f10610cc657610100808354040283529160200191610cf1565b820191906000526020600020905b815481529060010190602001808311610cd457829003601f168201915b5050505050905090565b600081610d2457506001600160a01b03821660009081526033602052604090205460ff16610d7e565b8160011415610d4f57506001600160a01b03821660009081526034602052604090205460ff16610d7e565b8160021415610d7a57506001600160a01b03821660009081526035602052604090205460ff16610d7e565b5060005b92915050565b6005546000906001600160a01b03163314610dd4576040805162461bcd60e51b81526020600482015260176024820152600080516020614736833981519152604482015290519081900360640190fd5b50600e81905560015b919050565b60085490565b6005546000906001600160a01b03163314610e38576040805162461bcd60e51b81526020600482015260176024820152600080516020614736833981519152604482015290519081900360640190fd5b50600855600190565b600e5490565b60075490565b6005546000906001600160a01b03163314610e9d576040805162461bcd60e51b81526020600482015260176024820152600080516020614736833981519152604482015290519081900360640190fd5b50600955600190565b6005546000906001600160a01b03163314610ef6576040805162461bcd60e51b81526020600482015260176024820152600080516020614736833981519152604482015290519081900360640190fd5b60005b84811015610f7357838382818110610f0d57fe5b905060200201356001600160a01b031660316000888885818110610f2d57fe5b6001600160a01b03602091820293909301358316845283019390935260409091016000208054939091166001600160a01b03199093169290921790915550600101610ef9565b50600195945050505050565b60025460ff1690565b6005546000906001600160a01b03163314610fd8576040805162461bcd60e51b81526020600482015260176024820152600080516020614736833981519152604482015290519081900360640190fd5b81611002576001600160a01b0384166000908152603360205260409020805460ff19168415151790555b8160011415611030576001600160a01b0384166000908152603460205260409020805460ff19168415151790555b816002141561105e576001600160a01b0384166000908152603560205260409020805460ff19168415151790555b81600314156110b3576001600160a01b0384166000908152603460209081526040808320805487151560ff19918216811790925560338452828520805482168317905560359093529220805490911690911790555b5060019392505050565b6001600160a01b031660009081526032602052604090205490565b6005546000906001600160a01b03163314611128576040805162461bcd60e51b81526020600482015260176024820152600080516020614736833981519152604482015290519081900360640190fd5b826001141561113b57601282905561124d565b826002141561114e57601382905561124d565b826003141561116157601482905561124d565b826004141561117457601582905561124d565b826005141561118757601682905561124d565b826006141561119a57601782905561124d565b82600714156111ad57601882905561124d565b82600814156111c057601982905561124d565b82600914156111d357601a82905561124d565b82600a14156111e657601b82905561124d565b82600b14156111f957601c82905561124d565b82600c141561120c57601d82905561124d565b82600d141561121f57601e82905561124d565b82600e141561123257601f82905561124d565b82600f141561124557602082905561124d565b506000610d7e565b50600192915050565b6005546000906001600160a01b031633146112a6576040805162461bcd60e51b81526020600482015260176024820152600080516020614736833981519152604482015290519081900360640190fd5b60005b84811015610f73576113168484838181106112c057fe5b90506020020135603060008989868181106112d757fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000205461307590919063ffffffff16565b6030600088888581811061132657fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002081905550600061137785858481811061136b57fe5b9050602002013561165a565b90506113a085858481811061138857fe5b90506020020135600e5461307590919063ffffffff16565b600e5560098054820190558686838181106113b757fe5b905060200201356001600160a01b03166001600160a01b0316306001600160a01b03166000805160206148228339815191528787868181106113f557fe5b905060200201356040518082815260200191505060405180910390a3506001016112a9565b6005546000906001600160a01b0316331461146a576040805162461bcd60e51b81526020600482015260176024820152600080516020614736833981519152604482015290519081900360640190fd5b8161149f576001600160a01b0384166000908152603060205260409020839055600e546114979084613075565b600e556110b3565b50506001600160a01b0391909116600090815260306020526040902055600190565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156115475780601f1061151c57610100808354040283529160200191611547565b820191906000526020600020905b81548152906001019060200180831161152a57829003601f168201915b505050505081565b6005546000906001600160a01b0316331461159f576040805162461bcd60e51b81526020600482015260176024820152600080516020614736833981519152604482015290519081900360640190fd5b816115aa57600a8390555b81600114156115b957600b8390555b81600214156115c857600c8390555b816003141561124d575050600c819055600b819055600a55600190565b6001600160a01b031660009081526030602052604090205490565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156115475780601f1061151c57610100808354040283529160200191611547565b6000646c4428ea00600e5411611670576000600d555b646c4428ea00600e5411801561168e57506501001d1bf800600e5411155b1561169e576311e1a3008202600d555b6501001d1bf800600e541180156116bd5750650168e3330c00600e5411155b156116cd57632e318fc08202600d555b650168e3330c00600e541180156116ec57506501c8591a9000600e5411155b156116fc5763684ee1808202600d555b6501c8591a9000600e5411801561171b5750650219d6babc00600e5411155b1561172b5763ee6b28008202600d555b650219d6babc00600e5411801561174a5750650266ac432000600e5411155b1561175b57640156ba09808202600d555b650266ac432000600e5411801561177a57506502aed9b3bc00600e5411155b1561178b576402f7f58f808202600d555b6502aed9b3bc00600e541180156117aa57506502f25f0c9000600e5411155b156117bb576404b6fe7a808202600d555b6502f25f0c9000600e541180156117da57506503313c4d9c00600e5411155b156117eb57640870ab1a808202600d555b6503313c4d9c00600e5411801561180a575065036dc582c400600e5411155b1561181b57640e8d4a51008202600d555b65036dc582c400600e5411801561183a57506503a7faac0800600e5411155b1561184b57641daf979b008202600d555b6503a7faac0800600e5411801561186a57506503dfdbc96800600e5411155b1561187b576433390598008202600d555b6503dfdbc96800600e5411801561189a575065041568dae400600e5411155b156118ab57645466af09008202600d555b65041568dae400600e541180156118ca57506504464dd49800600e5411155b156118db5764975704e4008202600d555b6504464dd49800600e541180156118fa5750650474dec26800600e5411155b1561190c5765012c3c307f008202600d555b650474dec26800600e5411801561192b575065049ec7987000600e5411155b1561193d5765028bed0160008202600d555b65049ec7987000600e5411801561195c57506504bf603ee800600e5411155b1561196e576505af3107a4008202600d555b6504bf603ee800600e5411801561198d57506504dda4d97c00600e5411155b1561199f576508de19495c008202600d555b6504dda4d97c00600e541180156119be57506504f7415c4800600e5411155b156119d05765136cd66f15c08202600d555b6504f7415c4800600e541180156119ef5750650509e1bb6800600e5411155b15611a0157652d30c5c98b008202600d555b650509e1bb6800600e54118015611a20575065051331eaf800600e5411155b15611a3257659aa76550a5808202600d555b65051331eaf800600e54118015611a515750650517da02c000600e5411155b15611a6457660252e68625c8008202600d555b600d54610d7e90620f42406130cf565b6005546001600160a01b031681565b600081611a935750600a54610ddd565b8160011415611aa55750600b54610ddd565b8160021415611ab75750600c54610ddd565b506000919050565b6000333214611b03576040805162461bcd60e51b815260206004820152601c6024820152600080516020614716833981519152604482015290519081900360640190fd5b336000908152600360205260409020544303611b56576040805162461bcd60e51b815260206004820152600d60248201526c119c995c5d595b9d0810d85b1b609a1b604482015290519081900360640190fd5b336000908152600360205260409020439055600c5415611bb5576040805162461bcd60e51b81526020600482015260156024820152742bb4ba34323930bb903737ba1030b63637bbb2b21760591b604482015290519081900360640190fd5b3360009081526035602052604090205460ff1615611c1a576040805162461bcd60e51b815260206004820152601e60248201527f5769746864726177206e6f7420616c6c6f77656420666f7220757365722e0000604482015290519081900360640190fd5b6000600e5411611c68576040805162461bcd60e51b81526020600482015260146024820152736e6f2063697263756c6174656420746f6b656e7360601b604482015290519081900360640190fd5b60008211611cb6576040805162461bcd60e51b81526020600482015260166024820152750c6c2dc40dcdee840eed2e8d0c8e4c2ee406040cae8d60531b604482015290519081900360640190fd5b33600090815260326020526040902054821115611d1a576040805162461bcd60e51b815260206004820152601e60248201527f6e6f7420656e6f756768207265776172647320746f2077697468647261770000604482015290519081900360640190fd5b600f54821115611d71576040805162461bcd60e51b815260206004820152601960248201527f657863656564656420636f6d6d697373696f6e2066756e647300000000000000604482015290519081900360640190fd5b33600090815260326020526040902054611d8b9083613111565b33600090815260326020526040902055600f54611da89083613111565b600f55604051339083156108fc029084906000818181858888f19350505050158015611dd8573d6000803e3d6000fd5b5060408051838152905133917fccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc919081900360200190a2506001919050565b60018054604080516020601f60026000196101008789161502019095169490940493840181900481028201810190925282815260609390929091830182828015610cf15780601f10610cc657610100808354040283529160200191610cf1565b6005546000906001600160a01b03163314611ec7576040805162461bcd60e51b81526020600482015260176024820152600080516020614736833981519152604482015290519081900360640190fd5b60005b84811015610f73576000848483818110611ee057fe5b9050602002013590508060326000898986818110611efa57fe5b602090810292909201356001600160a01b03168352508101919091526040016000208054919091019055600f8054919091019055600101611eca565b6000333214611f7a576040805162461bcd60e51b815260206004820152601c6024820152600080516020614716833981519152604482015290519081900360640190fd5b60008211611fcf576040805162461bcd60e51b815260206004820152601a60248201527f43616e206e6f74207472616e73666572203020746f6b656e732e000000000000604482015290519081900360640190fd5b60065482111561201f576040805162461bcd60e51b815260206004820152601660248201527526b0bc34b6bab6902a3930b739b332b9101a9818181760511b604482015290519081900360640190fd5b6006546001600160a01b038416600090815260306020526040902054612046908490613075565b11156120835760405162461bcd60e51b81526004018080602001828103825260228152602001806148886022913960400191505060405180910390fd5b336000908152603060205260409020548211156120e7576040805162461bcd60e51b815260206004820152601b60248201527f496e73756666696369656e7420546f6b656e2042616c616e63652e0000000000604482015290519081900360640190fd5b61124d6120f2613153565b8484613157565b60008061212c60646009548161210b57fe5b0460095403612126620f4240866130cf90919063ffffffff16565b90613297565b9392505050565b6005546000906001600160a01b03163314612183576040805162461bcd60e51b81526020600482015260176024820152600080516020614736833981519152604482015290519081900360640190fd5b50600f55600190565b600f5490565b6005546000906001600160a01b031633146121e2576040805162461bcd60e51b81526020600482015260176024820152600080516020614736833981519152604482015290519081900360640190fd5b69d3c21bcecceda1000000820260018414156122025760218190556110b3565b83600214156122155760228190556110b3565b83600314156122285760238190556110b3565b836004141561223b5760248190556110b3565b836005141561224e5760258190556110b3565b83600614156122615760268190556110b3565b83600714156122745760278190556110b3565b83600814156122875760288190556110b3565b836009141561229a5760298190556110b3565b83600a14156122ad57602a8190556110b3565b83600b14156122c057602b8190556110b3565b83600c14156122d357602c8190556110b3565b83600d14156122e657602d8190556110b3565b83600e14156122f957602e8190556110b3565b83600f141561230c57602f8190556110b3565b6000915050610d7e565b6001600160a01b039081166000908152603160205260409020541690565b6005546000906001600160a01b03163314612384576040805162461bcd60e51b81526020600482015260176024820152600080516020614736833981519152604482015290519081900360640190fd5b50601155600190565b6005546000906001600160a01b031633146123dd576040805162461bcd60e51b81526020600482015260176024820152600080516020614736833981519152604482015290519081900360640190fd5b60005b88811015612638578787828181106123f457fe5b905060200201356001600160a01b0316603160008c8c8581811061241457fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061248e86868381811061247757fe5b90506020020135603060008d8d868181106112d757fe5b603060008c8c8581811061249e57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000208190555060006124e387878481811061136b57fe5b90506124f487878481811061138857fe5b600e55600980548201905561252585858481811061250e57fe5b90506020020135603260008e8e878181106112d757fe5b603260008d8d8681811061253557fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000208190555084848381811061257557fe5b90506020020135600f5401600f8190555088888381811061259257fe5b905060200201356001600160a01b03166001600160a01b03168b8b848181106125b757fe5b905060200201356001600160a01b03166001600160a01b03167faee878d4ce275636b8571afc4c23d944e4dee675c1aebcc01c2f8f6b032fb90b8989868181106125fd57fe5b9050602002013588888781811061261057fe5b604080519485526020918202939093013590840152508051918290030190a3506001016123e0565b5060019998505050505050505050565b600954600090620186a06157e4840204908184039083906126769061267084620f4240613297565b906130cf565b95945050505050565b60003332146126c3576040805162461bcd60e51b815260206004820152601c6024820152600080516020614716833981519152604482015290519081900360640190fd5b336000908152600360205260409020544303612716576040805162461bcd60e51b815260206004820152600d60248201526c119c995c5d595b9d0810d85b1b609a1b604482015290519081900360640190fd5b336000908152600360205260409020439055600954600e54600b5460648304909203911561277f576040805162461bcd60e51b815260206004820152601160248201527029b2b636103737ba1030b63637bbb2b21760791b604482015290519081900360640190fd5b3360009081526034602052604090205460ff16156127e4576040805162461bcd60e51b815260206004820152601a60248201527f53656c6c206e6f7420616c6c6f77656420666f7220757365722e000000000000604482015290519081900360640190fd5b6000600e5411612832576040805162461bcd60e51b81526020600482015260146024820152736e6f2063697263756c6174656420746f6b656e7360601b604482015290519081900360640190fd5b6000841161287e576040805162461bcd60e51b815260206004820152601460248201527331b0b7103737ba1039b2b6361018103a37b5b2b760611b604482015290519081900360640190fd5b336000908152603060205260409020548411156128e2576040805162461bcd60e51b815260206004820152601d60248201527f6e6f7420656e6f75676820746f6b656e7320746f207472616e73616374000000604482015290519081900360640190fd5b600754600e546128f3908690613075565b111561293e576040805162461bcd60e51b8152602060048201526015602482015274657863656564656420746f74616c20737570706c7960581b604482015290519081900360640190fd5b3361297a5760405162461bcd60e51b81526004018080602001828103825260218152602001806148426021913960400191505060405180910390fd5b336000908152603060205260409020546129949085613111565b3360008181526030602090815260409182902093909355805187815290513093600080516020614822833981519152928290030190a360006129d58561165a565b600980548290039055600e549091506129ee9086613111565b600e556009546000612a0087866132f0565b600e5460405191925090339083156108fc029084906000818181858888f19350505050158015612a34573d6000803e3d6000fd5b5060408051838152602081018a9052808201889052606081018590526080810187905260a08101839052905133917fe771a8c700d0802cd276270eb0596a1aead6f28237a9e5f26e00ccf08dad7033919081900360c00190a2506001979650505050505050565b60095490565b6000333214612ae5576040805162461bcd60e51b815260206004820152601c6024820152600080516020614716833981519152604482015290519081900360640190fd5b336000908152600360205260409020544303612b38576040805162461bcd60e51b815260206004820152600d60248201526c119c995c5d595b9d0810d85b1b609a1b604482015290519081900360640190fd5b336000908152600360205260409020439055600a5415612b92576040805162461bcd60e51b815260206004820152601060248201526f213abc903737ba1030b63637bbb2b21760811b604482015290519081900360640190fd5b3360009081526033602052604090205460ff1615612bf7576040805162461bcd60e51b815260206004820152601960248201527f427579206e6f7420616c6c6f77656420666f7220757365722e00000000000000604482015290519081900360640190fd5b6001600160a01b038216331415612c55576040805162461bcd60e51b815260206004820152601e60248201527f53656c66207265666572656e6365206e6f7420616c6c6f776564206275790000604482015290519081900360640190fd5b6001600160a01b038216612ca7576040805162461bcd60e51b81526020600482015260146024820152734e6f20526566657272616c20436f64652062757960601b604482015290519081900360640190fd5b33600081815260316020526040812080546001600160a01b0319166001600160a01b0386161790556009543491612ce58261267085620f4240613297565b90506000612cf3848461330c565b9050612d0c600e5460075461311190919063ffffffff16565b811115612d4a5760405162461bcd60e51b81526004018080602001828103825260228152602001806147796022913960400191505060405180910390fd5b60008111612d97576040805162461bcd60e51b815260206004820152601560248201527421b0b7103737ba10313abc9018103a37b5b2b7399760591b604482015290519081900360640190fd5b600654811115612de8576040805162461bcd60e51b815260206004820152601760248201527626b0bc34b6bab690213abcb4b733902932b0b1b432b21760491b604482015290519081900360640190fd5b60065433600090815260306020526040902054612e06908390613075565b1115612e53576040805162461bcd60e51b815260206004820152601760248201527626b0bc34b6bab690213abcb4b733902932b0b1b432b21760491b604482015290519081900360640190fd5b600e546001600160a01b038616612eb1576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6001600160a01b038616600090815260306020526040902054612ed49083613075565b6001600160a01b038716600090815260306020526040812091909155612ef98361165a565b600e54909150612f099084613075565b600e81905560098054830190819055604080518781526020810187905280820189905260608101839052608081018a905260a0810186905260c0810184905290519192916001600160a01b03808e1692908c16917fda6a7d667b4725fe802e5c174fb82a0f82fbd8455964eed3378f50e4af5a13909181900360e00190a36040805186815290516001600160a01b038b169130916000805160206148228339815191529181900360200190a3612fc186898b8a613337565b5060019a9950505050505050505050565b6005546000906001600160a01b03163314613022576040805162461bcd60e51b81526020600482015260176024820152600080516020614736833981519152604482015290519081900360640190fd5b8161304f576001600160a01b0384166000908152603260205260409020839055600e546114979084613075565b50506001600160a01b0391909116600090815260326020526040902055600190565b3090565b60008282018381101561212c576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061212c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614619565b600061212c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506146bb565b3390565b6001600160a01b03831661319c5760405162461bcd60e51b81526004018080602001828103825260258152602001806148636025913960400191505060405180910390fd5b6001600160a01b0382166131e15760405162461bcd60e51b81526004018080602001828103825260238152602001806147566023913960400191505060405180910390fd5b61321e816040518060600160405280602681526020016147bb602691396001600160a01b03861660009081526030602052604090205491906146bb565b6001600160a01b03808516600090815260306020526040808220939093559084168152205461324d9082613075565b6001600160a01b03808416600081815260306020908152604091829020949094558051858152905191939287169260008051602061482283398151915292918290030190a3505050565b6000826132a657506000610d7e565b828202828482816132b357fe5b041461212c5760405162461bcd60e51b81526004018080602001828103825260218152602001806148016021913960400191505060405180910390fd5b6000806133048361212686620f42406130cf565b949350505050565b6000620186a06157e48402048084038261332d8561267084620f4240613297565b9695505050505050565b6108ca8260005b600f811015614610576001600160a01b03808616600081815260316020908152604080832054909416808352603090915292902054601154909187830291820290841415613405576127108b88025b04600854016008819055506133b3612710888d02816133a857fe5b600e54919004613075565b600e556001600160a01b0380851690871660008051602061479b8339815191526127108e8b0260408051929091048252602082018c905260018a0182820152519081900360600190a350505050614610565b6001600160a01b03841661341e576127108b880261338d565b846135655760215481106134c75760006127106012548c028161343d57fe5b6001600160a01b03871660009081526032602052604090205491900491506134659082613075565b6001600160a01b0380871660008181526032602090815260409182902094909455600f805486019055805185815293840186905260018a0184820152519092918a16916000805160206147e1833981519152919081900360600190a350613550565b6127106012548c02816134d657fe5b04600854016008819055506134f36127106012548d02816133a857fe5b600e81905550836001600160a01b0316866001600160a01b031660008051602061479b8339815191526127106012548f028161352b57fe5b60125460408051939092048352602083015260018a0182820152519081900360600190a35b60125461355e908890613111565b9650614602565b84600114156136895760225481106135f45760006127106013548c028161358857fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a16916000805160206147e1833981519152919081900360600190a35061367d565b6127106013548c028161360357fe5b04600854016008819055506136206127106013548d02816133a857fe5b600e81905550836001600160a01b0316866001600160a01b031660008051602061479b8339815191526127106013548f028161365857fe5b60135460408051939092048352602083015260018a0182820152519081900360600190a35b60135487039650614602565b84600214156137a95760235481106137145760006127106014548c02816136ac57fe5b6001600160a01b038088166000818152603260209081526040918290209590940494859055600f805486019055805185815293840187905260018b01848201525193945092908a16916000805160206147e1833981519152919081900360600190a35061379d565b6127106014548c028161372357fe5b04600854016008819055506137406127106014548d02816133a857fe5b600e81905550836001600160a01b0316866001600160a01b031660008051602061479b8339815191526127106014548f028161377857fe5b60145460408051939092048352602083015260018a0182820152519081900360600190a35b60145487039650614602565b84600314156138cd5760245481106138385760006127106015548c02816137cc57fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a16916000805160206147e1833981519152919081900360600190a3506138c1565b6127106015548c028161384757fe5b04600854016008819055506138646127106015548d02816133a857fe5b600e81905550836001600160a01b0316866001600160a01b031660008051602061479b8339815191526127106015548f028161389c57fe5b60155460408051939092048352602083015260018a0182820152519081900360600190a35b60155487039650614602565b8460041415613a0857602554811061395d576000620186a06016548c02816138f157fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a16916000805160206147e1833981519152919081900360600190a3506139f2565b620186a06016548c028161396d57fe5b046008540160088190555061398b620186a06016548d02816133a857fe5b600e81905550836001600160a01b0316866001600160a01b031660008051602061479b8339815191526127106016548f02816139c357fe5b04600a601654816139d057fe5b60408051938452919004602083015260018a0182820152519081900360600190a35b600a601654816139fe57fe5b0487039650614602565b8460051415613b3a576026548110613a98576000620186a06017548c0281613a2c57fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a16916000805160206147e1833981519152919081900360600190a350613b2e565b620186a06017548c0281613aa857fe5b0460085401600881905550613ac6620186a06017548d02816133a857fe5b600e81905550836001600160a01b0316866001600160a01b031660008051602061479b833981519152620186a06017548f0281613aff57fe5b04600a60175481613b0c57fe5b60408051938452919004602083015260018a0182820152519081900360600190a35b600a601754816139fe57fe5b8460061415613c6c576027548110613bca576000620186a06018548c0281613b5e57fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a16916000805160206147e1833981519152919081900360600190a350613c60565b620186a06018548c0281613bda57fe5b0460085401600881905550613bf8620186a06018548d02816133a857fe5b600e81905550836001600160a01b0316866001600160a01b031660008051602061479b833981519152620186a06018548f0281613c3157fe5b04600a60185481613c3e57fe5b60408051938452919004602083015260018a0182820152519081900360600190a35b600a601854816139fe57fe5b8460071415613d9e576028548110613cfc576000620186a06019548c0281613c9057fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a16916000805160206147e1833981519152919081900360600190a350613d92565b620186a06019548c0281613d0c57fe5b0460085401600881905550613d2a620186a06019548d02816133a857fe5b600e81905550836001600160a01b0316866001600160a01b031660008051602061479b833981519152620186a06019548f0281613d6357fe5b04600a60195481613d7057fe5b60408051938452919004602083015260018a0182820152519081900360600190a35b600a601954816139fe57fe5b8460081415613ed0576029548110613e2e576000620186a0601a548c0281613dc257fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a16916000805160206147e1833981519152919081900360600190a350613ec4565b620186a0601a548c0281613e3e57fe5b0460085401600881905550613e5c620186a0601a548d02816133a857fe5b600e81905550836001600160a01b0316866001600160a01b031660008051602061479b833981519152620186a0601a548f0281613e9557fe5b04600a601a5481613ea257fe5b60408051938452919004602083015260018a0182820152519081900360600190a35b600a601a54816139fe57fe5b846009141561400257602a548110613f60576000620186a0601b548c0281613ef457fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a16916000805160206147e1833981519152919081900360600190a350613ff6565b620186a0601b548c0281613f7057fe5b0460085401600881905550613f8e620186a0601b548d02816133a857fe5b600e81905550836001600160a01b0316866001600160a01b031660008051602061479b833981519152620186a0601b548f0281613fc757fe5b04600a601b5481613fd457fe5b60408051938452919004602083015260018a0182820152519081900360600190a35b600a601b54816139fe57fe5b84600a141561413457602b548110614092576000620186a0601c548c028161402657fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a16916000805160206147e1833981519152919081900360600190a350614128565b620186a0601c548c02816140a257fe5b04600854016008819055506140c0620186a0601c548d02816133a857fe5b600e81905550836001600160a01b0316866001600160a01b031660008051602061479b833981519152620186a0601c548f02816140f957fe5b04600a601c548161410657fe5b60408051938452919004602083015260018a0182820152519081900360600190a35b600a601c54816139fe57fe5b84600b141561426657602c5481106141c4576000620186a0601d548c028161415857fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a16916000805160206147e1833981519152919081900360600190a35061425a565b620186a0601d548c02816141d457fe5b04600854016008819055506141f2620186a0601d548d02816133a857fe5b600e81905550836001600160a01b0316866001600160a01b031660008051602061479b833981519152620186a0601d548f028161422b57fe5b04600a601d548161423857fe5b60408051938452919004602083015260018a0182820152519081900360600190a35b600a601d54816139fe57fe5b84600c141561439857602d5481106142f6576000620186a0601e548c028161428a57fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a16916000805160206147e1833981519152919081900360600190a35061438c565b620186a0601e548c028161430657fe5b0460085401600881905550614324620186a0601e548d02816133a857fe5b600e81905550836001600160a01b0316866001600160a01b031660008051602061479b833981519152620186a0601e548f028161435d57fe5b04600a601e548161436a57fe5b60408051938452919004602083015260018a0182820152519081900360600190a35b600a601e54816139fe57fe5b84600d14156144ca57602e548110614428576000620186a0601f548c02816143bc57fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a16916000805160206147e1833981519152919081900360600190a3506144be565b620186a0601f548c028161443857fe5b0460085401600881905550614456620186a0601f548d02816133a857fe5b600e81905550836001600160a01b0316866001600160a01b031660008051602061479b833981519152620186a0601f548f028161448f57fe5b04600a601f548161449c57fe5b60408051938452919004602083015260018a0182820152519081900360600190a35b600a601f54816139fe57fe5b84600e141561460257602f54811061455a576000620186a06020548c02816144ee57fe5b6001600160a01b03808816600081815260326020908152604091829020805496909504958601909455600f805486019055805185815293840187905260018b01848201525193945092908a16916000805160206147e1833981519152919081900360600190a3506145f0565b620186a06020548c028161456a57fe5b0460085401600881905550614588620186a06020548d02816133a857fe5b600e81905550836001600160a01b0316866001600160a01b031660008051602061479b833981519152620186a06020548f02816145c157fe5b04600a602054816145ce57fe5b60408051938452919004602083015260018a0182820152519081900360600190a35b600a602054816145fc57fe5b04870396505b50919650505060010161333e565b50505050505050565b600081836146a55760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561466a578181015183820152602001614652565b50505050905090810190601f1680156146975780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816146b157fe5b0495945050505050565b6000818484111561470d5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561466a578181015183820152602001614652565b50505090039056fe4f726967696e20616e642053656e646572204d69736d6174636865640000000043616c6c6572206973206e6f7420746865206f776e657200000000000000000045524332303a207472616e7366657220746f20746865207a65726f2061646472657373546f6b656e20616d6f756e7420657863656564656420746f74616c20737570706c79112766730ce440487945c01048dacfc6d04340403f675871e96c4e28cf622ecc45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636503e2fbb2b92f9e0c79b9743877ad3b4ed3fd2d8df69ddba7a376839ed2bc2ff7536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f20616464726573734d6178696d756d204c696d69742052656163686564206f662052656365697665722ea26469706673582212203e5b950986e59cd63a9df6b748ca0f841ba9e76fdd00c55364cd82f685f770c564736f6c63430007040033

Deployed Bytecode Sourcemap

129:45477:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19984:10;19998:9;19984:23;19976:64;;;;;-1:-1:-1;;;19976:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;19976:64:0;;;;;;;;;;;;;;;129:45477;;;;;5924:88;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6310:427;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6310:427:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;11398:160;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11398:160:0;;:::i;7520:102::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;11570:151;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11570:151:0;;:::i;5595:107::-;;;;;;;;;;;;;:::i;5250:96::-;;;;;;;;;;;;;:::i;11172:146::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11172:146:0;;:::i;12161:301::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;12161:301:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;12161:301:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;12161:301:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;12161:301:0;;;;;;;;;;-1:-1:-1;12161:301:0;;-1:-1:-1;12161:301:0;-1:-1:-1;12161:301:0;:::i;6202:87::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9869:642;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9869:642:0;;;;;;;;;;;;;;;:::i;7633:129::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7633:129:0;-1:-1:-1;;;;;7633:129:0;;:::i;14689:1427::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14689:1427:0;;;;;;;:::i;12474:568::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;12474:568:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;12474:568:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;12474:568:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;12474:568:0;;;;;;;;;;-1:-1:-1;12474:568:0;;-1:-1:-1;12474:568:0;-1:-1:-1;12474:568:0;:::i;9281:418::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9281:418:0;;;;;;;;;;;;;:::i;1893:44::-;;;;;;;;;;;;;:::i;8658:508::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8658:508:0;;;;;;;:::i;7161:116::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7161:116:0;-1:-1:-1;;;;;7161:116:0;;:::i;2038:33::-;;;;;;;;;;;;;:::i;41983:3617::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;41983:3617:0;;:::i;2304:20::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;2304:20:0;;;;;;;;;;;;;;6751:348;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6751:348:0;;:::i;37682:1059::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37682:1059:0;;:::i;6057:94::-;;;;;;;;;;;;;:::i;13052:596::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;13052:596:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;13052:596:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;13052:596:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;13052:596:0;;;;;;;;;;-1:-1:-1;13052:596:0;;-1:-1:-1;13052:596:0;-1:-1:-1;13052:596:0;:::i;38766:564::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;38766:564:0;;;;;;;;:::i;8122:236::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8122:236:0;;:::i;11739:149::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11739:149:0;;:::i;7405:101::-;;;;;;;;;;;;;:::i;16196:1583::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16196:1583:0;;;;;;;:::i;5413:123::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5413:123:0;-1:-1:-1;;;;;5413:123:0;;:::i;11996:153::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11996:153:0;;:::i;13665:947::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;13665:947:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;13665:947:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;13665:947:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;13665:947:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;13665:947:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;13665:947:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;13665:947:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;13665:947:0;;;;;;;;;;-1:-1:-1;13665:947:0;;-1:-1:-1;13665:947:0;-1:-1:-1;13665:947:0;:::i;7772:334::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7772:334:0;;:::i;35946:1722::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;35946:1722:0;;:::i;5767:98::-;;;;;;;;;;;;;:::i;17797:2126::-;;;;;;;;;;;;;;;;-1:-1:-1;17797:2126:0;-1:-1:-1;;;;;17797:2126:0;;:::i;10629:431::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10629:431:0;;;;;;;;;;;;;:::i;7286:99::-;;;;;;;;;;;;;:::i;5924:88::-;5995:9;5988:16;;;;;;;;-1:-1:-1;;5988:16:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5962:13;;5988:16;;5995:9;;5988:16;;5995:9;5988:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5924:88;:::o;6310:427::-;6399:4;6423:12;6420:85;;-1:-1:-1;;;;;;6459:33:0;;;;;;:19;:33;;;;;;;;6452:40;;6420:85;6520:7;6531:1;6520:12;6517:86;;;-1:-1:-1;;;;;;6556:34:0;;;;;;:20;:34;;;;;;;;6549:41;;6517:86;6618:7;6629:1;6618:12;6615:90;;;-1:-1:-1;;;;;;6654:38:0;;;;;;:24;:38;;;;;;;;6647:45;;6615:90;-1:-1:-1;6723:5:0;6310:427;;;;;:::o;11398:160::-;4959:5;;11479:4;;-1:-1:-1;;;;;4959:5:0;4945:10;:19;4937:54;;;;;-1:-1:-1;;;4937:54:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4937:54:0;;;;;;;;;;;;;;;-1:-1:-1;11497:17:0::1;:29:::0;;;11546:4:::1;5003:1;11398:160:::0;;;:::o;7520:102::-;7600:13;;7520:102;:::o;11570:151::-;4959:5;;11646:4;;-1:-1:-1;;;;;4959:5:0;4945:10;:19;4937:54;;;;;-1:-1:-1;;;4937:54:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4937:54:0;;;;;;;;;;;;;;;-1:-1:-1;11664:13:0::1;:25:::0;11709:4:::1;::::0;11570:151::o;5595:107::-;5676:17;;5595:107;:::o;5250:96::-;5326:12;;5250:96;:::o;11172:146::-;4959:5;;11241:4;;-1:-1:-1;;;;;4959:5:0;4945:10;:19;4937:54;;;;;-1:-1:-1;;;4937:54:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4937:54:0;;;;;;;;;;;;;;;-1:-1:-1;11260:12:0::1;:24:::0;11304:4:::1;::::0;11172:146::o;12161:301::-;4959:5;;12287:4;;-1:-1:-1;;;;;4959:5:0;4945:10;:19;4937:54;;;;;-1:-1:-1;;;4937:54:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4937:54:0;;;;;;;;;;;;;;;12314:6:::1;12309:124;12326:25:::0;;::::1;12309:124;;;12402:16;;12419:1;12402:19;;;;;;;;;;;;;-1:-1:-1::0;;;;;12402:19:0::1;12373:7;:26;12381:14;;12396:1;12381:17;;;;;;;-1:-1:-1::0;;;;;12381:17:0::1;::::0;;::::1;::::0;;;::::1;;::::0;::::1;12373:26:::0;;;::::1;::::0;;;;;;;;-1:-1:-1;12373:26:0;:48;;;;;::::1;-1:-1:-1::0;;;;;;12373:48:0;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;12373:48:0;12353:3:::1;12309:124;;;-1:-1:-1::0;12450:4:0::1;::::0;12161:301;-1:-1:-1;;;;;12161:301:0:o;6202:87::-;6272:7;;;;6202:87;:::o;9869:642::-;4959:5;;9985:4;;-1:-1:-1;;;;;4959:5:0;4945:10;:19;4937:54;;;;;-1:-1:-1;;;4937:54:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4937:54:0;;;;;;;;;;;;;;;10007:10;10004:86:::1;;-1:-1:-1::0;;;;;10033:36:0;::::1;;::::0;;;:19:::1;:36;::::0;;;;:43;;-1:-1:-1;;10033:43:0::1;::::0;::::1;;;::::0;;10004:86:::1;10093:7;10102:1;10093:10;10090:87;;;-1:-1:-1::0;;;;;10119:37:0;::::1;;::::0;;;:20:::1;:37;::::0;;;;:44;;-1:-1:-1;;10119:44:0::1;::::0;::::1;;;::::0;;10090:87:::1;10180:7;10189:1;10180:10;10177:91;;;-1:-1:-1::0;;;;;10206:41:0;::::1;;::::0;;;:24:::1;:41;::::0;;;;:48;;-1:-1:-1;;10206:48:0::1;::::0;::::1;;;::::0;;10177:91:::1;10271:7;10280:1;10271:10;10268:210;;;-1:-1:-1::0;;;;;10297:37:0;::::1;;::::0;;;:20:::1;:37;::::0;;;;;;;:44;;;::::1;;-1:-1:-1::0;;10297:44:0;;::::1;::::0;::::1;::::0;;;10356:19:::1;:36:::0;;;;;:43;;;::::1;::::0;::::1;::::0;;10416:24:::1;:41:::0;;;;;:48;;;;::::1;::::0;;::::1;::::0;;10268:210:::1;-1:-1:-1::0;10497:4:0::1;9869:642:::0;;;;;:::o;7633:129::-;-1:-1:-1;;;;;7726:27:0;7695:7;7726:27;;;:20;:27;;;;;;;7633:129::o;14689:1427::-;4959:5;;14788:4;;-1:-1:-1;;;;;4959:5:0;4945:10;:19;4937:54;;;;;-1:-1:-1;;;4937:54:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4937:54:0;;;;;;;;;;;;;;;14810:5:::1;14819:1;14810:10;14806:1268;;;14837:16;:32:::0;;;14806:1268:::1;;;14891:5;14900:1;14891:10;14887:1187;;;14918:16;:32:::0;;;14887:1187:::1;;;14972:5;14981:1;14972:10;14968:1106;;;14999:16;:32:::0;;;14968:1106:::1;;;15053:5;15062:1;15053:10;15049:1025;;;15080:16;:32:::0;;;15049:1025:::1;;;15134:5;15143:1;15134:10;15130:944;;;15161:16;:32:::0;;;15130:944:::1;;;15215:5;15224:1;15215:10;15211:863;;;15242:16;:32:::0;;;15211:863:::1;;;15296:5;15305:1;15296:10;15292:782;;;15323:16;:32:::0;;;15292:782:::1;;;15378:5;15387:1;15378:10;15374:700;;;15405:16;:32:::0;;;15374:700:::1;;;15459:5;15468:1;15459:10;15455:619;;;15486:16;:32:::0;;;15455:619:::1;;;15540:5;15549:2;15540:11;15536:538;;;15568:17;:33:::0;;;15536:538:::1;;;15623:5;15632:2;15623:11;15619:455;;;15651:17;:33:::0;;;15619:455:::1;;;15706:5;15715:2;15706:11;15702:372;;;15734:17;:33:::0;;;15702:372:::1;;;15789:5;15798:2;15789:11;15785:289;;;15817:17;:33:::0;;;15785:289:::1;;;15872:5;15881:2;15872:11;15868:206;;;15900:17;:33:::0;;;15868:206:::1;;;15955:5;15964:2;15955:11;15951:123;;;15983:17;:33:::0;;;15951:123:::1;;;-1:-1:-1::0;16056:5:0::1;16049:12;;15951:123;-1:-1:-1::0;16104:4:0::1;14689:1427:::0;;;;:::o;12474:568::-;4959:5;;12583:4;;-1:-1:-1;;;;;4959:5:0;4945:10;:19;4937:54;;;;;-1:-1:-1;;;4937:54:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4937:54:0;;;;;;;;;;;;;;;12610:6:::1;12605:408;12622:21:::0;;::::1;12605:408;;;12696:45;12729:8;;12738:1;12729:11;;;;;;;;;;;;;12696:13;:28;12710:10;;12721:1;12710:13;;;;;;;;;;;;;-1:-1:-1::0;;;;;12710:13:0::1;-1:-1:-1::0;;;;;12696:28:0::1;-1:-1:-1::0;;;;;12696:28:0::1;;;;;;;;;;;;;:32;;:45;;;;:::i;:::-;12665:13;:28;12679:10;;12690:1;12679:13;;;;;;;;;;;;;-1:-1:-1::0;;;;;12679:13:0::1;-1:-1:-1::0;;;;;12665:28:0::1;-1:-1:-1::0;;;;;12665:28:0::1;;;;;;;;;;;;:76;;;;12755:22;12780:25;12793:8;;12802:1;12793:11;;;;;;;;;;;;;12780:12;:25::i;:::-;12755:50;;12839:34;12861:8;;12870:1;12861:11;;;;;;;;;;;;;12839:17;;:21;;:34;;;;:::i;:::-;12819:17;:54:::0;12902:12:::1;::::0;;:29;::::1;12887:44:::0;;12974:10;;12985:1;12974:13;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;12974:13:0::1;-1:-1:-1::0;;;;;12950:51:0::1;12967:4;-1:-1:-1::0;;;;;12950:51:0::1;-1:-1:-1::0;;;;;;;;;;;12989:8:0::1;;12998:1;12989:11;;;;;;;;;;;;;12950:51;;;;;;;;;;;;;;;;;;-1:-1:-1::0;12645:3:0::1;;12605:408;;9281:418:::0;4959:5;;9408:4;;-1:-1:-1;;;;;4959:5:0;4945:10;:19;4937:54;;;;;-1:-1:-1;;;4937:54:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4937:54:0;;;;;;;;;;;;;;;9430:19;9427:239:::1;;-1:-1:-1::0;;;;;9465:30:0;::::1;;::::0;;;:13:::1;:30;::::0;;;;:43;;;9543:17:::1;::::0;:33:::1;::::0;9498:10;9543:21:::1;:33::i;:::-;9523:17;:53:::0;9427:239:::1;;;-1:-1:-1::0;;;;;;;9609:30:0;;;::::1;;::::0;;;:13:::1;:30;::::0;;;;:43;9685:4:::1;::::0;9281:418::o;1893:44::-;;;;;;;;;;;;;;;-1:-1:-1;;1893:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8658:508::-;4959:5;;8746:4;;-1:-1:-1;;;;;4959:5:0;4945:10;:19;4937:54;;;;;-1:-1:-1;;;4937:54:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4937:54:0;;;;;;;;;;;;;;;8768:14;8765:70:::1;;8800:14;:21:::0;;;8765:70:::1;8838:9;8851:1;8838:14;8835:71;;;8870:15;:22:::0;;;8835:71:::1;8909:9;8922:1;8909:14;8906:75;;;8941:19;:26:::0;;;8906:75:::1;8984:9;8997:1;8984:14;8981:152;;;-1:-1:-1::0;;9016:19:0::1;:26:::0;;;9059:15:::1;:22:::0;;;9098:14:::1;:21:::0;-1:-1:-1;;8658:508:0:o;7161:116::-;-1:-1:-1;;;;;7248:20:0;7217:7;7248:20;;;:13;:20;;;;;;;7161:116::o;2038:33::-;;;;;;;;;;;;;;;-1:-1:-1;;2038:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41983:3617;42038:7;42108:12;42087:17;;:33;42058:126;;42170:1;42137:21;:34;42058:126;42218:12;42198:17;;:32;:70;;;;;42255:13;42234:17;;:34;;42198:70;42195:145;;;42318:9;42309:18;;42285:21;:42;42195:145;42374:13;42354:17;;:33;:71;;;;;42412:13;42391:17;;:34;;42354:71;42351:146;;;42475:9;42466:18;;42442:21;:42;42351:146;42531:13;42511:17;;:33;:71;;;;;42569:13;42548:17;;:34;;42511:71;42508:147;;;42632:10;42623:19;;42599:21;:43;42508:147;42689:13;42669:17;;:33;:71;;;;;42727:13;42706:17;;:34;;42669:71;42666:147;;;42790:10;42781:19;;42757:21;:43;42666:147;42847:13;42827:17;;:33;:71;;;;;42885:13;42864:17;;:34;;42827:71;42824:147;;;42948:10;42939:19;;42915:21;:43;42824:147;43005:13;42985:17;;:33;:71;;;;;43043:13;43022:17;;:34;;42985:71;42982:148;;;43106:11;43097:20;;43073:21;:44;42982:148;43164:13;43144:17;;:33;:71;;;;;43202:13;43181:17;;:34;;43144:71;43141:148;;;43265:11;43256:20;;43232:21;:44;43141:148;43323:13;43303:17;;:33;:71;;;;;43361:13;43340:17;;:34;;43303:71;43300:148;;;43424:11;43415:20;;43391:21;:44;43300:148;43482:13;43462:17;;:33;:71;;;;;43520:13;43499:17;;:34;;43462:71;43459:148;;;43583:11;43574:20;;43550:21;:44;43459:148;43641:13;43621:17;;:33;:71;;;;;43679:13;43658:17;;:34;;43621:71;43618:149;;;43742:12;43733:21;;43709;:45;43618:149;43801:13;43781:17;;:33;:71;;;;;43839:13;43818:17;;:34;;43781:71;43778:149;;;43902:12;43893:21;;43869;:45;43778:149;43961:13;43941:17;;:33;:71;;;;;43999:13;43978:17;;:34;;43941:71;43938:149;;;44062:12;44053:21;;44029;:45;43938:149;44121:13;44101:17;;:33;:71;;;;;44159:13;44138:17;;:34;;44101:71;44098:149;;;44222:12;44213:21;;44189;:45;44098:149;44281:13;44261:17;;:33;:71;;;;;44319:13;44298:17;;:34;;44261:71;44258:150;;;44382:13;44373:22;;44349:21;:46;44258:150;44442:13;44422:17;;:33;:71;;;;;44480:13;44459:17;;:34;;44422:71;44419:150;;;44543:13;44534:22;;44510:21;:46;44419:150;44603:13;44583:17;;:33;:71;;;;;44641:13;44620:17;;:34;;44583:71;44580:150;;;44704:13;44695:22;;44671:21;:46;44580:150;44764:13;44744:17;;:33;:71;;;;;44802:13;44781:17;;:34;;44744:71;44741:150;;;44865:13;44856:22;;44832:21;:46;44741:150;44925:13;44905:17;;:33;:71;;;;;44963:13;44942:17;;:34;;44905:71;44902:151;;;45026:14;45017:23;;44993:21;:47;44902:151;45087:13;45067:17;;:33;:71;;;;;45125:13;45104:17;;:34;;45067:71;45064:151;;;45188:14;45179:23;;45155:21;:47;45064:151;45249:13;45229:17;;:33;:71;;;;;45287:13;45266:17;;:34;;45229:71;45226:152;;;45350:15;45341:24;;45317:21;:48;45226:152;45412:13;45392:17;;:33;:71;;;;;45450:13;45429:17;;:34;;45392:71;45389:152;;;45513:15;45504:24;;45480:21;:48;45389:152;45559:21;;:32;;45585:5;45559:25;:32::i;2304:20::-;;;-1:-1:-1;;;;;2304:20:0;;:::o;6751:348::-;6819:7;6843:12;6840:66;;-1:-1:-1;6879:14:0;;6872:21;;6840:66;6921:7;6932:1;6921:12;6918:67;;;-1:-1:-1;6957:15:0;;6950:22;;6918:67;7000:7;7011:1;7000:12;6997:71;;;-1:-1:-1;7036:19:0;;7029:26;;6997:71;-1:-1:-1;7086:1:0;6751:348;;;:::o;37682:1059::-;37745:4;37771:10;37785:9;37771:23;37763:64;;;;;-1:-1:-1;;;37763:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;37763:64:0;;;;;;;;;;;;;;;37878:10;37892:1;37863:26;;;:14;:26;;;;;;37848:12;:41;37840:71;;;;;-1:-1:-1;;;37840:71:0;;;;;;;;;;;;-1:-1:-1;;;37840:71:0;;;;;;;;;;;;;;;37939:10;37924:26;;;;:14;:26;;;;;37953:12;37924:41;;37986:19;;:24;37978:58;;;;;-1:-1:-1;;;37978:58:0;;;;;;;;;;;;-1:-1:-1;;;37978:58:0;;;;;;;;;;;;;;;38082:10;38057:36;;;;:24;:36;;;;;;;;:45;38049:88;;;;;-1:-1:-1;;;38049:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;38178:1;38158:17;;:21;38150:54;;;;;-1:-1:-1;;;38150:54:0;;;;;;;;;;;;-1:-1:-1;;;38150:54:0;;;;;;;;;;;;;;;38239:1;38225:11;:15;38217:50;;;;;-1:-1:-1;;;38217:50:0;;;;;;;;;;;;-1:-1:-1;;;38217:50:0;;;;;;;;;;;;;;;38324:10;38303:32;;;;:20;:32;;;;;;38288:47;;;38280:90;;;;;-1:-1:-1;;;38280:90:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;38406:15;;38391:11;:30;;38383:68;;;;;-1:-1:-1;;;38383:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;38520:10;38499:32;;;;:20;:32;;;;;;:49;;38536:11;38499:36;:49::i;:::-;38485:10;38464:32;;;;:20;:32;;;;;:84;38579:15;;:32;;38599:11;38579:19;:32::i;:::-;38561:15;:50;38624:32;;:10;;:32;;;;;38644:11;;38624:32;;;;38644:11;38624:10;:32;;;;;;;;;;;;;;;;;;;;-1:-1:-1;38674:34:0;;;;;;;;38685:10;;38674:34;;;;;;;;;;-1:-1:-1;38728:4:0;37682:1059;;;:::o;6057:94::-;6131:11;6124:18;;;;;;;;-1:-1:-1;;6124:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6097:13;;6124:18;;6131:11;;6124:18;;6131:11;6124:18;;;;;;;;;;;;;;;;;;;;;;;;13052:596;4959:5;;13164:4;;-1:-1:-1;;;;;4959:5:0;4945:10;:19;4937:54;;;;;-1:-1:-1;;;4937:54:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4937:54:0;;;;;;;;;;;;;;;13191:6:::1;13186:424;13203:21:::0;;::::1;13186:424;;;13246:22;13271:8;;13280:1;13271:11;;;;;;;;;;;;;13246:36;;13344:14;13305:20;:35;13326:10;;13337:1;13326:13;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;13326:13:0::1;13305:35:::0;;-1:-1:-1;13305:35:0;::::1;::::0;;;;;;-1:-1:-1;13305:35:0;:53;;;;;::::1;::::0;;13399:15:::1;::::0;;:32;;;::::1;13381:50:::0;;-1:-1:-1;13226:3:0::1;13186:424;;38766:564:::0;38838:4;38863:10;38877:9;38863:23;38855:64;;;;;-1:-1:-1;;;38855:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;38855:64:0;;;;;;;;;;;;;;;38947:1;38938:6;:10;38930:49;;;;;-1:-1:-1;;;38930:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;39008:14;;38998:6;:24;;38990:59;;;;;-1:-1:-1;;;38990:59:0;;;;;;;;;;;;-1:-1:-1;;;38990:59:0;;;;;;;;;;;;;;;39108:14;;-1:-1:-1;;;;;39079:24:0;;;;;;:13;:24;;;;;;39068:36;;:6;;:10;:36::i;:::-;:54;;39060:101;;;;-1:-1:-1;;;39060:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39194:10;39180:25;;;;:13;:25;;;;;;:35;-1:-1:-1;39180:35:0;39172:75;;;;;-1:-1:-1;;;39172:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;39258:42;39268:12;:10;:12::i;:::-;39282:9;39293:6;39258:9;:42::i;8122:236::-;8187:7;8219:22;8244:63;8302:3;8289:12;;:16;;;;;;8273:12;;:33;8245:22;8261:5;8245:11;:15;;:22;;;;:::i;:::-;8244:28;;:63::i;:::-;8219:88;8122:236;-1:-1:-1;;;8122:236:0:o;11739:149::-;4959:5;;11811:4;;-1:-1:-1;;;;;4959:5:0;4945:10;:19;4937:54;;;;;-1:-1:-1;;;4937:54:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4937:54:0;;;;;;;;;;;;;;;-1:-1:-1;11829:15:0::1;:28:::0;11876:4:::1;::::0;11739:149::o;7405:101::-;7482:15;;7405:101;:::o;16196:1583::-;4959:5;;16291:4;;-1:-1:-1;;;;;4959:5:0;4945:10;:19;4937:54;;;;;-1:-1:-1;;;4937:54:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4937:54:0;;;;;;;;;;;;;;;16341:26;;;16392:1:::1;16383:10:::0;::::1;16379:1358;;;16410:13;:38:::0;;;16379:1358:::1;;;16470:5;16479:1;16470:10;16466:1271;;;16497:13;:38:::0;;;16466:1271:::1;;;16557:5;16566:1;16557:10;16553:1184;;;16584:13;:38:::0;;;16553:1184:::1;;;16644:5;16653:1;16644:10;16640:1097;;;16671:13;:38:::0;;;16640:1097:::1;;;16731:5;16740:1;16731:10;16727:1010;;;16758:13;:38:::0;;;16727:1010:::1;;;16818:5;16827:1;16818:10;16814:923;;;16845:13;:38:::0;;;16814:923:::1;;;16905:5;16914:1;16905:10;16901:836;;;16932:13;:38:::0;;;16901:836:::1;;;16993:5;17002:1;16993:10;16989:748;;;17020:13;:38:::0;;;16989:748:::1;;;17080:5;17089:1;17080:10;17076:661;;;17107:13;:38:::0;;;17076:661:::1;;;17167:5;17176:2;17167:11;17163:574;;;17195:14;:39:::0;;;17163:574:::1;;;17256:5;17265:2;17256:11;17252:485;;;17284:14;:39:::0;;;17252:485:::1;;;17345:5;17354:2;17345:11;17341:396;;;17373:14;:39:::0;;;17341:396:::1;;;17434:5;17443:2;17434:11;17430:307;;;17462:14;:39:::0;;;17430:307:::1;;;17523:5;17532:2;17523:11;17519:218;;;17551:14;:39:::0;;;17519:218:::1;;;17612:5;17621:2;17612:11;17608:129;;;17640:14;:39:::0;;;17608:129:::1;;;17719:5;17712:12;;;;;5413:123:::0;-1:-1:-1;;;;;5507:21:0;;;5476:7;5507:21;;;:7;:21;;;;;;;;5413:123::o;11996:153::-;4959:5;;12073:4;;-1:-1:-1;;;;;4959:5:0;4945:10;:19;4937:54;;;;;-1:-1:-1;;;4937:54:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4937:54:0;;;;;;;;;;;;;;;-1:-1:-1;12092:9:0::1;:25:::0;12137:4:::1;::::0;11996:153::o;13665:947::-;4959:5;;13855:4;;-1:-1:-1;;;;;4959:5:0;4945:10;:19;4937:54;;;;;-1:-1:-1;;;4937:54:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4937:54:0;;;;;;;;;;;;;;;13882:6:::1;13877:706;13894:25:::0;;::::1;13877:706;;;13970:16;;13987:1;13970:19;;;;;;;;;;;;;-1:-1:-1::0;;;;;13970:19:0::1;13941:7;:26;13949:14;;13964:1;13949:17;;;;;;;;;;;;;-1:-1:-1::0;;;;;13949:17:0::1;-1:-1:-1::0;;;;;13941:26:0::1;-1:-1:-1::0;;;;;13941:26:0::1;;;;;;;;;;;;;:48;;;;;-1:-1:-1::0;;;;;13941:48:0::1;;;;;-1:-1:-1::0;;;;;13941:48:0::1;;;;;;14039:49;14076:8;;14085:1;14076:11;;;;;;;;;;;;;14039:13;:32;14053:14;;14068:1;14053:17;;;;;;14039:49;14004:13;:32;14018:14;;14033:1;14018:17;;;;;;;;;;;;;-1:-1:-1::0;;;;;14018:17:0::1;-1:-1:-1::0;;;;;14004:32:0::1;-1:-1:-1::0;;;;;14004:32:0::1;;;;;;;;;;;;:84;;;;14103:22;14128:25;14141:8;;14150:1;14141:11;;;;;;14128:25;14103:50;;14188:34;14210:8;;14219:1;14210:11;;;;;;14188:34;14168:17;:54:::0;14252:12:::1;::::0;;:29;::::1;14237:44:::0;;14338:63:::1;14382:15:::0;;14398:1;14382:18;;::::1;;;;;;;;;;;14338:20;:39;14359:14;;14374:1;14359:17;;;;;;14338:63;14296:20;:39;14317:14;;14332:1;14317:17;;;;;;;;;;;;;-1:-1:-1::0;;;;;14317:17:0::1;-1:-1:-1::0;;;;;14296:39:0::1;-1:-1:-1::0;;;;;14296:39:0::1;;;;;;;;;;;;:105;;;;14452:15;;14468:1;14452:18;;;;;;;;;;;;;14434:15;;:36;14416:15;:54;;;;14518:16;;14535:1;14518:19;;;;;;;;;;;;;-1:-1:-1::0;;;;;14518:19:0::1;-1:-1:-1::0;;;;;14490:81:0::1;14500:14;;14515:1;14500:17;;;;;;;;;;;;;-1:-1:-1::0;;;;;14500:17:0::1;-1:-1:-1::0;;;;;14490:81:0::1;;14539:8;;14548:1;14539:11;;;;;;;;;;;;;14552:15;;14568:1;14552:18;;;;;;;14490:81;::::0;;;;;14552:18:::1;::::0;;::::1;::::0;;;::::1;;14490:81:::0;;::::1;::::0;-1:-1:-1;14490:81:0;;;;;;;;::::1;-1:-1:-1::0;13921:3:0::1;;13877:706;;;-1:-1:-1::0;14600:4:0::1;::::0;13665:947;-1:-1:-1;;;;;;;;;13665:947:0:o;7772:334::-;8041:12;;7839:7;;7913:6;7907:5;7891:21;;:28;;7951:25;;;;7839:7;;8013:41;;8014:21;7951:25;8029:5;8014:14;:21::i;:::-;8013:27;;:41::i;:::-;7987:67;7772:334;-1:-1:-1;;;;;7772:334:0:o;35946:1722::-;35998:4;36024:10;36038:9;36024:23;36016:64;;;;;-1:-1:-1;;;36016:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;36016:64:0;;;;;;;;;;;;;;;36131:10;36145:1;36116:26;;;:14;:26;;;;;;36101:12;:41;36093:71;;;;;-1:-1:-1;;;36093:71:0;;;;;;;;;;;;-1:-1:-1;;;36093:71:0;;;;;;;;;;;;;;;36192:10;36177:26;;;;:14;:26;;;;;36206:12;36177:41;;36267:12;;36333:17;;36371:15;;36280:3;36267:16;;36251:33;;;;36371:20;36363:50;;;;;-1:-1:-1;;;36363:50:0;;;;;;;;;;;;-1:-1:-1;;;36363:50:0;;;;;;;;;;;;;;;36455:10;36434:32;;;;:20;:32;;;;;;;;:41;36426:80;;;;;-1:-1:-1;;;36426:80:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;36547:1;36527:17;;:21;36519:54;;;;;-1:-1:-1;;;36519:54:0;;;;;;;;;;;;-1:-1:-1;;;36519:54:0;;;;;;;;;;;;;;;36608:1;36594:11;:15;36586:48;;;;;-1:-1:-1;;;36586:48:0;;;;;;;;;;;;-1:-1:-1;;;36586:48:0;;;;;;;;;;;;;;;36684:10;36670:25;;;;:13;:25;;;;;;36655:40;;;36647:82;;;;;-1:-1:-1;;;36647:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;36788:12;;36766:17;;36750:34;;:11;;:15;:34::i;:::-;:50;;36742:84;;;;;-1:-1:-1;;;36742:84:0;;;;;;;;;;;;-1:-1:-1;;;36742:84:0;;;;;;;;;;;;;;;36847:10;36839:70;;;;-1:-1:-1;;;36839:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36964:10;36950:25;;;;:13;:25;;;;;;:42;;36980:11;36950:29;:42::i;:::-;36936:10;36922:25;;;;:13;:25;;;;;;;;;:70;;;;37010:48;;;;;;;37039:4;;-1:-1:-1;;;;;;;;;;;37010:48:0;;;;;;;37071:22;37096:25;37109:11;37096:12;:25::i;:::-;37149:12;;;:29;;;37134:44;;37211:17;;37071:50;;-1:-1:-1;37211:34:0;;37233:11;37211:21;:34::i;:::-;37191:17;:54;37287:12;;37258:26;37338:40;37356:11;37368:9;37338:17;:40::i;:::-;37426:17;;37456:36;;37312:66;;-1:-1:-1;37426:17:0;37456:10;;:36;;;;;37312:66;;37391:32;37456:36;37391:32;37456:36;37312:66;37456:10;:36;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37510:125:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37515:10;;37510:125;;;;;;;;;;-1:-1:-1;37655:4:0;;35946:1722;-1:-1:-1;;;;;;;35946:1722:0:o;5767:98::-;5844:12;;5767:98;:::o;17797:2126::-;17857:4;17883:10;17897:9;17883:23;17875:64;;;;;-1:-1:-1;;;17875:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17875:64:0;;;;;;;;;;;;;;;17989:10;18003:1;17974:26;;;:14;:26;;;;;;17959:12;:41;17951:71;;;;;-1:-1:-1;;;17951:71:0;;;;;;;;;;;;-1:-1:-1;;;17951:71:0;;;;;;;;;;;;;;;18049:10;18034:26;;;;:14;:26;;;;;18063:12;18034:41;;18095:14;;:19;18087:48;;;;;-1:-1:-1;;;18087:48:0;;;;;;;;;;;;-1:-1:-1;;;18087:48:0;;;;;;;;;;;;;;;18175:10;18155:31;;;;:19;:31;;;;;;;;:40;18147:78;;;;;-1:-1:-1;;;18147:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18245:25:0;;18260:10;18245:25;;18237:68;;;;;-1:-1:-1;;;18237:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18325:25:0;;18317:58;;;;;-1:-1:-1;;;18317:58:0;;;;;;;;;;;;-1:-1:-1;;;18317:58:0;;;;;;;;;;;;;;;18395:10;18387:19;;;;:7;:19;;;;;:33;;-1:-1:-1;;;;;;18387:33:0;-1:-1:-1;;;;;18387:33:0;;;;;18531:12;;18491:9;;18581:37;18531:12;18582:21;18491:9;18597:5;18582:14;:21::i;18581:37::-;18555:63;;18630:24;18657:39;18676:10;18687:8;18657:18;:39::i;:::-;18630:66;;18736:35;18753:17;;18736:12;;:16;;:35;;;;:::i;:::-;18716:16;:55;;18708:102;;;;-1:-1:-1;;;18708:102:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18849:1;18830:16;:20;18822:54;;;;;-1:-1:-1;;;18822:54:0;;;;;;;;;;;;-1:-1:-1;;;18822:54:0;;;;;;;;;;;;;;;18916:14;;18896:16;:34;;18888:70;;;;;-1:-1:-1;;;18888:70:0;;;;;;;;;;;;-1:-1:-1;;;18888:70:0;;;;;;;;;;;;;;;19029:14;;19013:10;18999:25;;;;:13;:25;;;;;;18978:47;;:16;;:20;:47::i;:::-;:65;;18970:101;;;;;-1:-1:-1;;;18970:101:0;;;;;;;;;;;;-1:-1:-1;;;18970:101:0;;;;;;;;;;;;;;;19118:17;;-1:-1:-1;;;;;19155:19:0;;19147:63;;;;;-1:-1:-1;;;19147:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19245:20:0;;;;;;:13;:20;;;;;;:42;;19270:16;19245:24;:42::i;:::-;-1:-1:-1;;;;;19222:20:0;;;;;;:13;:20;;;;;:65;;;;19324:30;19337:16;19324:12;:30::i;:::-;19386:17;;19299:55;;-1:-1:-1;19386:39:0;;19408:16;19386:21;:39::i;:::-;19366:17;:59;;;19452:12;;;:29;;19437:44;;;;19612:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19452:29;;19366:59;-1:-1:-1;;;;;19612:141:0;;;;;;;;;;;;;;;;;19770:48;;;;;;;;-1:-1:-1;;;;;19770:48:0;;;19787:4;;-1:-1:-1;;;;;;;;;;;19770:48:0;;;;;;;;19830:62;19848:15;19864:10;19876:5;19883:8;19830:17;:62::i;:::-;-1:-1:-1;19911:4:0;;17797:2126;-1:-1:-1;;;;;;;;;;17797:2126:0:o;10629:431::-;4959:5;;10757:4;;-1:-1:-1;;;;;4959:5:0;4945:10;:19;4937:54;;;;;-1:-1:-1;;;4937:54:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4937:54:0;;;;;;;;;;;;;;;10779:19;10776:251:::1;;-1:-1:-1::0;;;;;10813:37:0;::::1;;::::0;;;:20:::1;:37;::::0;;;;:50;;;10897:17:::1;::::0;:33:::1;::::0;10853:10;10897:21:::1;:33::i;10776:251::-;-1:-1:-1::0;;;;;;;10963:37:0;;;::::1;;::::0;;;:20:::1;:37;::::0;;;;:50;11046:4:::1;::::0;10629:431::o;7286:99::-;7371:4;7286:99;:::o;45875:181::-;45933:7;45965:5;;;45989:6;;;;45981:46;;;;;-1:-1:-1;;;45981:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;48176:132;48234:7;48261:39;48265:1;48268;48261:39;;;;;;;;;;;;;;;;;:3;:39::i;46339:136::-;46397:7;46424:43;46428:1;46431;46424:43;;;;;;;;;;;;;;;;;:3;:43::i;41882:90::-;41954:10;41882:90;:::o;40051:493::-;-1:-1:-1;;;;;40157:20:0;;40149:70;;;;-1:-1:-1;;;40149:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;40238:23:0;;40230:71;;;;-1:-1:-1;;;40230:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40336:75;40362:6;40336:75;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;40336:21:0;;;;;;:13;:21;;;;;;;:75;:25;:75::i;:::-;-1:-1:-1;;;;;40312:21:0;;;;;;;:13;:21;;;;;;:99;;;;40449:24;;;;;;;:36;;40478:6;40449:28;:36::i;:::-;-1:-1:-1;;;;;40422:24:0;;;;;;;:13;:24;;;;;;;;;:63;;;;40501:35;;;;;;;40422:24;;40501:35;;;;-1:-1:-1;;;;;;;;;;;40501:35:0;;;;;;;;40051:493;;;:::o;47229:471::-;47287:7;47532:6;47528:47;;-1:-1:-1;47562:1:0;47555:8;;47528:47;47599:5;;;47603:1;47599;:5;:1;47623:5;;;;;:10;47615:56;;;;-1:-1:-1;;;47615:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39345:214;39434:7;;39479:39;39508:9;39480:22;:11;39496:5;39480:15;:22::i;39479:39::-;39454:64;39345:214;-1:-1:-1;;;;39345:214:0:o;35536:348::-;35627:7;35693:6;35687:5;35671:21;;:28;35735:25;;;35627:7;35801:37;35829:8;35802:21;35735:25;35817:5;35802:14;:21::i;35801:37::-;35775:63;35536:348;-1:-1:-1;;;;;;35536:348:0:o;20791:14671::-;20982:4;21012:15;20953:26;21038:14408;21057:2;21055:1;:4;21038:14408;;;-1:-1:-1;;;;;21109:24:0;;;21090:16;21109:24;;;:7;:24;;;;;;;;;;;;21173:23;;;:13;:23;;;;;;;21321:9;;21173:23;;21239:25;;;;21303:27;;;21454;;21451:405;;;21578:5;21534:43;;;:49;;21517:13;;:67;21501:13;:83;;;;21623:72;21689:5;21670:18;21645:24;:43;:49;;;;;21623:17;;;21645:49;;21623:21;:72::i;:::-;21603:17;:92;-1:-1:-1;;;;;21719:97:0;;;;;;-1:-1:-1;;;;;;;;;;;21786:5:0;21742:43;;;21719:97;;;21742:49;;;;21719:97;;;;;;;;21814:1;21812:3;;21719:97;;;;;;;;;;;;;21835:5;;;;;;21451:405;-1:-1:-1;;;;;21887:22:0;;21884:400;;22006:5;21962:43;;;:49;;21884:400;22302:6;22298:13092;;22346:13;;22331;:28;22328:746;;22383:17;22440:5;22423:16;;22403:19;:36;:42;;;;;-1:-1:-1;;;;;22501:30:0;;;;;;:20;:30;;;;;;22403:42;;;;-1:-1:-1;22501:45:0;;22403:42;22501:34;:45::i;:::-;-1:-1:-1;;;;;22468:30:0;;;;;;;:20;:30;;;;;;;;;:78;;;;22587:15;;;:27;;22569:45;;22642:50;;;;;;;;;;;-1:-1:-1;22688:3:0;;22642:50;;;;;22468:30;;22642:50;;;;-1:-1:-1;;;;;;;;;;;22642:50:0;;;;;;;;;22328:746;;;;22814:5;22797:16;;22772:24;:41;:47;;;;;;22755:13;;:65;22739:13;:81;;;;22863:70;22927:5;22910:16;;22885:24;:41;:47;;;;22863:70;22843:17;:90;;;;22974:8;-1:-1:-1;;;;;22961:93:0;22968:5;-1:-1:-1;;;;;22961:93:0;-1:-1:-1;;;;;;;;;;;23026:5:0;23009:16;;22984:24;:41;:47;;;;;23033:16;;22961:93;;;22984:47;;;;22961:93;;;;;;23052:1;23050:3;;22961:93;;;;;;;;;;;;;22328:746;23136:16;;23113:40;;:18;;:22;:40::i;:::-;23092:61;;22298:13092;;;23195:1;23200;23195:6;23191:12199;;;23239:13;;23224;:28;23221:711;;23276:17;23333:5;23316:16;;23296:19;:36;:42;;;;;-1:-1:-1;;;;;23361:30:0;;;;;;;:20;:30;;;;;;;;;:43;;23296:42;;;;23361:43;;;;;;23445:15;;;:27;;23427:45;;23500:50;;;;;;;;;;;-1:-1:-1;23546:3:0;;23500:50;;;;;23296:42;;-1:-1:-1;23361:30:0;23500:50;;;;-1:-1:-1;;;;;;;;;;;23500:50:0;;;;;;;;;23221:711;;;;23672:5;23655:16;;23630:24;:41;:47;;;;;;23613:13;;:65;23597:13;:81;;;;23721:70;23785:5;23768:16;;23743:24;:41;:47;;;;23721:70;23701:17;:90;;;;23832:8;-1:-1:-1;;;;;23819:93:0;23826:5;-1:-1:-1;;;;;23819:93:0;-1:-1:-1;;;;;;;;;;;23884:5:0;23867:16;;23842:24;:41;:47;;;;;23891:16;;23819:93;;;23842:47;;;;23819:93;;;;;;23910:1;23908:3;;23819:93;;;;;;;;;;;;;23221:711;23992:16;;23971:18;:37;23950:58;;23191:12199;;;24054:1;24059;24054:6;24051:11339;;;24098:13;;24083;:28;24080:710;;24135:17;24192:5;24175:16;;24155:19;:36;:42;;;;;-1:-1:-1;;;;;24220:30:0;;;;;;;:20;:30;;;;;;;;;24155:42;;;;24220;;;;24303:15;;;:27;;24285:45;;24358:50;;;;;;;;;;;-1:-1:-1;24404:3:0;;24358:50;;;;;24155:42;;-1:-1:-1;24220:30:0;24358:50;;;;-1:-1:-1;;;;;;;;;;;24358:50:0;;;;;;;;;24080:710;;;;24530:5;24513:16;;24488:24;:41;:47;;;;;;24471:13;;:65;24455:13;:81;;;;24579:70;24643:5;24626:16;;24601:24;:41;:47;;;;24579:70;24559:17;:90;;;;24690:8;-1:-1:-1;;;;;24677:93:0;24684:5;-1:-1:-1;;;;;24677:93:0;-1:-1:-1;;;;;;;;;;;24742:5:0;24725:16;;24700:24;:41;:47;;;;;24749:16;;24677:93;;;24700:47;;;;24677:93;;;;;;24768:1;24766:3;;24677:93;;;;;;;;;;;;;24080:710;24850:16;;24829:18;:37;24808:58;;24051:11339;;;24912:1;24917;24912:6;24909:10481;;;24956:13;;24941;:28;24938:711;;24993:17;25050:5;25033:16;;25013:19;:36;:42;;;;;-1:-1:-1;;;;;25078:30:0;;;;;;;:20;:30;;;;;;;;;:43;;25013:42;;;;25078:43;;;;;;25162:15;;;:27;;25144:45;;25217:50;;;;;;;;;;;-1:-1:-1;25263:3:0;;25217:50;;;;;25013:42;;-1:-1:-1;25078:30:0;25217:50;;;;-1:-1:-1;;;;;;;;;;;25217:50:0;;;;;;;;;24938:711;;;;25389:5;25372:16;;25347:24;:41;:47;;;;;;25330:13;;:65;25314:13;:81;;;;25438:70;25502:5;25485:16;;25460:24;:41;:47;;;;25438:70;25418:17;:90;;;;25549:8;-1:-1:-1;;;;;25536:93:0;25543:5;-1:-1:-1;;;;;25536:93:0;-1:-1:-1;;;;;;;;;;;25601:5:0;25584:16;;25559:24;:41;:47;;;;;25608:16;;25536:93;;;25559:47;;;;25536:93;;;;;;25627:1;25625:3;;25536:93;;;;;;;;;;;;;24938:711;25709:16;;25688:18;:37;25667:58;;24909:10481;;;25771:1;25776;25771:6;25768:9622;;;25817:13;;25802;:28;25799:717;;25854:17;25911:6;25894:16;;25874:19;:36;:43;;;;;-1:-1:-1;;;;;25940:30:0;;;;;;;:20;:30;;;;;;;;;:43;;25874;;;;25940;;;;;;26024:15;;;:27;;26006:45;;26079:50;;;;;;;;;;;-1:-1:-1;26125:3:0;;26079:50;;;;;25874:43;;-1:-1:-1;25940:30:0;26079:50;;;;-1:-1:-1;;;;;;;;;;;26079:50:0;;;;;;;;;25799:717;;;;26251:6;26234:16;;26209:24;:41;:48;;;;;;26192:13;;:66;26176:13;:82;;;;26301:71;26365:6;26348:16;;26323:24;:41;:48;;;;26301:71;26281:17;:91;;;;26413:8;-1:-1:-1;;;;;26400:96:0;26407:5;-1:-1:-1;;;;;26400:96:0;-1:-1:-1;;;;;;;;;;;26465:5:0;26448:16;;26423:24;:41;:47;;;;;;26489:2;26472:16;;:19;;;;;26400:96;;;;;;26472:19;;;26400:96;;;;26494:1;26492:3;;26400:96;;;;;;;;;;;;;25799:717;26594:2;26577:16;;:19;;;;;;26555:18;:42;26534:63;;25768:9622;;;26642:1;26647;26642:6;26639:8751;;;26688:13;;26673;:28;26670:718;;26725:17;26782:6;26765:16;;26745:19;:36;:43;;;;;-1:-1:-1;;;;;26811:30:0;;;;;;;:20;:30;;;;;;;;;:43;;26745;;;;26811;;;;;;26895:15;;;:27;;26877:45;;26950:50;;;;;;;;;;;-1:-1:-1;26996:3:0;;26950:50;;;;;26745:43;;-1:-1:-1;26811:30:0;26950:50;;;;-1:-1:-1;;;;;;;;;;;26950:50:0;;;;;;;;;26670:718;;;;27122:6;27105:16;;27080:24;:41;:48;;;;;;27063:13;;:66;27047:13;:82;;;;27172:71;27236:6;27219:16;;27194:24;:41;:48;;;;27172:71;27152:17;:91;;;;27284:8;-1:-1:-1;;;;;27271:97:0;27278:5;-1:-1:-1;;;;;27271:97:0;-1:-1:-1;;;;;;;;;;;27336:6:0;27319:16;;27294:24;:41;:48;;;;;;27361:2;27344:16;;:19;;;;;27271:97;;;;;;27344:19;;;27271:97;;;;27366:1;27364:3;;27271:97;;;;;;;;;;;;;26670:718;27466:2;27449:16;;:19;;;;26639:8751;27514:1;27519;27514:6;27511:7879;;;27560:13;;27545;:28;27542:718;;27597:17;27654:6;27637:16;;27617:19;:36;:43;;;;;-1:-1:-1;;;;;27683:30:0;;;;;;;:20;:30;;;;;;;;;:43;;27617;;;;27683;;;;;;27767:15;;;:27;;27749:45;;27822:50;;;;;;;;;;;-1:-1:-1;27868:3:0;;27822:50;;;;;27617:43;;-1:-1:-1;27683:30:0;27822:50;;;;-1:-1:-1;;;;;;;;;;;27822:50:0;;;;;;;;;27542:718;;;;27994:6;27977:16;;27952:24;:41;:48;;;;;;27935:13;;:66;27919:13;:82;;;;28044:71;28108:6;28091:16;;28066:24;:41;:48;;;;28044:71;28024:17;:91;;;;28156:8;-1:-1:-1;;;;;28143:97:0;28150:5;-1:-1:-1;;;;;28143:97:0;-1:-1:-1;;;;;;;;;;;28208:6:0;28191:16;;28166:24;:41;:48;;;;;;28233:2;28216:16;;:19;;;;;28143:97;;;;;;28216:19;;;28143:97;;;;28238:1;28236:3;;28143:97;;;;;;;;;;;;;27542:718;28338:2;28321:16;;:19;;;;27511:7879;28387:1;28392;28387:6;28384:7006;;;28433:13;;28418;:28;28415:718;;28470:17;28527:6;28510:16;;28490:19;:36;:43;;;;;-1:-1:-1;;;;;28556:30:0;;;;;;;:20;:30;;;;;;;;;:43;;28490;;;;28556;;;;;;28640:15;;;:27;;28622:45;;28695:50;;;;;;;;;;;-1:-1:-1;28741:3:0;;28695:50;;;;;28490:43;;-1:-1:-1;28556:30:0;28695:50;;;;-1:-1:-1;;;;;;;;;;;28695:50:0;;;;;;;;;28415:718;;;;28867:6;28850:16;;28825:24;:41;:48;;;;;;28808:13;;:66;28792:13;:82;;;;28917:71;28981:6;28964:16;;28939:24;:41;:48;;;;28917:71;28897:17;:91;;;;29029:8;-1:-1:-1;;;;;29016:97:0;29023:5;-1:-1:-1;;;;;29016:97:0;-1:-1:-1;;;;;;;;;;;29081:6:0;29064:16;;29039:24;:41;:48;;;;;;29106:2;29089:16;;:19;;;;;29016:97;;;;;;29089:19;;;29016:97;;;;29111:1;29109:3;;29016:97;;;;;;;;;;;;;28415:718;29211:2;29194:16;;:19;;;;28384:7006;29259:1;29264;29259:6;29256:6134;;;29305:13;;29290;:28;29287:718;;29342:17;29399:6;29382:16;;29362:19;:36;:43;;;;;-1:-1:-1;;;;;29428:30:0;;;;;;;:20;:30;;;;;;;;;:43;;29362;;;;29428;;;;;;29512:15;;;:27;;29494:45;;29567:50;;;;;;;;;;;-1:-1:-1;29613:3:0;;29567:50;;;;;29362:43;;-1:-1:-1;29428:30:0;29567:50;;;;-1:-1:-1;;;;;;;;;;;29567:50:0;;;;;;;;;29287:718;;;;29739:6;29722:16;;29697:24;:41;:48;;;;;;29680:13;;:66;29664:13;:82;;;;29789:71;29853:6;29836:16;;29811:24;:41;:48;;;;29789:71;29769:17;:91;;;;29901:8;-1:-1:-1;;;;;29888:97:0;29895:5;-1:-1:-1;;;;;29888:97:0;-1:-1:-1;;;;;;;;;;;29953:6:0;29936:16;;29911:24;:41;:48;;;;;;29978:2;29961:16;;:19;;;;;29888:97;;;;;;29961:19;;;29888:97;;;;29983:1;29981:3;;29888:97;;;;;;;;;;;;;29287:718;30083:2;30066:16;;:19;;;;29256:6134;30131:1;30136;30131:6;30128:5262;;;30177:14;;30162:13;:29;30159:724;;30215:17;30273:6;30255:17;;30235:19;:37;:44;;;;;-1:-1:-1;;;;;30302:30:0;;;;;;;:20;:30;;;;;;;;;:43;;30235:44;;;;30302:43;;;;;;30386:15;;;:27;;30368:45;;30441:50;;;;;;;;;;;-1:-1:-1;30487:3:0;;30441:50;;;;;30235:44;;-1:-1:-1;30302:30:0;30441:50;;;;-1:-1:-1;;;;;;;;;;;30441:50:0;;;;;;;;;30159:724;;;;30614:6;30596:17;;30571:24;:42;:49;;;;;;30554:13;;:67;30538:13;:83;;;;30664:72;30729:6;30711:17;;30686:24;:42;:49;;;;30664:72;30644:17;:92;;;;30777:8;-1:-1:-1;;;;;30764:99:0;30771:5;-1:-1:-1;;;;;30764:99:0;-1:-1:-1;;;;;;;;;;;30830:6:0;30812:17;;30787:24;:42;:49;;;;;;30856:2;30838:17;;:20;;;;;30764:99;;;;;;30838:20;;;30764:99;;;;30861:1;30859:3;;30764:99;;;;;;;;;;;;;30159:724;30962:2;30944:17;;:20;;;;30128:5262;31028:1;31033:2;31028:7;31025:4365;;;31073:14;;31058:13;:29;31055:724;;31111:17;31169:6;31151:17;;31131:19;:37;:44;;;;;-1:-1:-1;;;;;31198:30:0;;;;;;;:20;:30;;;;;;;;;:43;;31131:44;;;;31198:43;;;;;;31282:15;;;:27;;31264:45;;31337:50;;;;;;;;;;;-1:-1:-1;31383:3:0;;31337:50;;;;;31131:44;;-1:-1:-1;31198:30:0;31337:50;;;;-1:-1:-1;;;;;;;;;;;31337:50:0;;;;;;;;;31055:724;;;;31510:6;31492:17;;31467:24;:42;:49;;;;;;31450:13;;:67;31434:13;:83;;;;31560:72;31625:6;31607:17;;31582:24;:42;:49;;;;31560:72;31540:17;:92;;;;31673:8;-1:-1:-1;;;;;31660:99:0;31667:5;-1:-1:-1;;;;;31660:99:0;-1:-1:-1;;;;;;;;;;;31726:6:0;31708:17;;31683:24;:42;:49;;;;;;31752:2;31734:17;;:20;;;;;31660:99;;;;;;31734:20;;;31660:99;;;;31757:1;31755:3;;31660:99;;;;;;;;;;;;;31055:724;31858:2;31840:17;;:20;;;;31025:4365;31906:1;31911:2;31906:7;31903:3487;;;31951:14;;31936:13;:29;31933:724;;31989:17;32047:6;32029:17;;32009:19;:37;:44;;;;;-1:-1:-1;;;;;32076:30:0;;;;;;;:20;:30;;;;;;;;;:43;;32009:44;;;;32076:43;;;;;;32160:15;;;:27;;32142:45;;32215:50;;;;;;;;;;;-1:-1:-1;32261:3:0;;32215:50;;;;;32009:44;;-1:-1:-1;32076:30:0;32215:50;;;;-1:-1:-1;;;;;;;;;;;32215:50:0;;;;;;;;;31933:724;;;;32388:6;32370:17;;32345:24;:42;:49;;;;;;32328:13;;:67;32312:13;:83;;;;32438:72;32503:6;32485:17;;32460:24;:42;:49;;;;32438:72;32418:17;:92;;;;32551:8;-1:-1:-1;;;;;32538:99:0;32545:5;-1:-1:-1;;;;;32538:99:0;-1:-1:-1;;;;;;;;;;;32604:6:0;32586:17;;32561:24;:42;:49;;;;;;32630:2;32612:17;;:20;;;;;32538:99;;;;;;32612:20;;;32538:99;;;;32635:1;32633:3;;32538:99;;;;;;;;;;;;;31933:724;32736:2;32718:17;;:20;;;;31903:3487;32784:1;32789:2;32784:7;32781:2609;;;32829:14;;32814:13;:29;32811:724;;32867:17;32925:6;32907:17;;32887:19;:37;:44;;;;;-1:-1:-1;;;;;32954:30:0;;;;;;;:20;:30;;;;;;;;;:43;;32887:44;;;;32954:43;;;;;;33038:15;;;:27;;33020:45;;33093:50;;;;;;;;;;;-1:-1:-1;33139:3:0;;33093:50;;;;;32887:44;;-1:-1:-1;32954:30:0;33093:50;;;;-1:-1:-1;;;;;;;;;;;33093:50:0;;;;;;;;;32811:724;;;;33266:6;33248:17;;33223:24;:42;:49;;;;;;33206:13;;:67;33190:13;:83;;;;33316:72;33381:6;33363:17;;33338:24;:42;:49;;;;33316:72;33296:17;:92;;;;33429:8;-1:-1:-1;;;;;33416:99:0;33423:5;-1:-1:-1;;;;;33416:99:0;-1:-1:-1;;;;;;;;;;;33482:6:0;33464:17;;33439:24;:42;:49;;;;;;33508:2;33490:17;;:20;;;;;33416:99;;;;;;33490:20;;;33416:99;;;;33513:1;33511:3;;33416:99;;;;;;;;;;;;;32811:724;33614:2;33596:17;;:20;;;;32781:2609;33662:1;33667:2;33662:7;33659:1731;;;33709:14;;33694:13;:29;33691:721;;33747:17;33805:6;33787:17;;33767:19;:37;:44;;;;;-1:-1:-1;;;;;33834:30:0;;;;;;;:20;:30;;;;;;;;;:43;;33767:44;;;;33834:43;;;;;;33918:15;;;:27;;33900:45;;33973:50;;;;;;;;;;;-1:-1:-1;34019:3:0;;33973:50;;;;;33767:44;;-1:-1:-1;33834:30:0;33973:50;;;;-1:-1:-1;;;;;;;;;;;33973:50:0;;;;;;;;;33691:721;;;;34145:6;34127:17;;34102:24;:42;:49;;;;;;34085:13;;:67;34069:13;:83;;;;34194:72;34259:6;34241:17;;34216:24;:42;:49;;;;34194:72;34174:17;:92;;;;34306:8;-1:-1:-1;;;;;34293:99:0;34300:5;-1:-1:-1;;;;;34293:99:0;-1:-1:-1;;;;;;;;;;;34359:6:0;34341:17;;34316:24;:42;:49;;;;;;34385:2;34367:17;;:20;;;;;34293:99;;;;;;34367:20;;;34293:99;;;;34390:1;34388:3;;34293:99;;;;;;;;;;;;;33691:721;34491:2;34473:17;;:20;;;;33659:1731;34539:1;34544:2;34539:7;34536:854;;;34585:14;;34570:13;:29;34567:721;;34623:17;34681:6;34663:17;;34643:19;:37;:44;;;;;-1:-1:-1;;;;;34710:30:0;;;;;;;:20;:30;;;;;;;;;:43;;34643:44;;;;34710:43;;;;;;34794:15;;;:27;;34776:45;;34849:50;;;;;;;;;;;-1:-1:-1;34895:3:0;;34849:50;;;;;34643:44;;-1:-1:-1;34710:30:0;34849:50;;;;-1:-1:-1;;;;;;;;;;;34849:50:0;;;;;;;;;34567:721;;;;35021:6;35003:17;;34978:24;:42;:49;;;;;;34961:13;;:67;34945:13;:83;;;;35070:72;35135:6;35117:17;;35092:24;:42;:49;;;;35070:72;35050:17;:92;;;;35182:8;-1:-1:-1;;;;;35169:99:0;35176:5;-1:-1:-1;;;;;35169:99:0;-1:-1:-1;;;;;;;;;;;35235:6:0;35217:17;;35192:24;:42;:49;;;;;;35261:2;35243:17;;:20;;;;;35169:99;;;;;;35243:20;;;35169:99;;;;35266:1;35264:3;;35169:99;;;;;;;;;;;;;34567:721;35367:2;35349:17;;:20;;;;;;35327:18;:43;35306:64;;34536:854;-1:-1:-1;35426:8:0;;-1:-1:-1;;;21061:3:0;;21038:14408;;;;20791:14671;;;;;;:::o;48804:278::-;48890:7;48925:12;48918:5;48910:28;;;;-1:-1:-1;;;48910:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48949:9;48965:1;48961;:5;;;;;;;48804:278;-1:-1:-1;;;;;48804:278:0:o;46778:192::-;46864:7;46900:12;46892:6;;;;46884:29;;;;-1:-1:-1;;;46884:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;46936:5:0;;;46778:192::o

Swarm Source

ipfs://3e5b950986e59cd63a9df6b748ca0f841ba9e76fdd00c55364cd82f685f770c5
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.