ETH Price: $3,320.77 (-1.16%)

Token

WALTERINU ($WINU)
 

Overview

Max Total Supply

100,000,000,000 $WINU

Holders

140

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
Uniswap: Universal Router
Balance
0.000000001 $WINU

Value
$0.00
0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD
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:
WALTERINU

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-03-27
*/

/**
 *Submitted for verification at Etherscan.io on 2023-11-19
*/

//SPDX-License-Identifier: Unlicensed


pragma solidity 0.8.21;


interface IERC20 {

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

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

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

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

abstract contract Context {
    function _msgSender() internal view returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view returns (bytes memory) {
        this;
        return msg.data;
    }
}

interface IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IPancakePair {
    function sync() external;
}

interface IDEXRouter {

    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

}

contract Ownable is Context {
    address private _owner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
   
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract WALTERINU is IERC20, Ownable {
    using SafeMath for uint256;
    
    address WETH;
    address constant DEAD          = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO          = 0x0000000000000000000000000000000000000000;

    string _name;
    string _symbol;
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 1 * 10**11 * 10**_decimals; 
    uint256 public _maxTxAmount = (_totalSupply * 3) / 100; // 3%
    uint256 public _maxWalletSize = (_totalSupply * 3) / 100; // 3%  

    mapping (address => uint256) public _rOwned;
    uint256 public _totalProportion = _totalSupply;

    mapping (address => mapping (address => uint256)) _allowances;
    mapping (address => bool) isCooldownExempt;    
    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
 
    uint256 liquidityFeeBuy = 1; 
    uint256 liquidityFeeSell = 0;

    uint256 TeamFeeBuy = 0;  
    uint256 TeamFeeSell = 0;  

    uint256 marketingFeeBuy = 2;   
    uint256 marketingFeeSell = 2;   

    uint256 reflectionFeeBuy = 0;   
    uint256 reflectionFeeSell = 1;  

    uint256 totalFeeBuy = marketingFeeBuy + liquidityFeeBuy + TeamFeeBuy + reflectionFeeBuy;     
    uint256 totalFeeSell = marketingFeeSell + liquidityFeeSell + TeamFeeSell + reflectionFeeSell; 

    uint256 feeDenominator = 100; 
       
    address autoLPReceiver;
    address marketingReceiver;
    address teamReceiver;

    uint256 targetLiquidity = 100;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    address public pair;

    bool public tradingOpen = false;

    bool public buyCooldownEnabled = true;
    uint8 public CooldownTimerInterval = 10; //seconds
    mapping (address => uint) public CooldownTimer;
    
    bool public claimingFees = true; 
    bool alternateSwaps = true;  
    uint256 smallSwapThreshold = _totalSupply * 1 / 1000; // .1%
    uint256 largeSwapThreshold = _totalSupply * 2 / 1000; // .2%

    uint256 public swapThreshold = smallSwapThreshold;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor (address swapRouterAddress, string memory tName, string memory tSymbol) {
        _name = tName;
        _symbol = tSymbol;
        router = IDEXRouter(swapRouterAddress);
        WETH = router.WETH();
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));

        _allowances[address(this)][address(router)] = type(uint256).max;
        _allowances[address(this)][msg.sender] = type(uint256).max;

        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[address(router)] = true;
	    isTxLimitExempt[pair] = true;
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[marketingReceiver] = true;
        isFeeExempt[msg.sender] = true;
        isCooldownExempt[msg.sender] = true;
        isCooldownExempt[DEAD] = true;
        isCooldownExempt[address(this)] = true;

        
        autoLPReceiver = address(0x3297149AddBFEC4d854E9A3d51A8aF0f8D27eAce);
        teamReceiver = address(0x5E8516Fb995857F57826210FeCb6B2eE56D626a8);
        marketingReceiver = address(0x349c9c6e4533984d682466d43Ba95d60d8e15150);

        _rOwned[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure returns (uint8) { return _decimals; }
    function name() external view returns (string memory) { return _name; }
    function symbol() external view returns (string memory) { return _symbol; }
    function getOwner() external view returns (address) { return owner(); }
    function balanceOf(address account) public view override returns (uint256) { return tokenFromReflection(_rOwned[account]); }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
       

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

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if (recipient != pair && recipient != DEAD && recipient != marketingReceiver && !isTxLimitExempt[recipient]) {
            require(balanceOf(recipient) + amount <= _maxWalletSize, "Max Wallet Exceeded");

        if (sender == pair &&
            buyCooldownEnabled &&
            !isCooldownExempt[recipient]) {
            require(CooldownTimer[recipient] < block.timestamp,"Please wait for between buys");
            CooldownTimer[recipient] = block.timestamp + CooldownTimerInterval;
        }
        
        }
        
        if(!isTxLimitExempt[sender]) {
            require(amount <= _maxTxAmount, "Transaction Amount Exceeded");
        }
     
        if (recipient != pair && recipient != DEAD && !isTxLimitExempt[recipient]) {
            require(tradingOpen,"Trading not open yet");
        
        }

        if(shouldSwapBack()){ swapBack(); }

        uint256 proportionAmount = tokensToProportion(amount);

        _rOwned[sender] = _rOwned[sender].sub(proportionAmount, "Insufficient Balance");

        uint256 proportionReceived = shouldTakeFee(sender) && shouldTakeFee(recipient) ? takeFeeInProportions(sender == pair? true : false, sender, recipient, proportionAmount) : proportionAmount;
        _rOwned[recipient] = _rOwned[recipient].add(proportionReceived);

        emit Transfer(sender, recipient, tokenFromReflection(proportionReceived));
        return true;
    }

    function tokensToProportion(uint256 tokens) public view returns (uint256) {
        return tokens.mul(_totalProportion).div(_totalSupply);
    }

    function tokenFromReflection(uint256 proportion) public view returns (uint256) {
        return proportion.mul(_totalSupply).div(_totalProportion);
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        uint256 proportionAmount = tokensToProportion(amount);
        _rOwned[sender] = _rOwned[sender].sub(proportionAmount, "Insufficient Balance");
        _rOwned[recipient] = _rOwned[recipient].add(proportionAmount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];

    }

     function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }

    function getTotalFeeBuy(bool) public view returns (uint256) {
        return totalFeeBuy;
    }

    function getTotalFeeSell(bool) public view returns (uint256) {
        return totalFeeSell;
    }

    function takeFeeInProportions(bool buying, address sender, address receiver, uint256 proportionAmount) internal returns (uint256) {
        uint256 proportionFeeAmount = buying == true? proportionAmount.mul(getTotalFeeBuy(receiver == pair)).div(feeDenominator) :
        proportionAmount.mul(getTotalFeeSell(receiver == pair)).div(feeDenominator);

        
        uint256 proportionReflected = buying == true? proportionFeeAmount.mul(reflectionFeeBuy).div(totalFeeBuy) :
        proportionFeeAmount.mul(reflectionFeeSell).div(totalFeeSell);

        _totalProportion = _totalProportion.sub(proportionReflected);

        
        uint256 _proportionToContract = proportionFeeAmount.sub(proportionReflected);
        _rOwned[address(this)] = _rOwned[address(this)].add(_proportionToContract);

        emit Transfer(sender, address(this), tokenFromReflection(_proportionToContract));
        emit Reflect(proportionReflected, _totalProportion);
        return proportionAmount.sub(proportionFeeAmount);
    }

     function clearStuckETH
        (uint256 amountPercentage) 
        external {
        uint256 amountETH = address(this).balance;
        payable(teamReceiver).transfer(amountETH * amountPercentage / 100);

        emit ClearStuck(amountPercentage);
    }

     function clearForeignToken
     (address tokenAddress, uint256 tokens) 
     external onlyOwner returns (bool) {
     require(tokenAddress != address(this), "Owner cannot claim native tokens"); 
     if(tokens == 0){
            tokens = IERC20(tokenAddress).balanceOf(address(this));
        }
        emit ClearToken(tokenAddress, tokens);
        return IERC20(tokenAddress).transfer(msg.sender, tokens);
       
    }
  
      function removeLimits() 
      external onlyOwner { 
     _maxWalletSize = _totalSupply;
     _maxTxAmount = _totalSupply;

    }

    function multiSendTokens(address[] memory accounts, uint256[] memory amounts) external onlyOwner {
        require(accounts.length == amounts.length, "Lengths do not match.");
        for (uint16 i = 0; i < accounts.length; i++) {
        require(balanceOf(msg.sender) >= amounts[i], "Not enough tokens.");       
        _basicTransfer(msg.sender,accounts[i],amounts[i]);
        }
    }
  

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && claimingFees
        && balanceOf(address(this)) >= swapThreshold;
    }

    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFeeSell;
        uint256 _totalFee = totalFeeSell.sub(reflectionFeeSell);
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(_totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance.sub(balanceBefore);
        uint256 totalETHFee = _totalFee.sub(dynamicLiquidityFee.div(2));
        uint256 amountETHLiquidity = amountETH.mul(liquidityFeeSell).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFeeSell).div(totalETHFee);
        uint256 amountETHTeam = amountETH.mul(TeamFeeSell).div(totalETHFee);

        (bool tmpSuccess,) = payable(marketingReceiver).call{value: amountETHMarketing}("");
        (tmpSuccess,) = payable(teamReceiver).call{value: amountETHTeam}("");
             
            if(amountToLiquify > 0) {
             router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLPReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }

        swapThreshold = !alternateSwaps ? swapThreshold : swapThreshold == smallSwapThreshold ? largeSwapThreshold : smallSwapThreshold;
    }

    function setSwapThreshold
    (bool _enabled, uint256 _amountS, uint256 _amountL, bool _alternate) 
    external onlyOwner {
    require(_amountS < (_totalSupply/50), "Cannot set swap amount above 2%");
    require(_amountS > (_totalSupply/100000), "Cannot set swap amount below 0.001%");
    require(_amountL < (_totalSupply/50), "Cannot set swap amount above 2%");
    require(_amountL > (_totalSupply/100000), "Cannot set swap amount below 0.001%");
    alternateSwaps = _alternate;
    claimingFees = _enabled;
    smallSwapThreshold = _amountS;
    largeSwapThreshold = _amountL;
    swapThreshold = smallSwapThreshold;

        emit set_SellAmounts(alternateSwaps, claimingFees, smallSwapThreshold, largeSwapThreshold);
    }

    function enableTrading() public onlyOwner {
    require (!tradingOpen);
    tradingOpen = true;
    }

    function disableTrading() public onlyOwner {
        require (tradingOpen);
            tradingOpen = false;
        }

    function setFees
    (uint256 _liquidityFeeBuy, uint256 _reflectionFeeBuy, uint256 _marketingFeeBuy, uint256 _TeamFeeBuy, uint256 _feeDenominator,
    uint256 _liquidityFeeSell, uint256 _reflectionFeeSell, uint256 _marketingFeeSell, uint256 _TeamFeeSell) 
    external onlyOwner {
    liquidityFeeBuy = _liquidityFeeBuy;
    reflectionFeeBuy = _reflectionFeeBuy;
    marketingFeeBuy = _marketingFeeBuy;
    TeamFeeBuy = _TeamFeeBuy;
    totalFeeBuy = liquidityFeeBuy.add(reflectionFeeBuy).add(marketingFeeBuy).add(TeamFeeBuy);

    liquidityFeeSell = _liquidityFeeSell;
    reflectionFeeSell = _reflectionFeeSell;
    marketingFeeSell = _marketingFeeSell;
    TeamFeeSell = _TeamFeeSell;
    totalFeeSell = liquidityFeeSell.add(reflectionFeeSell).add(marketingFeeSell).add(TeamFeeSell);
       
    feeDenominator = _feeDenominator;

    require(totalFeeBuy <= feeDenominator/1,"Cannot set buy fees above 20%"); 
    require(totalFeeSell <=feeDenominator/1,"Cannot set sell fees above 20%"); 
        
     }
     
    function updateMaxWallet
    (uint256 maxWalletHolding) 
    external onlyOwner() {
    require(maxWalletHolding >= 1);
    _maxWalletSize = (_totalSupply * maxWalletHolding ) / 1000;
    emit set_MaxWallet(_maxWalletSize);
    }

    function updateMaxTransaction
    (uint256 maxTransactionSize) 
    external onlyOwner() {
    require(maxTransactionSize >= 1, "Cannot set max TX below .1%");
     _maxTxAmount = (_totalSupply * maxTransactionSize ) / 1000;
    emit set_MaxTransaction(_maxTxAmount);
    
      }
      
    function addTaxExemption
    (address[] calldata addresses, bool status) 
    public onlyOwner {
    for (uint256 i; i < addresses.length; ++i) {
    isFeeExempt[addresses[i]] = status;
        }
    }

    function addTXLimitExemption
    (address[] calldata addresses, bool status)
    public onlyOwner {
    for (uint256 i; i < addresses.length; ++i) {
    isTxLimitExempt[addresses[i]] = status;
        } 
    }

    function addCooldownExempt
    (address holder, bool exempt) 
    external onlyOwner {
    isCooldownExempt[holder] = exempt;
    }

    
    function setPresaleAddress
    (address holder, bool exempt) external onlyOwner {
    isFeeExempt[holder] = exempt;
    isTxLimitExempt[holder] = exempt;
    }
    
    function setTaxReceivers
    (address _marketingReceiver, address _autoLPReceiver, address _TeamReceiver) 
    external onlyOwner {
    marketingReceiver = _marketingReceiver;
    teamReceiver = _TeamReceiver;
    autoLPReceiver = _autoLPReceiver;

    emit set_Receivers(marketingReceiver, teamReceiver, autoLPReceiver);
    }

    function getCirculatingSupply() 
    public view returns (uint256) {
    return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function getLiquidityBacking
    (uint256 accuracy) 
    private view returns (uint256) {
    return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());

    }

    function isOverLiquified
    (uint256 target, uint256 accuracy)
    public view returns (bool) {
    return getLiquidityBacking(accuracy) > target;
    
    }

    event AutoLiquify(uint256 amountETH, uint256 amountTokens);
    event user_exemptfromfees(address Wallet, bool Exempt);
    event user_TxExempt(address Wallet, bool Exempt);
    event ClearStuck(uint256 amount);
    event ClearToken(address tokenAddress, uint256 tokens);
    event set_Receivers(address marketingReceiver, address teamReceiver,address autoLPReceiver);
    event set_MaxWallet(uint256 maxWallet);
    event set_MaxTransaction(uint256 maxTXAmount);
    event set_SellAmounts(bool enabled, bool alternate, uint256 amountS, uint256 amountL);
    event Reflect(uint256 amountReflected, uint256 newTotalProportion);
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"swapRouterAddress","type":"address"},{"internalType":"string","name":"tName","type":"string"},{"internalType":"string","name":"tSymbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ClearStuck","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"tokenAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"ClearToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountReflected","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTotalProportion","type":"uint256"}],"name":"Reflect","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxTXAmount","type":"uint256"}],"name":"set_MaxTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"set_MaxWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"marketingReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"teamReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"autoLPReceiver","type":"address"}],"name":"set_Receivers","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"},{"indexed":false,"internalType":"bool","name":"alternate","type":"bool"},{"indexed":false,"internalType":"uint256","name":"amountS","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountL","type":"uint256"}],"name":"set_SellAmounts","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Exempt","type":"bool"}],"name":"user_TxExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Exempt","type":"bool"}],"name":"user_exemptfromfees","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"CooldownTimer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CooldownTimerInterval","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_rOwned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalProportion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"addCooldownExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"addTXLimitExemption","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"addTaxExemption","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyCooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimingFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearForeignToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"disableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"}],"name":"getTotalFeeBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"}],"name":"getTotalFeeSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"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":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFeeBuy","type":"uint256"},{"internalType":"uint256","name":"_reflectionFeeBuy","type":"uint256"},{"internalType":"uint256","name":"_marketingFeeBuy","type":"uint256"},{"internalType":"uint256","name":"_TeamFeeBuy","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"},{"internalType":"uint256","name":"_liquidityFeeSell","type":"uint256"},{"internalType":"uint256","name":"_reflectionFeeSell","type":"uint256"},{"internalType":"uint256","name":"_marketingFeeSell","type":"uint256"},{"internalType":"uint256","name":"_TeamFeeSell","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setPresaleAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amountS","type":"uint256"},{"internalType":"uint256","name":"_amountL","type":"uint256"},{"internalType":"bool","name":"_alternate","type":"bool"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingReceiver","type":"address"},{"internalType":"address","name":"_autoLPReceiver","type":"address"},{"internalType":"address","name":"_TeamReceiver","type":"address"}],"name":"setTaxReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proportion","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"tokensToProportion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTransactionSize","type":"uint256"}],"name":"updateMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletHolding","type":"uint256"}],"name":"updateMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526009600a62000014919062000d69565b64174876e80062000026919062000db9565b600455606460036004546200003c919062000db9565b62000048919062000e30565b600555606460036004546200005e919062000db9565b6200006a919062000e30565b6006556004546008556001600d555f600e555f600f555f601055600260115560026012555f6013556001601455601354600f54600d54601154620000af919062000e67565b620000bb919062000e67565b620000c7919062000e67565b601555601454601054600e54601254620000e2919062000e67565b620000ee919062000e67565b620000fa919062000e67565b60165560646017556064601b556064601c555f601e60146101000a81548160ff0219169083151502179055506001601e60156101000a81548160ff021916908315150217905550600a601e60166101000a81548160ff021916908360ff160217905550600160205f6101000a81548160ff0219169083151502179055506001602060016101000a81548160ff0219169083151502179055506103e86001600454620001a6919062000db9565b620001b2919062000e30565b6021556103e86002600454620001c9919062000db9565b620001d5919062000e30565b602255602154602355348015620001ea575f80fd5b506040516200698338038062006983833981810160405281019062000210919062001087565b5f6200022162000bd060201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3508160029081620002ce91906200134c565b508060039081620002e091906200134c565b5082601d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200038c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003b2919062001430565b60015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200045c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000482919062001430565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b8152600401620004df92919062001471565b6020604051808303815f875af1158015620004fc573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000522919062001430565b601e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60095f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60095f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506001600c5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550733297149addbfec4d854e9a3d51a8af0f8d27eace60185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550735e8516fb995857f57826210fecb6b2ee56d626a8601a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073349c9c6e4533984d682466d43ba95d60d8e1515060195f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060045460075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60045460405162000bbf9190620014ad565b60405180910390a3505050620014c8565b5f33905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000c615780860481111562000c395762000c3862000bd7565b5b600185161562000c495780820291505b808102905062000c598562000c04565b945062000c19565b94509492505050565b5f8262000c7b576001905062000d4d565b8162000c8a575f905062000d4d565b816001811462000ca3576002811462000cae5762000ce4565b600191505062000d4d565b60ff84111562000cc35762000cc262000bd7565b5b8360020a91508482111562000cdd5762000cdc62000bd7565b5b5062000d4d565b5060208310610133831016604e8410600b841016171562000d1e5782820a90508381111562000d185762000d1762000bd7565b5b62000d4d565b62000d2d848484600162000c10565b9250905081840481111562000d475762000d4662000bd7565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f62000d758262000d54565b915062000d828362000d5d565b925062000db17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000c6a565b905092915050565b5f62000dc58262000d54565b915062000dd28362000d54565b925082820262000de28162000d54565b9150828204841483151762000dfc5762000dfb62000bd7565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000e3c8262000d54565b915062000e498362000d54565b92508262000e5c5762000e5b62000e03565b5b828204905092915050565b5f62000e738262000d54565b915062000e808362000d54565b925082820190508082111562000e9b5762000e9a62000bd7565b5b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000edd8262000eb2565b9050919050565b62000eef8162000ed1565b811462000efa575f80fd5b50565b5f8151905062000f0d8162000ee4565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b62000f638262000f1b565b810181811067ffffffffffffffff8211171562000f855762000f8462000f2b565b5b80604052505050565b5f62000f9962000ea1565b905062000fa7828262000f58565b919050565b5f67ffffffffffffffff82111562000fc95762000fc862000f2b565b5b62000fd48262000f1b565b9050602081019050919050565b5f5b838110156200100057808201518184015260208101905062000fe3565b5f8484015250505050565b5f620010216200101b8462000fac565b62000f8e565b90508281526020810184848401111562001040576200103f62000f17565b5b6200104d84828562000fe1565b509392505050565b5f82601f8301126200106c576200106b62000f13565b5b81516200107e8482602086016200100b565b91505092915050565b5f805f60608486031215620010a157620010a062000eaa565b5b5f620010b08682870162000efd565b935050602084015167ffffffffffffffff811115620010d457620010d362000eae565b5b620010e28682870162001055565b925050604084015167ffffffffffffffff81111562001106576200110562000eae565b5b620011148682870162001055565b9150509250925092565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200116d57607f821691505b60208210810362001183576200118262001128565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620011e77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620011aa565b620011f38683620011aa565b95508019841693508086168417925050509392505050565b5f819050919050565b5f620012346200122e620012288462000d54565b6200120b565b62000d54565b9050919050565b5f819050919050565b6200124f8362001214565b620012676200125e826200123b565b848454620011b6565b825550505050565b5f90565b6200127d6200126f565b6200128a81848462001244565b505050565b5b81811015620012b157620012a55f8262001273565b60018101905062001290565b5050565b601f8211156200130057620012ca8162001189565b620012d5846200119b565b81016020851015620012e5578190505b620012fd620012f4856200119b565b8301826200128f565b50505b505050565b5f82821c905092915050565b5f620013225f198460080262001305565b1980831691505092915050565b5f6200133c838362001311565b9150826002028217905092915050565b62001357826200111e565b67ffffffffffffffff81111562001373576200137262000f2b565b5b6200137f825462001155565b6200138c828285620012b5565b5f60209050601f831160018114620013c2575f8415620013ad578287015190505b620013b985826200132f565b86555062001428565b601f198416620013d28662001189565b5f5b82811015620013fb57848901518255600182019150602085019450602081019050620013d4565b868310156200141b578489015162001417601f89168262001311565b8355505b6001600288020188555050505b505050505050565b5f6020828403121562001448576200144762000eaa565b5b5f620014578482850162000efd565b91505092915050565b6200146b8162000ed1565b82525050565b5f604082019050620014865f83018562001460565b62001495602083018462001460565b9392505050565b620014a78162000d54565b82525050565b5f602082019050620014c25f8301846200149c565b92915050565b6154ad80620014d65f395ff3fe60806040526004361061028b575f3560e01c80637c4e1b5511610159578063add5df66116100c0578063dd62ed3e11610079578063dd62ed3e146109c4578063e4b8659e14610a00578063f0a9e36514610a28578063f2fde38b14610a64578063f887ea4014610a8c578063ffb54a9914610ab657610292565b8063add5df66146108d2578063b0f7ec38146108fa578063bdc512c614610924578063c4c3641f1461094c578063d11a593f14610974578063d78e139d1461099c57610292565b80638f9a55c0116101125780638f9a55c0146107b457806395d89b41146107de578063a1dbe40714610808578063a737ec3e14610830578063a8aa1b311461086c578063a9059cbb1461089657610292565b80637c4e1b55146106ba5780637d1db4a5146106e4578063832790fe1461070e578063893d20e81461074a5780638a8c523c146107745780638da5cb5b1461078a57610292565b80632610eaca116101fd57806345ce5365116101b657806345ce5365146105b0578063571ac8b0146105ec578063617fe0ed1461062857806370a0823114610652578063715018a61461068e578063751039fc146106a457610292565b80632610eaca146104945780632b112e49146104bc5780632d44c931146104e65780632d83811914610522578063313ce5671461055e5780633cd17c961461058857610292565b80631161ae391161024f5780631161ae391461038a57806317700f01146103c657806317800287146103dc57806318160ddd146104065780631c499ab01461043057806323b872dd1461045857610292565b80630445b667146102965780630517d13d146102c057806306fdde03146102e8578063095ea7b3146103125780630cfc15f91461034e57610292565b3661029257005b5f80fd5b3480156102a1575f80fd5b506102aa610ae0565b6040516102b79190613edf565b60405180910390f35b3480156102cb575f80fd5b506102e660048036038101906102e19190613f33565b610ae6565b005b3480156102f3575f80fd5b506102fc610c1b565b6040516103099190613fe8565b60405180910390f35b34801561031d575f80fd5b5061033860048036038101906103339190614062565b610cab565b60405161034591906140ba565b60405180910390f35b348015610359575f80fd5b50610374600480360381019061036f91906140d3565b610d98565b6040516103819190613edf565b60405180910390f35b348015610395575f80fd5b506103b060048036038101906103ab91906140fe565b610dad565b6040516103bd91906140ba565b60405180910390f35b3480156103d1575f80fd5b506103da610dc1565b005b3480156103e7575f80fd5b506103f0610e89565b6040516103fd9190613edf565b60405180910390f35b348015610411575f80fd5b5061041a610e8f565b6040516104279190613edf565b60405180910390f35b34801561043b575f80fd5b5061045660048036038101906104519190613f33565b610e98565b005b348015610463575f80fd5b5061047e6004803603810190610479919061413c565b610f96565b60405161048b91906140ba565b60405180910390f35b34801561049f575f80fd5b506104ba60048036038101906104b5919061438c565b611189565b005b3480156104c7575f80fd5b506104d0611339565b6040516104dd9190613edf565b60405180910390f35b3480156104f1575f80fd5b5061050c6004803603810190610507919061442c565b611378565b6040516105199190613edf565b60405180910390f35b34801561052d575f80fd5b5061054860048036038101906105439190613f33565b611383565b6040516105559190613edf565b60405180910390f35b348015610569575f80fd5b506105726113b4565b60405161057f9190614472565b60405180910390f35b348015610593575f80fd5b506105ae60048036038101906105a9919061448b565b6113bc565b005b3480156105bb575f80fd5b506105d660048036038101906105d19190613f33565b6114fc565b6040516105e39190613edf565b60405180910390f35b3480156105f7575f80fd5b50610612600480360381019061060d91906140d3565b61152d565b60405161061f91906140ba565b60405180910390f35b348015610633575f80fd5b5061063c61155f565b60405161064991906140ba565b60405180910390f35b34801561065d575f80fd5b50610678600480360381019061067391906140d3565b611572565b6040516106859190613edf565b60405180910390f35b348015610699575f80fd5b506106a26115c0565b005b3480156106af575f80fd5b506106b861170e565b005b3480156106c5575f80fd5b506106ce6117b6565b6040516106db9190614472565b60405180910390f35b3480156106ef575f80fd5b506106f86117c9565b6040516107059190613edf565b60405180910390f35b348015610719575f80fd5b50610734600480360381019061072f919061442c565b6117cf565b6040516107419190613edf565b60405180910390f35b348015610755575f80fd5b5061075e6117da565b60405161076b91906144d8565b60405180910390f35b34801561077f575f80fd5b506107886117e8565b005b348015610795575f80fd5b5061079e6118b2565b6040516107ab91906144d8565b60405180910390f35b3480156107bf575f80fd5b506107c86118d9565b6040516107d59190613edf565b60405180910390f35b3480156107e9575f80fd5b506107f26118df565b6040516107ff9190613fe8565b60405180910390f35b348015610813575f80fd5b5061082e6004803603810190610829919061454a565b61196f565b005b34801561083b575f80fd5b50610856600480360381019061085191906140d3565b611aa2565b6040516108639190613edf565b60405180910390f35b348015610877575f80fd5b50610880611ab7565b60405161088d91906144d8565b60405180910390f35b3480156108a1575f80fd5b506108bc60048036038101906108b79190614062565b611adc565b6040516108c991906140ba565b60405180910390f35b3480156108dd575f80fd5b506108f860048036038101906108f391906145a7565b611af0565b005b348015610905575f80fd5b5061090e611cfe565b60405161091b91906140ba565b60405180910390f35b34801561092f575f80fd5b5061094a6004803603810190610945919061466b565b611d10565b005b348015610957575f80fd5b50610972600480360381019061096d919061454a565b611f96565b005b34801561097f575f80fd5b5061099a6004803603810190610995919061448b565b6120c9565b005b3480156109a7575f80fd5b506109c260048036038101906109bd9190613f33565b6121b5565b005b3480156109cf575f80fd5b506109ea60048036038101906109e591906146cf565b612270565b6040516109f79190613edf565b60405180910390f35b348015610a0b575f80fd5b50610a266004803603810190610a21919061470d565b6122f2565b005b348015610a33575f80fd5b50610a4e6004803603810190610a499190614062565b6124e9565b604051610a5b91906140ba565b60405180910390f35b348015610a6f575f80fd5b50610a8a6004803603810190610a8591906140d3565b61272a565b005b348015610a97575f80fd5b50610aa06128e7565b604051610aad91906147b8565b60405180910390f35b348015610ac1575f80fd5b50610aca61290c565b604051610ad791906140ba565b60405180910390f35b60235481565b610aee61291f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b719061481b565b60405180910390fd5b6001811015610bbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb590614883565b60405180910390fd5b6103e881600454610bcf91906148ce565b610bd9919061493c565b6005819055507fff98d32d8af489fb5c29c966064b014ddd95effa4c3479dccb082290ffa050a6600554604051610c109190613edf565b60405180910390a150565b606060028054610c2a90614999565b80601f0160208091040260200160405190810160405280929190818152602001828054610c5690614999565b8015610ca15780601f10610c7857610100808354040283529160200191610ca1565b820191905f5260205f20905b815481529060010190602001808311610c8457829003601f168201915b5050505050905090565b5f8160095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610d869190613edf565b60405180910390a36001905092915050565b6007602052805f5260405f205f915090505481565b5f82610db883612926565b11905092915050565b610dc961291f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4c9061481b565b60405180910390fd5b601e60149054906101000a900460ff16610e6d575f80fd5b5f601e60146101000a81548160ff021916908315150217905550565b60085481565b5f600454905090565b610ea061291f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f239061481b565b60405180910390fd5b6001811015610f39575f80fd5b6103e881600454610f4a91906148ce565b610f54919061493c565b6006819055507f1273be876d6df5e39545188e5f5d2d930e30e383f2fb2dc9dfaae2643901be51600654604051610f8b9190613edf565b60405180910390a150565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414611175576110f8826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e63650000000000000000000081525060095f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129969092919063ffffffff16565b60095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b6111808484846129f8565b90509392505050565b61119161291f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461121d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112149061481b565b60405180910390fd5b8051825114611261576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125890614a13565b60405180910390fd5b5f5b82518161ffff16101561133457818161ffff168151811061128757611286614a31565b5b602002602001015161129833611572565b10156112d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d090614aa8565b60405180910390fd5b61132033848361ffff16815181106112f4576112f3614a31565b5b6020026020010151848461ffff168151811061131357611312614a31565b5b60200260200101516131a0565b50808061132c90614ad3565b915050611263565b505050565b5f6113736113465f611572565b61136561135461dead611572565b60045461337790919063ffffffff16565b61337790919063ffffffff16565b905090565b5f6016549050919050565b5f6113ad60085461139f600454856133c090919063ffffffff16565b61343790919063ffffffff16565b9050919050565b5f6009905090565b6113c461291f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611450576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114479061481b565b60405180910390fd5b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f611526600454611518600854856133c090919063ffffffff16565b61343790919063ffffffff16565b9050919050565b5f611558827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610cab565b9050919050565b601e60159054906101000a900460ff1681565b5f6115b960075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611383565b9050919050565b6115c861291f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611654576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164b9061481b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61171661291f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117999061481b565b60405180910390fd5b600454600681905550600454600581905550565b601e60169054906101000a900460ff1681565b60055481565b5f6015549050919050565b5f6117e36118b2565b905090565b6117f061291f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461187c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118739061481b565b60405180910390fd5b601e60149054906101000a900460ff1615611895575f80fd5b6001601e60146101000a81548160ff021916908315150217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60065481565b6060600380546118ee90614999565b80601f016020809104026020016040519081016040528092919081815260200182805461191a90614999565b80156119655780601f1061193c57610100808354040283529160200191611965565b820191905f5260205f20905b81548152906001019060200180831161194857829003601f168201915b5050505050905090565b61197761291f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fa9061481b565b60405180910390fd5b5f5b83839050811015611a9c5781600b5f868685818110611a2757611a26614a31565b5b9050602002016020810190611a3c91906140d3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080611a9590614afc565b9050611a05565b50505050565b601f602052805f5260405f205f915090505481565b601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f611ae83384846129f8565b905092915050565b611af861291f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7b9061481b565b60405180910390fd5b88600d81905550876013819055508660118190555085600f81905550611bdf600f54611bd1601154611bc3601354600d5461348090919063ffffffff16565b61348090919063ffffffff16565b61348090919063ffffffff16565b60158190555083600e81905550826014819055508160128190555080601081905550611c40601054611c32601254611c24601454600e5461348090919063ffffffff16565b61348090919063ffffffff16565b61348090919063ffffffff16565b601681905550846017819055506001601754611c5c919061493c565b6015541115611ca0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9790614b8d565b60405180910390fd5b6001601754611caf919061493c565b6016541115611cf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cea90614bf5565b60405180910390fd5b505050505050505050565b60205f9054906101000a900460ff1681565b611d1861291f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611da4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9b9061481b565b60405180910390fd5b6032600454611db3919061493c565b8310611df4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611deb90614c5d565b60405180910390fd5b620186a0600454611e05919061493c565b8311611e46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3d90614ceb565b60405180910390fd5b6032600454611e55919061493c565b8210611e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8d90614c5d565b60405180910390fd5b620186a0600454611ea7919061493c565b8211611ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611edf90614ceb565b60405180910390fd5b80602060016101000a81548160ff0219169083151502179055508360205f6101000a81548160ff02191690831515021790555082602181905550816022819055506021546023819055507f1b21a6f0981d82826d83c7cb6ec42c702b3f4759368e947d004d1ac6c6a350c1602060019054906101000a900460ff1660205f9054906101000a900460ff16602154602254604051611f889493929190614d09565b60405180910390a150505050565b611f9e61291f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461202a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120219061481b565b60405180910390fd5b5f5b838390508110156120c35781600c5f86868581811061204e5761204d614a31565b5b905060200201602081019061206391906140d3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550806120bc90614afc565b905061202c565b50505050565b6120d161291f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461215d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121549061481b565b60405180910390fd5b80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f479050601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064848461220291906148ce565b61220c919061493c565b90811502906040515f60405180830381858888f19350505050158015612234573d5f803e3d5ffd5b507f024874b050ef5d5d90040914ceb89066ec34b5b1dc5ce9cf68ff59bd598a124f826040516122649190613edf565b60405180910390a15050565b5f60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6122fa61291f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612386576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237d9061481b565b60405180910390fd5b8260195f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd7fdb40ec018d4a1874293e1c569bec2adf78e8ed880973e28610c18ea3ca4bf60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516124dc93929190614d4c565b60405180910390a1505050565b5f6124f261291f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461257e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125759061481b565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e390614dcb565b60405180910390fd5b5f820361266e578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161262c91906144d8565b602060405180830381865afa158015612647573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061266b9190614dfd565b91505b7fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f838360405161269f929190614e28565b60405180910390a18273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b81526004016126e2929190614e28565b6020604051808303815f875af11580156126fe573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127229190614e63565b905092915050565b61273261291f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b59061481b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361282c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282390614efe565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601e60149054906101000a900460ff1681565b5f33905090565b5f61298f612932611339565b6129816129726002612964601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611572565b6133c090919063ffffffff16565b856133c090919063ffffffff16565b61343790919063ffffffff16565b9050919050565b5f8383111582906129dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d49190613fe8565b60405180910390fd5b505f83856129eb9190614f1c565b9050809150509392505050565b5f60245f9054906101000a900460ff1615612a1f57612a188484846131a0565b9050613199565b601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612aaa575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612b03575060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612b565750600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612d535760065482612b6885611572565b612b729190614f4f565b1115612bb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612baa90614fcc565b60405180910390fd5b601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612c1b5750601e60159054906101000a900460ff165b8015612c6e5750600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612d525742601f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410612cf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce990615034565b60405180910390fd5b601e60169054906101000a900460ff1660ff1642612d109190614f4f565b601f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612de757600554821115612de6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ddd9061509c565b60405180910390fd5b5b601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612e72575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612ec55750600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612f1a57601e60149054906101000a900460ff16612f19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f1090615104565b60405180910390fd5b5b612f226134dd565b15612f3057612f2f613579565b5b5f612f3a836114fc565b9050612fc3816040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060075f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129969092919063ffffffff16565b60075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f61300e86613b10565b801561301f575061301e85613b10565b5b6130295781613092565b613091601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614613086575f613089565b60015b878785613b63565b5b90506130e48160075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461348090919063ffffffff16565b60075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61317d84611383565b60405161318a9190613edf565b60405180910390a36001925050505b9392505050565b5f806131ab836114fc565b9050613234816040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060075f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129969092919063ffffffff16565b60075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506132c58160075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461348090919063ffffffff16565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516133639190613edf565b60405180910390a360019150509392505050565b5f6133b883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612996565b905092915050565b5f8083036133d0575f9050613431565b5f82846133dd91906148ce565b90508284826133ec919061493c565b1461342c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161342390615192565b60405180910390fd5b809150505b92915050565b5f61347883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613e66565b905092915050565b5f80828461348e9190614f4f565b9050838110156134d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134ca906151fa565b60405180910390fd5b8091505092915050565b5f601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015613547575060245f9054906101000a900460ff16155b801561355e575060205f9054906101000a900460ff165b8015613574575060235461357130611572565b10155b905090565b600160245f6101000a81548160ff0219169083151502179055505f6135a2601b54601c54610dad565b6135ae57600e546135b0565b5f5b90505f6135ca60145460165461337790919063ffffffff16565b90505f61360760026135f9846135eb876023546133c090919063ffffffff16565b61343790919063ffffffff16565b61343790919063ffffffff16565b90505f61361f8260235461337790919063ffffffff16565b90505f600267ffffffffffffffff81111561363d5761363c614190565b5b60405190808252806020026020018201604052801561366b5781602001602082028036833780820191505090505b50905030815f8151811061368257613681614a31565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106136f2576136f1614a31565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f479050601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8530426040518663ffffffff1660e01b8152600401613792959493929190615308565b5f604051808303815f87803b1580156137a9575f80fd5b505af11580156137bb573d5f803e3d5ffd5b505050505f6137d3824761337790919063ffffffff16565b90505f6137fc6137ed60028a61343790919063ffffffff16565b8861337790919063ffffffff16565b90505f613839600261382b8461381d600e54886133c090919063ffffffff16565b61343790919063ffffffff16565b61343790919063ffffffff16565b90505f61386383613855601254876133c090919063ffffffff16565b61343790919063ffffffff16565b90505f61388d8461387f601054886133c090919063ffffffff16565b61343790919063ffffffff16565b90505f60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040516138d59061538d565b5f6040518083038185875af1925050503d805f811461390f576040519150601f19603f3d011682016040523d82523d5f602084013e613914565b606091505b50509050601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161395d9061538d565b5f6040518083038185875af1925050503d805f8114613997576040519150601f19603f3d011682016040523d82523d5f602084013e61399c565b606091505b5050809150505f8a1115613aae57601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71985308d5f8060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613a30969594939291906153a1565b60606040518083038185885af1158015613a4c573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190613a719190615400565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506848b604051613aa5929190615450565b60405180910390a15b602060019054906101000a900460ff1615613adf5760215460235414613ad657602154613ada565b6022545b613ae3565b6023545b6023819055505050505050505050505050505f60245f6101000a81548160ff021916908315150217905550565b5f600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16159050919050565b5f806001151586151514613bf457613bef601754613be1613bd2601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614611378565b866133c090919063ffffffff16565b61343790919063ffffffff16565b613c73565b613c72601754613c64613c55601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146117cf565b866133c090919063ffffffff16565b61343790919063ffffffff16565b5b90505f6001151587151514613cb057613cab601654613c9d601454856133c090919063ffffffff16565b61343790919063ffffffff16565b613cda565b613cd9601554613ccb601354856133c090919063ffffffff16565b61343790919063ffffffff16565b5b9050613cf18160085461337790919063ffffffff16565b6008819055505f613d0b828461337790919063ffffffff16565b9050613d5d8160075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461348090919063ffffffff16565b60075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef613df684611383565b604051613e039190613edf565b60405180910390a37fc3b3cc73ac1faef58c428c22be6cb344acfd92a699c8cd758c753af27071b5ac82600854604051613e3e929190615450565b60405180910390a1613e59838661337790919063ffffffff16565b9350505050949350505050565b5f8083118290613eac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ea39190613fe8565b60405180910390fd5b505f8385613eba919061493c565b9050809150509392505050565b5f819050919050565b613ed981613ec7565b82525050565b5f602082019050613ef25f830184613ed0565b92915050565b5f604051905090565b5f80fd5b5f80fd5b613f1281613ec7565b8114613f1c575f80fd5b50565b5f81359050613f2d81613f09565b92915050565b5f60208284031215613f4857613f47613f01565b5b5f613f5584828501613f1f565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613f95578082015181840152602081019050613f7a565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613fba82613f5e565b613fc48185613f68565b9350613fd4818560208601613f78565b613fdd81613fa0565b840191505092915050565b5f6020820190508181035f8301526140008184613fb0565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61403182614008565b9050919050565b61404181614027565b811461404b575f80fd5b50565b5f8135905061405c81614038565b92915050565b5f806040838503121561407857614077613f01565b5b5f6140858582860161404e565b925050602061409685828601613f1f565b9150509250929050565b5f8115159050919050565b6140b4816140a0565b82525050565b5f6020820190506140cd5f8301846140ab565b92915050565b5f602082840312156140e8576140e7613f01565b5b5f6140f58482850161404e565b91505092915050565b5f806040838503121561411457614113613f01565b5b5f61412185828601613f1f565b925050602061413285828601613f1f565b9150509250929050565b5f805f6060848603121561415357614152613f01565b5b5f6141608682870161404e565b93505060206141718682870161404e565b925050604061418286828701613f1f565b9150509250925092565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6141c682613fa0565b810181811067ffffffffffffffff821117156141e5576141e4614190565b5b80604052505050565b5f6141f7613ef8565b905061420382826141bd565b919050565b5f67ffffffffffffffff82111561422257614221614190565b5b602082029050602081019050919050565b5f80fd5b5f61424961424484614208565b6141ee565b9050808382526020820190506020840283018581111561426c5761426b614233565b5b835b818110156142955780614281888261404e565b84526020840193505060208101905061426e565b5050509392505050565b5f82601f8301126142b3576142b261418c565b5b81356142c3848260208601614237565b91505092915050565b5f67ffffffffffffffff8211156142e6576142e5614190565b5b602082029050602081019050919050565b5f614309614304846142cc565b6141ee565b9050808382526020820190506020840283018581111561432c5761432b614233565b5b835b8181101561435557806143418882613f1f565b84526020840193505060208101905061432e565b5050509392505050565b5f82601f8301126143735761437261418c565b5b81356143838482602086016142f7565b91505092915050565b5f80604083850312156143a2576143a1613f01565b5b5f83013567ffffffffffffffff8111156143bf576143be613f05565b5b6143cb8582860161429f565b925050602083013567ffffffffffffffff8111156143ec576143eb613f05565b5b6143f88582860161435f565b9150509250929050565b61440b816140a0565b8114614415575f80fd5b50565b5f8135905061442681614402565b92915050565b5f6020828403121561444157614440613f01565b5b5f61444e84828501614418565b91505092915050565b5f60ff82169050919050565b61446c81614457565b82525050565b5f6020820190506144855f830184614463565b92915050565b5f80604083850312156144a1576144a0613f01565b5b5f6144ae8582860161404e565b92505060206144bf85828601614418565b9150509250929050565b6144d281614027565b82525050565b5f6020820190506144eb5f8301846144c9565b92915050565b5f80fd5b5f8083601f84011261450a5761450961418c565b5b8235905067ffffffffffffffff811115614527576145266144f1565b5b60208301915083602082028301111561454357614542614233565b5b9250929050565b5f805f6040848603121561456157614560613f01565b5b5f84013567ffffffffffffffff81111561457e5761457d613f05565b5b61458a868287016144f5565b9350935050602061459d86828701614418565b9150509250925092565b5f805f805f805f805f6101208a8c0312156145c5576145c4613f01565b5b5f6145d28c828d01613f1f565b99505060206145e38c828d01613f1f565b98505060406145f48c828d01613f1f565b97505060606146058c828d01613f1f565b96505060806146168c828d01613f1f565b95505060a06146278c828d01613f1f565b94505060c06146388c828d01613f1f565b93505060e06146498c828d01613f1f565b92505061010061465b8c828d01613f1f565b9150509295985092959850929598565b5f805f806080858703121561468357614682613f01565b5b5f61469087828801614418565b94505060206146a187828801613f1f565b93505060406146b287828801613f1f565b92505060606146c387828801614418565b91505092959194509250565b5f80604083850312156146e5576146e4613f01565b5b5f6146f28582860161404e565b92505060206147038582860161404e565b9150509250929050565b5f805f6060848603121561472457614723613f01565b5b5f6147318682870161404e565b93505060206147428682870161404e565b92505060406147538682870161404e565b9150509250925092565b5f819050919050565b5f61478061477b61477684614008565b61475d565b614008565b9050919050565b5f61479182614766565b9050919050565b5f6147a282614787565b9050919050565b6147b281614798565b82525050565b5f6020820190506147cb5f8301846147a9565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f614805602083613f68565b9150614810826147d1565b602082019050919050565b5f6020820190508181035f830152614832816147f9565b9050919050565b7f43616e6e6f7420736574206d61782054582062656c6f77202e312500000000005f82015250565b5f61486d601b83613f68565b915061487882614839565b602082019050919050565b5f6020820190508181035f83015261489a81614861565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6148d882613ec7565b91506148e383613ec7565b92508282026148f181613ec7565b91508282048414831517614908576149076148a1565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61494682613ec7565b915061495183613ec7565b9250826149615761496061490f565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806149b057607f821691505b6020821081036149c3576149c261496c565b5b50919050565b7f4c656e6774687320646f206e6f74206d617463682e00000000000000000000005f82015250565b5f6149fd601583613f68565b9150614a08826149c9565b602082019050919050565b5f6020820190508181035f830152614a2a816149f1565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000005f82015250565b5f614a92601283613f68565b9150614a9d82614a5e565b602082019050919050565b5f6020820190508181035f830152614abf81614a86565b9050919050565b5f61ffff82169050919050565b5f614add82614ac6565b915061ffff8203614af157614af06148a1565b5b600182019050919050565b5f614b0682613ec7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614b3857614b376148a1565b5b600182019050919050565b7f43616e6e6f74207365742062757920666565732061626f7665203230250000005f82015250565b5f614b77601d83613f68565b9150614b8282614b43565b602082019050919050565b5f6020820190508181035f830152614ba481614b6b565b9050919050565b7f43616e6e6f74207365742073656c6c20666565732061626f76652032302500005f82015250565b5f614bdf601e83613f68565b9150614bea82614bab565b602082019050919050565b5f6020820190508181035f830152614c0c81614bd3565b9050919050565b7f43616e6e6f7420736574207377617020616d6f756e742061626f7665203225005f82015250565b5f614c47601f83613f68565b9150614c5282614c13565b602082019050919050565b5f6020820190508181035f830152614c7481614c3b565b9050919050565b7f43616e6e6f7420736574207377617020616d6f756e742062656c6f7720302e305f8201527f3031250000000000000000000000000000000000000000000000000000000000602082015250565b5f614cd5602383613f68565b9150614ce082614c7b565b604082019050919050565b5f6020820190508181035f830152614d0281614cc9565b9050919050565b5f608082019050614d1c5f8301876140ab565b614d2960208301866140ab565b614d366040830185613ed0565b614d436060830184613ed0565b95945050505050565b5f606082019050614d5f5f8301866144c9565b614d6c60208301856144c9565b614d7960408301846144c9565b949350505050565b7f4f776e65722063616e6e6f7420636c61696d206e617469766520746f6b656e735f82015250565b5f614db5602083613f68565b9150614dc082614d81565b602082019050919050565b5f6020820190508181035f830152614de281614da9565b9050919050565b5f81519050614df781613f09565b92915050565b5f60208284031215614e1257614e11613f01565b5b5f614e1f84828501614de9565b91505092915050565b5f604082019050614e3b5f8301856144c9565b614e486020830184613ed0565b9392505050565b5f81519050614e5d81614402565b92915050565b5f60208284031215614e7857614e77613f01565b5b5f614e8584828501614e4f565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f614ee8602683613f68565b9150614ef382614e8e565b604082019050919050565b5f6020820190508181035f830152614f1581614edc565b9050919050565b5f614f2682613ec7565b9150614f3183613ec7565b9250828203905081811115614f4957614f486148a1565b5b92915050565b5f614f5982613ec7565b9150614f6483613ec7565b9250828201905080821115614f7c57614f7b6148a1565b5b92915050565b7f4d61782057616c6c6574204578636565646564000000000000000000000000005f82015250565b5f614fb6601383613f68565b9150614fc182614f82565b602082019050919050565b5f6020820190508181035f830152614fe381614faa565b9050919050565b7f506c65617365207761697420666f72206265747765656e2062757973000000005f82015250565b5f61501e601c83613f68565b915061502982614fea565b602082019050919050565b5f6020820190508181035f83015261504b81615012565b9050919050565b7f5472616e73616374696f6e20416d6f756e7420457863656564656400000000005f82015250565b5f615086601b83613f68565b915061509182615052565b602082019050919050565b5f6020820190508181035f8301526150b38161507a565b9050919050565b7f54726164696e67206e6f74206f70656e207965740000000000000000000000005f82015250565b5f6150ee601483613f68565b91506150f9826150ba565b602082019050919050565b5f6020820190508181035f83015261511b816150e2565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61517c602183613f68565b915061518782615122565b604082019050919050565b5f6020820190508181035f8301526151a981615170565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6151e4601b83613f68565b91506151ef826151b0565b602082019050919050565b5f6020820190508181035f830152615211816151d8565b9050919050565b5f819050919050565b5f61523b61523661523184615218565b61475d565b613ec7565b9050919050565b61524b81615221565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61528381614027565b82525050565b5f615294838361527a565b60208301905092915050565b5f602082019050919050565b5f6152b682615251565b6152c0818561525b565b93506152cb8361526b565b805f5b838110156152fb5781516152e28882615289565b97506152ed836152a0565b9250506001810190506152ce565b5085935050505092915050565b5f60a08201905061531b5f830188613ed0565b6153286020830187615242565b818103604083015261533a81866152ac565b905061534960608301856144c9565b6153566080830184613ed0565b9695505050505050565b5f81905092915050565b50565b5f6153785f83615360565b91506153838261536a565b5f82019050919050565b5f6153978261536d565b9150819050919050565b5f60c0820190506153b45f8301896144c9565b6153c16020830188613ed0565b6153ce6040830187615242565b6153db6060830186615242565b6153e860808301856144c9565b6153f560a0830184613ed0565b979650505050505050565b5f805f6060848603121561541757615416613f01565b5b5f61542486828701614de9565b935050602061543586828701614de9565b925050604061544686828701614de9565b9150509250925092565b5f6040820190506154635f830185613ed0565b6154706020830184613ed0565b939250505056fea2646970667358221220e5c461735600e18871e83ab9f34f1293765133b80b7b1a6bded6209c5ee6b09464736f6c634300081500330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000957414c544552494e55000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000052457494e55000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x60806040526004361061028b575f3560e01c80637c4e1b5511610159578063add5df66116100c0578063dd62ed3e11610079578063dd62ed3e146109c4578063e4b8659e14610a00578063f0a9e36514610a28578063f2fde38b14610a64578063f887ea4014610a8c578063ffb54a9914610ab657610292565b8063add5df66146108d2578063b0f7ec38146108fa578063bdc512c614610924578063c4c3641f1461094c578063d11a593f14610974578063d78e139d1461099c57610292565b80638f9a55c0116101125780638f9a55c0146107b457806395d89b41146107de578063a1dbe40714610808578063a737ec3e14610830578063a8aa1b311461086c578063a9059cbb1461089657610292565b80637c4e1b55146106ba5780637d1db4a5146106e4578063832790fe1461070e578063893d20e81461074a5780638a8c523c146107745780638da5cb5b1461078a57610292565b80632610eaca116101fd57806345ce5365116101b657806345ce5365146105b0578063571ac8b0146105ec578063617fe0ed1461062857806370a0823114610652578063715018a61461068e578063751039fc146106a457610292565b80632610eaca146104945780632b112e49146104bc5780632d44c931146104e65780632d83811914610522578063313ce5671461055e5780633cd17c961461058857610292565b80631161ae391161024f5780631161ae391461038a57806317700f01146103c657806317800287146103dc57806318160ddd146104065780631c499ab01461043057806323b872dd1461045857610292565b80630445b667146102965780630517d13d146102c057806306fdde03146102e8578063095ea7b3146103125780630cfc15f91461034e57610292565b3661029257005b5f80fd5b3480156102a1575f80fd5b506102aa610ae0565b6040516102b79190613edf565b60405180910390f35b3480156102cb575f80fd5b506102e660048036038101906102e19190613f33565b610ae6565b005b3480156102f3575f80fd5b506102fc610c1b565b6040516103099190613fe8565b60405180910390f35b34801561031d575f80fd5b5061033860048036038101906103339190614062565b610cab565b60405161034591906140ba565b60405180910390f35b348015610359575f80fd5b50610374600480360381019061036f91906140d3565b610d98565b6040516103819190613edf565b60405180910390f35b348015610395575f80fd5b506103b060048036038101906103ab91906140fe565b610dad565b6040516103bd91906140ba565b60405180910390f35b3480156103d1575f80fd5b506103da610dc1565b005b3480156103e7575f80fd5b506103f0610e89565b6040516103fd9190613edf565b60405180910390f35b348015610411575f80fd5b5061041a610e8f565b6040516104279190613edf565b60405180910390f35b34801561043b575f80fd5b5061045660048036038101906104519190613f33565b610e98565b005b348015610463575f80fd5b5061047e6004803603810190610479919061413c565b610f96565b60405161048b91906140ba565b60405180910390f35b34801561049f575f80fd5b506104ba60048036038101906104b5919061438c565b611189565b005b3480156104c7575f80fd5b506104d0611339565b6040516104dd9190613edf565b60405180910390f35b3480156104f1575f80fd5b5061050c6004803603810190610507919061442c565b611378565b6040516105199190613edf565b60405180910390f35b34801561052d575f80fd5b5061054860048036038101906105439190613f33565b611383565b6040516105559190613edf565b60405180910390f35b348015610569575f80fd5b506105726113b4565b60405161057f9190614472565b60405180910390f35b348015610593575f80fd5b506105ae60048036038101906105a9919061448b565b6113bc565b005b3480156105bb575f80fd5b506105d660048036038101906105d19190613f33565b6114fc565b6040516105e39190613edf565b60405180910390f35b3480156105f7575f80fd5b50610612600480360381019061060d91906140d3565b61152d565b60405161061f91906140ba565b60405180910390f35b348015610633575f80fd5b5061063c61155f565b60405161064991906140ba565b60405180910390f35b34801561065d575f80fd5b50610678600480360381019061067391906140d3565b611572565b6040516106859190613edf565b60405180910390f35b348015610699575f80fd5b506106a26115c0565b005b3480156106af575f80fd5b506106b861170e565b005b3480156106c5575f80fd5b506106ce6117b6565b6040516106db9190614472565b60405180910390f35b3480156106ef575f80fd5b506106f86117c9565b6040516107059190613edf565b60405180910390f35b348015610719575f80fd5b50610734600480360381019061072f919061442c565b6117cf565b6040516107419190613edf565b60405180910390f35b348015610755575f80fd5b5061075e6117da565b60405161076b91906144d8565b60405180910390f35b34801561077f575f80fd5b506107886117e8565b005b348015610795575f80fd5b5061079e6118b2565b6040516107ab91906144d8565b60405180910390f35b3480156107bf575f80fd5b506107c86118d9565b6040516107d59190613edf565b60405180910390f35b3480156107e9575f80fd5b506107f26118df565b6040516107ff9190613fe8565b60405180910390f35b348015610813575f80fd5b5061082e6004803603810190610829919061454a565b61196f565b005b34801561083b575f80fd5b50610856600480360381019061085191906140d3565b611aa2565b6040516108639190613edf565b60405180910390f35b348015610877575f80fd5b50610880611ab7565b60405161088d91906144d8565b60405180910390f35b3480156108a1575f80fd5b506108bc60048036038101906108b79190614062565b611adc565b6040516108c991906140ba565b60405180910390f35b3480156108dd575f80fd5b506108f860048036038101906108f391906145a7565b611af0565b005b348015610905575f80fd5b5061090e611cfe565b60405161091b91906140ba565b60405180910390f35b34801561092f575f80fd5b5061094a6004803603810190610945919061466b565b611d10565b005b348015610957575f80fd5b50610972600480360381019061096d919061454a565b611f96565b005b34801561097f575f80fd5b5061099a6004803603810190610995919061448b565b6120c9565b005b3480156109a7575f80fd5b506109c260048036038101906109bd9190613f33565b6121b5565b005b3480156109cf575f80fd5b506109ea60048036038101906109e591906146cf565b612270565b6040516109f79190613edf565b60405180910390f35b348015610a0b575f80fd5b50610a266004803603810190610a21919061470d565b6122f2565b005b348015610a33575f80fd5b50610a4e6004803603810190610a499190614062565b6124e9565b604051610a5b91906140ba565b60405180910390f35b348015610a6f575f80fd5b50610a8a6004803603810190610a8591906140d3565b61272a565b005b348015610a97575f80fd5b50610aa06128e7565b604051610aad91906147b8565b60405180910390f35b348015610ac1575f80fd5b50610aca61290c565b604051610ad791906140ba565b60405180910390f35b60235481565b610aee61291f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b719061481b565b60405180910390fd5b6001811015610bbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb590614883565b60405180910390fd5b6103e881600454610bcf91906148ce565b610bd9919061493c565b6005819055507fff98d32d8af489fb5c29c966064b014ddd95effa4c3479dccb082290ffa050a6600554604051610c109190613edf565b60405180910390a150565b606060028054610c2a90614999565b80601f0160208091040260200160405190810160405280929190818152602001828054610c5690614999565b8015610ca15780601f10610c7857610100808354040283529160200191610ca1565b820191905f5260205f20905b815481529060010190602001808311610c8457829003601f168201915b5050505050905090565b5f8160095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610d869190613edf565b60405180910390a36001905092915050565b6007602052805f5260405f205f915090505481565b5f82610db883612926565b11905092915050565b610dc961291f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4c9061481b565b60405180910390fd5b601e60149054906101000a900460ff16610e6d575f80fd5b5f601e60146101000a81548160ff021916908315150217905550565b60085481565b5f600454905090565b610ea061291f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f239061481b565b60405180910390fd5b6001811015610f39575f80fd5b6103e881600454610f4a91906148ce565b610f54919061493c565b6006819055507f1273be876d6df5e39545188e5f5d2d930e30e383f2fb2dc9dfaae2643901be51600654604051610f8b9190613edf565b60405180910390a150565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414611175576110f8826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e63650000000000000000000081525060095f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129969092919063ffffffff16565b60095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b6111808484846129f8565b90509392505050565b61119161291f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461121d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112149061481b565b60405180910390fd5b8051825114611261576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125890614a13565b60405180910390fd5b5f5b82518161ffff16101561133457818161ffff168151811061128757611286614a31565b5b602002602001015161129833611572565b10156112d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d090614aa8565b60405180910390fd5b61132033848361ffff16815181106112f4576112f3614a31565b5b6020026020010151848461ffff168151811061131357611312614a31565b5b60200260200101516131a0565b50808061132c90614ad3565b915050611263565b505050565b5f6113736113465f611572565b61136561135461dead611572565b60045461337790919063ffffffff16565b61337790919063ffffffff16565b905090565b5f6016549050919050565b5f6113ad60085461139f600454856133c090919063ffffffff16565b61343790919063ffffffff16565b9050919050565b5f6009905090565b6113c461291f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611450576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114479061481b565b60405180910390fd5b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f611526600454611518600854856133c090919063ffffffff16565b61343790919063ffffffff16565b9050919050565b5f611558827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610cab565b9050919050565b601e60159054906101000a900460ff1681565b5f6115b960075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611383565b9050919050565b6115c861291f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611654576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164b9061481b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61171661291f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117999061481b565b60405180910390fd5b600454600681905550600454600581905550565b601e60169054906101000a900460ff1681565b60055481565b5f6015549050919050565b5f6117e36118b2565b905090565b6117f061291f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461187c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118739061481b565b60405180910390fd5b601e60149054906101000a900460ff1615611895575f80fd5b6001601e60146101000a81548160ff021916908315150217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60065481565b6060600380546118ee90614999565b80601f016020809104026020016040519081016040528092919081815260200182805461191a90614999565b80156119655780601f1061193c57610100808354040283529160200191611965565b820191905f5260205f20905b81548152906001019060200180831161194857829003601f168201915b5050505050905090565b61197761291f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fa9061481b565b60405180910390fd5b5f5b83839050811015611a9c5781600b5f868685818110611a2757611a26614a31565b5b9050602002016020810190611a3c91906140d3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080611a9590614afc565b9050611a05565b50505050565b601f602052805f5260405f205f915090505481565b601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f611ae83384846129f8565b905092915050565b611af861291f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7b9061481b565b60405180910390fd5b88600d81905550876013819055508660118190555085600f81905550611bdf600f54611bd1601154611bc3601354600d5461348090919063ffffffff16565b61348090919063ffffffff16565b61348090919063ffffffff16565b60158190555083600e81905550826014819055508160128190555080601081905550611c40601054611c32601254611c24601454600e5461348090919063ffffffff16565b61348090919063ffffffff16565b61348090919063ffffffff16565b601681905550846017819055506001601754611c5c919061493c565b6015541115611ca0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9790614b8d565b60405180910390fd5b6001601754611caf919061493c565b6016541115611cf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cea90614bf5565b60405180910390fd5b505050505050505050565b60205f9054906101000a900460ff1681565b611d1861291f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611da4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9b9061481b565b60405180910390fd5b6032600454611db3919061493c565b8310611df4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611deb90614c5d565b60405180910390fd5b620186a0600454611e05919061493c565b8311611e46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3d90614ceb565b60405180910390fd5b6032600454611e55919061493c565b8210611e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8d90614c5d565b60405180910390fd5b620186a0600454611ea7919061493c565b8211611ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611edf90614ceb565b60405180910390fd5b80602060016101000a81548160ff0219169083151502179055508360205f6101000a81548160ff02191690831515021790555082602181905550816022819055506021546023819055507f1b21a6f0981d82826d83c7cb6ec42c702b3f4759368e947d004d1ac6c6a350c1602060019054906101000a900460ff1660205f9054906101000a900460ff16602154602254604051611f889493929190614d09565b60405180910390a150505050565b611f9e61291f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461202a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120219061481b565b60405180910390fd5b5f5b838390508110156120c35781600c5f86868581811061204e5761204d614a31565b5b905060200201602081019061206391906140d3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550806120bc90614afc565b905061202c565b50505050565b6120d161291f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461215d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121549061481b565b60405180910390fd5b80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f479050601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064848461220291906148ce565b61220c919061493c565b90811502906040515f60405180830381858888f19350505050158015612234573d5f803e3d5ffd5b507f024874b050ef5d5d90040914ceb89066ec34b5b1dc5ce9cf68ff59bd598a124f826040516122649190613edf565b60405180910390a15050565b5f60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6122fa61291f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612386576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237d9061481b565b60405180910390fd5b8260195f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd7fdb40ec018d4a1874293e1c569bec2adf78e8ed880973e28610c18ea3ca4bf60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516124dc93929190614d4c565b60405180910390a1505050565b5f6124f261291f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461257e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125759061481b565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e390614dcb565b60405180910390fd5b5f820361266e578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161262c91906144d8565b602060405180830381865afa158015612647573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061266b9190614dfd565b91505b7fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f838360405161269f929190614e28565b60405180910390a18273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b81526004016126e2929190614e28565b6020604051808303815f875af11580156126fe573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127229190614e63565b905092915050565b61273261291f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b59061481b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361282c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282390614efe565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601e60149054906101000a900460ff1681565b5f33905090565b5f61298f612932611339565b6129816129726002612964601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611572565b6133c090919063ffffffff16565b856133c090919063ffffffff16565b61343790919063ffffffff16565b9050919050565b5f8383111582906129dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d49190613fe8565b60405180910390fd5b505f83856129eb9190614f1c565b9050809150509392505050565b5f60245f9054906101000a900460ff1615612a1f57612a188484846131a0565b9050613199565b601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612aaa575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612b03575060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612b565750600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612d535760065482612b6885611572565b612b729190614f4f565b1115612bb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612baa90614fcc565b60405180910390fd5b601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612c1b5750601e60159054906101000a900460ff165b8015612c6e5750600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612d525742601f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410612cf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce990615034565b60405180910390fd5b601e60169054906101000a900460ff1660ff1642612d109190614f4f565b601f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612de757600554821115612de6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ddd9061509c565b60405180910390fd5b5b601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612e72575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612ec55750600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612f1a57601e60149054906101000a900460ff16612f19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f1090615104565b60405180910390fd5b5b612f226134dd565b15612f3057612f2f613579565b5b5f612f3a836114fc565b9050612fc3816040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060075f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129969092919063ffffffff16565b60075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f61300e86613b10565b801561301f575061301e85613b10565b5b6130295781613092565b613091601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614613086575f613089565b60015b878785613b63565b5b90506130e48160075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461348090919063ffffffff16565b60075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61317d84611383565b60405161318a9190613edf565b60405180910390a36001925050505b9392505050565b5f806131ab836114fc565b9050613234816040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060075f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129969092919063ffffffff16565b60075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506132c58160075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461348090919063ffffffff16565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516133639190613edf565b60405180910390a360019150509392505050565b5f6133b883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612996565b905092915050565b5f8083036133d0575f9050613431565b5f82846133dd91906148ce565b90508284826133ec919061493c565b1461342c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161342390615192565b60405180910390fd5b809150505b92915050565b5f61347883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613e66565b905092915050565b5f80828461348e9190614f4f565b9050838110156134d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134ca906151fa565b60405180910390fd5b8091505092915050565b5f601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015613547575060245f9054906101000a900460ff16155b801561355e575060205f9054906101000a900460ff165b8015613574575060235461357130611572565b10155b905090565b600160245f6101000a81548160ff0219169083151502179055505f6135a2601b54601c54610dad565b6135ae57600e546135b0565b5f5b90505f6135ca60145460165461337790919063ffffffff16565b90505f61360760026135f9846135eb876023546133c090919063ffffffff16565b61343790919063ffffffff16565b61343790919063ffffffff16565b90505f61361f8260235461337790919063ffffffff16565b90505f600267ffffffffffffffff81111561363d5761363c614190565b5b60405190808252806020026020018201604052801561366b5781602001602082028036833780820191505090505b50905030815f8151811061368257613681614a31565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106136f2576136f1614a31565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f479050601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8530426040518663ffffffff1660e01b8152600401613792959493929190615308565b5f604051808303815f87803b1580156137a9575f80fd5b505af11580156137bb573d5f803e3d5ffd5b505050505f6137d3824761337790919063ffffffff16565b90505f6137fc6137ed60028a61343790919063ffffffff16565b8861337790919063ffffffff16565b90505f613839600261382b8461381d600e54886133c090919063ffffffff16565b61343790919063ffffffff16565b61343790919063ffffffff16565b90505f61386383613855601254876133c090919063ffffffff16565b61343790919063ffffffff16565b90505f61388d8461387f601054886133c090919063ffffffff16565b61343790919063ffffffff16565b90505f60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040516138d59061538d565b5f6040518083038185875af1925050503d805f811461390f576040519150601f19603f3d011682016040523d82523d5f602084013e613914565b606091505b50509050601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161395d9061538d565b5f6040518083038185875af1925050503d805f8114613997576040519150601f19603f3d011682016040523d82523d5f602084013e61399c565b606091505b5050809150505f8a1115613aae57601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71985308d5f8060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613a30969594939291906153a1565b60606040518083038185885af1158015613a4c573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190613a719190615400565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506848b604051613aa5929190615450565b60405180910390a15b602060019054906101000a900460ff1615613adf5760215460235414613ad657602154613ada565b6022545b613ae3565b6023545b6023819055505050505050505050505050505f60245f6101000a81548160ff021916908315150217905550565b5f600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16159050919050565b5f806001151586151514613bf457613bef601754613be1613bd2601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614611378565b866133c090919063ffffffff16565b61343790919063ffffffff16565b613c73565b613c72601754613c64613c55601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146117cf565b866133c090919063ffffffff16565b61343790919063ffffffff16565b5b90505f6001151587151514613cb057613cab601654613c9d601454856133c090919063ffffffff16565b61343790919063ffffffff16565b613cda565b613cd9601554613ccb601354856133c090919063ffffffff16565b61343790919063ffffffff16565b5b9050613cf18160085461337790919063ffffffff16565b6008819055505f613d0b828461337790919063ffffffff16565b9050613d5d8160075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461348090919063ffffffff16565b60075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef613df684611383565b604051613e039190613edf565b60405180910390a37fc3b3cc73ac1faef58c428c22be6cb344acfd92a699c8cd758c753af27071b5ac82600854604051613e3e929190615450565b60405180910390a1613e59838661337790919063ffffffff16565b9350505050949350505050565b5f8083118290613eac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ea39190613fe8565b60405180910390fd5b505f8385613eba919061493c565b9050809150509392505050565b5f819050919050565b613ed981613ec7565b82525050565b5f602082019050613ef25f830184613ed0565b92915050565b5f604051905090565b5f80fd5b5f80fd5b613f1281613ec7565b8114613f1c575f80fd5b50565b5f81359050613f2d81613f09565b92915050565b5f60208284031215613f4857613f47613f01565b5b5f613f5584828501613f1f565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613f95578082015181840152602081019050613f7a565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613fba82613f5e565b613fc48185613f68565b9350613fd4818560208601613f78565b613fdd81613fa0565b840191505092915050565b5f6020820190508181035f8301526140008184613fb0565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61403182614008565b9050919050565b61404181614027565b811461404b575f80fd5b50565b5f8135905061405c81614038565b92915050565b5f806040838503121561407857614077613f01565b5b5f6140858582860161404e565b925050602061409685828601613f1f565b9150509250929050565b5f8115159050919050565b6140b4816140a0565b82525050565b5f6020820190506140cd5f8301846140ab565b92915050565b5f602082840312156140e8576140e7613f01565b5b5f6140f58482850161404e565b91505092915050565b5f806040838503121561411457614113613f01565b5b5f61412185828601613f1f565b925050602061413285828601613f1f565b9150509250929050565b5f805f6060848603121561415357614152613f01565b5b5f6141608682870161404e565b93505060206141718682870161404e565b925050604061418286828701613f1f565b9150509250925092565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6141c682613fa0565b810181811067ffffffffffffffff821117156141e5576141e4614190565b5b80604052505050565b5f6141f7613ef8565b905061420382826141bd565b919050565b5f67ffffffffffffffff82111561422257614221614190565b5b602082029050602081019050919050565b5f80fd5b5f61424961424484614208565b6141ee565b9050808382526020820190506020840283018581111561426c5761426b614233565b5b835b818110156142955780614281888261404e565b84526020840193505060208101905061426e565b5050509392505050565b5f82601f8301126142b3576142b261418c565b5b81356142c3848260208601614237565b91505092915050565b5f67ffffffffffffffff8211156142e6576142e5614190565b5b602082029050602081019050919050565b5f614309614304846142cc565b6141ee565b9050808382526020820190506020840283018581111561432c5761432b614233565b5b835b8181101561435557806143418882613f1f565b84526020840193505060208101905061432e565b5050509392505050565b5f82601f8301126143735761437261418c565b5b81356143838482602086016142f7565b91505092915050565b5f80604083850312156143a2576143a1613f01565b5b5f83013567ffffffffffffffff8111156143bf576143be613f05565b5b6143cb8582860161429f565b925050602083013567ffffffffffffffff8111156143ec576143eb613f05565b5b6143f88582860161435f565b9150509250929050565b61440b816140a0565b8114614415575f80fd5b50565b5f8135905061442681614402565b92915050565b5f6020828403121561444157614440613f01565b5b5f61444e84828501614418565b91505092915050565b5f60ff82169050919050565b61446c81614457565b82525050565b5f6020820190506144855f830184614463565b92915050565b5f80604083850312156144a1576144a0613f01565b5b5f6144ae8582860161404e565b92505060206144bf85828601614418565b9150509250929050565b6144d281614027565b82525050565b5f6020820190506144eb5f8301846144c9565b92915050565b5f80fd5b5f8083601f84011261450a5761450961418c565b5b8235905067ffffffffffffffff811115614527576145266144f1565b5b60208301915083602082028301111561454357614542614233565b5b9250929050565b5f805f6040848603121561456157614560613f01565b5b5f84013567ffffffffffffffff81111561457e5761457d613f05565b5b61458a868287016144f5565b9350935050602061459d86828701614418565b9150509250925092565b5f805f805f805f805f6101208a8c0312156145c5576145c4613f01565b5b5f6145d28c828d01613f1f565b99505060206145e38c828d01613f1f565b98505060406145f48c828d01613f1f565b97505060606146058c828d01613f1f565b96505060806146168c828d01613f1f565b95505060a06146278c828d01613f1f565b94505060c06146388c828d01613f1f565b93505060e06146498c828d01613f1f565b92505061010061465b8c828d01613f1f565b9150509295985092959850929598565b5f805f806080858703121561468357614682613f01565b5b5f61469087828801614418565b94505060206146a187828801613f1f565b93505060406146b287828801613f1f565b92505060606146c387828801614418565b91505092959194509250565b5f80604083850312156146e5576146e4613f01565b5b5f6146f28582860161404e565b92505060206147038582860161404e565b9150509250929050565b5f805f6060848603121561472457614723613f01565b5b5f6147318682870161404e565b93505060206147428682870161404e565b92505060406147538682870161404e565b9150509250925092565b5f819050919050565b5f61478061477b61477684614008565b61475d565b614008565b9050919050565b5f61479182614766565b9050919050565b5f6147a282614787565b9050919050565b6147b281614798565b82525050565b5f6020820190506147cb5f8301846147a9565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f614805602083613f68565b9150614810826147d1565b602082019050919050565b5f6020820190508181035f830152614832816147f9565b9050919050565b7f43616e6e6f7420736574206d61782054582062656c6f77202e312500000000005f82015250565b5f61486d601b83613f68565b915061487882614839565b602082019050919050565b5f6020820190508181035f83015261489a81614861565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6148d882613ec7565b91506148e383613ec7565b92508282026148f181613ec7565b91508282048414831517614908576149076148a1565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61494682613ec7565b915061495183613ec7565b9250826149615761496061490f565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806149b057607f821691505b6020821081036149c3576149c261496c565b5b50919050565b7f4c656e6774687320646f206e6f74206d617463682e00000000000000000000005f82015250565b5f6149fd601583613f68565b9150614a08826149c9565b602082019050919050565b5f6020820190508181035f830152614a2a816149f1565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000005f82015250565b5f614a92601283613f68565b9150614a9d82614a5e565b602082019050919050565b5f6020820190508181035f830152614abf81614a86565b9050919050565b5f61ffff82169050919050565b5f614add82614ac6565b915061ffff8203614af157614af06148a1565b5b600182019050919050565b5f614b0682613ec7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614b3857614b376148a1565b5b600182019050919050565b7f43616e6e6f74207365742062757920666565732061626f7665203230250000005f82015250565b5f614b77601d83613f68565b9150614b8282614b43565b602082019050919050565b5f6020820190508181035f830152614ba481614b6b565b9050919050565b7f43616e6e6f74207365742073656c6c20666565732061626f76652032302500005f82015250565b5f614bdf601e83613f68565b9150614bea82614bab565b602082019050919050565b5f6020820190508181035f830152614c0c81614bd3565b9050919050565b7f43616e6e6f7420736574207377617020616d6f756e742061626f7665203225005f82015250565b5f614c47601f83613f68565b9150614c5282614c13565b602082019050919050565b5f6020820190508181035f830152614c7481614c3b565b9050919050565b7f43616e6e6f7420736574207377617020616d6f756e742062656c6f7720302e305f8201527f3031250000000000000000000000000000000000000000000000000000000000602082015250565b5f614cd5602383613f68565b9150614ce082614c7b565b604082019050919050565b5f6020820190508181035f830152614d0281614cc9565b9050919050565b5f608082019050614d1c5f8301876140ab565b614d2960208301866140ab565b614d366040830185613ed0565b614d436060830184613ed0565b95945050505050565b5f606082019050614d5f5f8301866144c9565b614d6c60208301856144c9565b614d7960408301846144c9565b949350505050565b7f4f776e65722063616e6e6f7420636c61696d206e617469766520746f6b656e735f82015250565b5f614db5602083613f68565b9150614dc082614d81565b602082019050919050565b5f6020820190508181035f830152614de281614da9565b9050919050565b5f81519050614df781613f09565b92915050565b5f60208284031215614e1257614e11613f01565b5b5f614e1f84828501614de9565b91505092915050565b5f604082019050614e3b5f8301856144c9565b614e486020830184613ed0565b9392505050565b5f81519050614e5d81614402565b92915050565b5f60208284031215614e7857614e77613f01565b5b5f614e8584828501614e4f565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f614ee8602683613f68565b9150614ef382614e8e565b604082019050919050565b5f6020820190508181035f830152614f1581614edc565b9050919050565b5f614f2682613ec7565b9150614f3183613ec7565b9250828203905081811115614f4957614f486148a1565b5b92915050565b5f614f5982613ec7565b9150614f6483613ec7565b9250828201905080821115614f7c57614f7b6148a1565b5b92915050565b7f4d61782057616c6c6574204578636565646564000000000000000000000000005f82015250565b5f614fb6601383613f68565b9150614fc182614f82565b602082019050919050565b5f6020820190508181035f830152614fe381614faa565b9050919050565b7f506c65617365207761697420666f72206265747765656e2062757973000000005f82015250565b5f61501e601c83613f68565b915061502982614fea565b602082019050919050565b5f6020820190508181035f83015261504b81615012565b9050919050565b7f5472616e73616374696f6e20416d6f756e7420457863656564656400000000005f82015250565b5f615086601b83613f68565b915061509182615052565b602082019050919050565b5f6020820190508181035f8301526150b38161507a565b9050919050565b7f54726164696e67206e6f74206f70656e207965740000000000000000000000005f82015250565b5f6150ee601483613f68565b91506150f9826150ba565b602082019050919050565b5f6020820190508181035f83015261511b816150e2565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61517c602183613f68565b915061518782615122565b604082019050919050565b5f6020820190508181035f8301526151a981615170565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6151e4601b83613f68565b91506151ef826151b0565b602082019050919050565b5f6020820190508181035f830152615211816151d8565b9050919050565b5f819050919050565b5f61523b61523661523184615218565b61475d565b613ec7565b9050919050565b61524b81615221565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61528381614027565b82525050565b5f615294838361527a565b60208301905092915050565b5f602082019050919050565b5f6152b682615251565b6152c0818561525b565b93506152cb8361526b565b805f5b838110156152fb5781516152e28882615289565b97506152ed836152a0565b9250506001810190506152ce565b5085935050505092915050565b5f60a08201905061531b5f830188613ed0565b6153286020830187615242565b818103604083015261533a81866152ac565b905061534960608301856144c9565b6153566080830184613ed0565b9695505050505050565b5f81905092915050565b50565b5f6153785f83615360565b91506153838261536a565b5f82019050919050565b5f6153978261536d565b9150819050919050565b5f60c0820190506153b45f8301896144c9565b6153c16020830188613ed0565b6153ce6040830187615242565b6153db6060830186615242565b6153e860808301856144c9565b6153f560a0830184613ed0565b979650505050505050565b5f805f6060848603121561541757615416613f01565b5b5f61542486828701614de9565b935050602061543586828701614de9565b925050604061544686828701614de9565b9150509250925092565b5f6040820190506154635f830185613ed0565b6154706020830184613ed0565b939250505056fea2646970667358221220e5c461735600e18871e83ab9f34f1293765133b80b7b1a6bded6209c5ee6b09464736f6c63430008150033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000957414c544552494e55000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000052457494e55000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : swapRouterAddress (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [1] : tName (string): WALTERINU
Arg [2] : tSymbol (string): $WINU

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000009
Arg [4] : 57414c544552494e550000000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [6] : 2457494e55000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

3990:17124:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6033:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18561:287;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7605:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8120:226;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4533:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20305:163;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17147:121;;;;;;;;;;;;;:::i;:::-;;4583:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7434:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18318:235;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8648:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13781:394;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19967:144;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11784:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10803:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7528:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19449:163;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10649:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8354:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5666:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7840:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3583:148;;;;;;;;;;;;;:::i;:::-;;13639:134;;;;;;;;;;;;;:::i;:::-;;5710:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4393:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11679:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7763:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17035:104;;;;;;;;;;;;;:::i;:::-;;3366:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4460:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7682:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18862:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5766:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5598:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8484:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17276:1029;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5825:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16282:745;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19077:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19300:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12926:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7970:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19624:335;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13196:431;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3739:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5567:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5626:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6033:49;;;;:::o;18561:287::-;3503:12;:10;:12::i;:::-;3493:22;;:6;;;;;;;;;;:22;;;3485:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18689:1:::1;18667:18;:23;;18659:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;18784:4;18761:18;18746:12;;:33;;;;:::i;:::-;18745:43;;;;:::i;:::-;18730:12;:58;;;;18800:32;18819:12;;18800:32;;;;;;:::i;:::-;;;;;;;;18561:287:::0;:::o;7605:71::-;7644:13;7668:5;7661:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7605:71;:::o;8120:226::-;8205:4;8257:6;8222:11;:23;8234:10;8222:23;;;;;;;;;;;;;;;:32;8246:7;8222:32;;;;;;;;;;;;;;;:41;;;;8300:7;8279:37;;8288:10;8279:37;;;8309:6;8279:37;;;;;;:::i;:::-;;;;;;;;8334:4;8327:11;;8120:226;;;;:::o;4533:43::-;;;;;;;;;;;;;;;;;:::o;20305:163::-;20396:4;20448:6;20416:29;20436:8;20416:19;:29::i;:::-;:38;20409:45;;20305:163;;;;:::o;17147:121::-;3503:12;:10;:12::i;:::-;3493:22;;:6;;;;;;;;;;:22;;;3485:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17210:11:::1;;;;;;;;;;;17201:21;;;::::0;::::1;;17251:5;17237:11;;:19;;;;;;;;;;;;;;;;;;17147:121::o:0;4583:46::-;;;;:::o;7434:88::-;7489:7;7507:12;;7500:19;;7434:88;:::o;18318:235::-;3503:12;:10;:12::i;:::-;3493:22;;:6;;;;;;;;;;:22;;;3485:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18437:1:::1;18417:16;:21;;18409:30;;;::::0;::::1;;18500:4;18479:16;18464:12;;:31;;;;:::i;:::-;18463:41;;;;:::i;:::-;18446:14;:58;;;;18516:29;18530:14;;18516:29;;;;;;:::i;:::-;;;;;;;;18318:235:::0;:::o;8648:370::-;8748:4;8803:17;8768:11;:19;8780:6;8768:19;;;;;;;;;;;;;;;:31;8788:10;8768:31;;;;;;;;;;;;;;;;:52;8765:186;;8870:69;8906:6;8870:69;;;;;;;;;;;;;;;;;:11;:19;8882:6;8870:19;;;;;;;;;;;;;;;:31;8890:10;8870:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;8836:11;:19;8848:6;8836:19;;;;;;;;;;;;;;;:31;8856:10;8836:31;;;;;;;;;;;;;;;:103;;;;8765:186;8970:40;8984:6;8992:9;9003:6;8970:13;:40::i;:::-;8963:47;;8648:370;;;;;:::o;13781:394::-;3503:12;:10;:12::i;:::-;3493:22;;:6;;;;;;;;;;:22;;;3485:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13916:7:::1;:14;13897:8;:15;:33;13889:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13972:8;13967:201;13990:8;:15;13986:1;:19;;;13967:201;;;14056:7;14064:1;14056:10;;;;;;;;;;:::i;:::-;;;;;;;;14031:21;14041:10;14031:9;:21::i;:::-;:35;;14023:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;14107:49;14122:10;14133:8;14142:1;14133:11;;;;;;;;;;:::i;:::-;;;;;;;;14145:7;14153:1;14145:10;;;;;;;;;;:::i;:::-;;;;;;;;14107:14;:49::i;:::-;;14007:3;;;;;:::i;:::-;;;;13967:201;;;;13781:394:::0;;:::o;19967:144::-;20026:7;20049:54;20087:15;4208:42;20087:9;:15::i;:::-;20049:33;20066:15;4126:42;20066:9;:15::i;:::-;20049:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;20042:61;;19967:144;:::o;11784:99::-;11836:7;11863:12;;11856:19;;11784:99;;;:::o;10803:155::-;10873:7;10900:50;10933:16;;10900:28;10915:12;;10900:10;:14;;:28;;;;:::i;:::-;:32;;:50;;;;:::i;:::-;10893:57;;10803:155;;;:::o;7528:71::-;7571:5;4326:1;7580:16;;7528:71;:::o;19449:163::-;3503:12;:10;:12::i;:::-;3493:22;;:6;;;;;;;;;;:22;;;3485:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19559:6:::1;19537:11;:19;19549:6;19537:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;19598:6;19572:15;:23;19588:6;19572:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;19449:163:::0;;:::o;10649:146::-;10714:7;10741:46;10774:12;;10741:28;10752:16;;10741:6;:10;;:28;;;;:::i;:::-;:32;;:46;;;;:::i;:::-;10734:53;;10649:146;;;:::o;8354:122::-;8409:4;8433:35;8441:7;8450:17;8433:7;:35::i;:::-;8426:42;;8354:122;;;:::o;5666:37::-;;;;;;;;;;;;;:::o;7840:124::-;7906:7;7924:37;7944:7;:16;7952:7;7944:16;;;;;;;;;;;;;;;;7924:19;:37::i;:::-;7917:44;;7840:124;;;:::o;3583:148::-;3503:12;:10;:12::i;:::-;3493:22;;:6;;;;;;;;;;:22;;;3485:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3690:1:::1;3653:40;;3674:6;::::0;::::1;;;;;;;;3653:40;;;;;;;;;;;;3721:1;3704:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3583:148::o:0;13639:134::-;3503:12;:10;:12::i;:::-;3493:22;;:6;;;;;;;;;;:22;;;3485:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13716:12:::1;;13699:14;:29;;;;13751:12;;13736;:27;;;;13639:134::o:0;5710:39::-;;;;;;;;;;;;;:::o;4393:54::-;;;;:::o;11679:97::-;11730:7;11757:11;;11750:18;;11679:97;;;:::o;7763:71::-;7806:7;7824;:5;:7::i;:::-;7817:14;;7763:71;:::o;17035:104::-;3503:12;:10;:12::i;:::-;3493:22;;:6;;;;;;;;;;:22;;;3485:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17094:11:::1;;;;;;;;;;;17093:12;17084:22;;;::::0;::::1;;17127:4;17113:11;;:18;;;;;;;;;;;;;;;;;;17035:104::o:0;3366:79::-;3404:7;3431:6;;;;;;;;;;;3424:13;;3366:79;:::o;4460:56::-;;;;:::o;7682:75::-;7723:13;7747:7;7740:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7682:75;:::o;18862:207::-;3503:12;:10;:12::i;:::-;3493:22;;:6;;;;;;;;;;:22;;;3485:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18971:9:::1;18966:96;18986:9;;:16;;18982:1;:20;18966:96;;;19044:6;19016:11;:25;19028:9;;19038:1;19028:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;19016:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;19004:3;;;;:::i;:::-;;;18966:96;;;;18862:207:::0;;;:::o;5766:46::-;;;;;;;;;;;;;;;;;:::o;5598:19::-;;;;;;;;;;;;;:::o;8484:156::-;8564:4;8588:44;8602:10;8614:9;8625:6;8588:13;:44::i;:::-;8581:51;;8484:156;;;;:::o;17276:1029::-;3503:12;:10;:12::i;:::-;3493:22;;:6;;;;;;;;;;:22;;;3485:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17583:16:::1;17565:15;:34;;;;17625:17;17606:16;:36;;;;17667:16;17649:15;:34;;;;17703:11;17690:10;:24;;;;17735:74;17798:10;;17735:58;17777:15;;17735:37;17755:16;;17735:15;;:19;;:37;;;;:::i;:::-;:41;;:58;;;;:::i;:::-;:62;;:74;;;;:::i;:::-;17721:11;:88;;;;17837:17;17818:16;:36;;;;17881:18;17861:17;:38;;;;17925:17;17906:16;:36;;;;17963:12;17949:11;:26;;;;17997:78;18063:11;;17997:61;18041:16;;17997:39;18018:17;;17997:16;;:20;;:39;;;;:::i;:::-;:43;;:61;;;;:::i;:::-;:65;;:78;;;;:::i;:::-;17982:12;:93;;;;18108:15;18091:14;:32;;;;18170:1;18155:14;;:16;;;;:::i;:::-;18140:11;;:31;;18132:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;18250:1;18235:14;;:16;;;;:::i;:::-;18220:12;;:31;;18212:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;17276:1029:::0;;;;;;;;;:::o;5825:31::-;;;;;;;;;;;;;:::o;16282:745::-;3503:12;:10;:12::i;:::-;3493:22;;:6;;;;;;;;;;:22;;;3485:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16447:2:::1;16434:12;;:15;;;;:::i;:::-;16422:8;:28;16414:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;16526:6;16513:12;;:19;;;;:::i;:::-;16501:8;:32;16493:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;16613:2;16600:12;;:15;;;;:::i;:::-;16588:8;:28;16580:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;16692:6;16679:12;;:19;;;;:::i;:::-;16667:8;:32;16659:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;16763:10;16746:14;;:27;;;;;;;;;;;;;;;;;;16795:8;16780:12;;:23;;;;;;;;;;;;;;;;;;16831:8;16810:18;:29;;;;16867:8;16846:18;:29;;;;16898:18;;16882:13;:34;;;;16934:85;16950:14;;;;;;;;;;;16966:12;;;;;;;;;;;16980:18;;17000;;16934:85;;;;;;;;;:::i;:::-;;;;;;;;16282:745:::0;;;;:::o;19077:215::-;3503:12;:10;:12::i;:::-;3493:22;;:6;;;;;;;;;;:22;;;3485:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19189:9:::1;19184:100;19204:9;;:16;;19200:1;:20;19184:100;;;19266:6;19234:15;:29;19250:9;;19260:1;19250:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;19234:29;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;19222:3;;;;:::i;:::-;;;19184:100;;;;19077:215:::0;;;:::o;19300:135::-;3503:12;:10;:12::i;:::-;3493:22;;:6;;;;;;;;;;:22;;;3485:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19421:6:::1;19394:16;:24;19411:6;19394:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;19300:135:::0;;:::o;12926:261::-;13015:17;13035:21;13015:41;;13075:12;;;;;;;;;;;13067:30;;:66;13129:3;13110:16;13098:9;:28;;;;:::i;:::-;:34;;;;:::i;:::-;13067:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13151:28;13162:16;13151:28;;;;;;:::i;:::-;;;;;;;;13004:183;12926:261;:::o;7970:133::-;8054:7;8072:11;:19;8084:6;8072:19;;;;;;;;;;;;;;;:28;8092:7;8072:28;;;;;;;;;;;;;;;;8065:35;;7970:133;;;;:::o;19624:335::-;3503:12;:10;:12::i;:::-;3493:22;;:6;;;;;;;;;;:22;;;3485:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19783:18:::1;19763:17;;:38;;;;;;;;;;;;;;;;;;19823:13;19808:12;;:28;;;;;;;;;;;;;;;;;;19860:15;19843:14;;:32;;;;;;;;;;;;;;;;;;19889:62;19903:17;;;;;;;;;;;19922:12;;;;;;;;;;;19936:14;;;;;;;;;;;19889:62;;;;;;;;:::i;:::-;;;;;;;;19624:335:::0;;;:::o;13196:431::-;13303:4;3503:12;:10;:12::i;:::-;3493:22;;:6;;;;;;;;;;:22;;;3485:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13349:4:::1;13325:29;;:12;:29;;::::0;13317:74:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;13413:1;13403:6;:11:::0;13400:96:::1;;13446:12;13439:30;;;13478:4;13439:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13430:54;;13400:96;13511:32;13522:12;13536:6;13511:32;;;;;;;:::i;:::-;;;;;;;;13568:12;13561:29;;;13591:10;13603:6;13561:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13554:56;;13196:431:::0;;;;:::o;3739:244::-;3503:12;:10;:12::i;:::-;3493:22;;:6;;;;;;;;;;:22;;;3485:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3848:1:::1;3828:22;;:8;:22;;::::0;3820:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3938:8;3909:38;;3930:6;::::0;::::1;;;;;;;;3909:38;;;;;;;;;;;;3967:8;3958:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3739:244:::0;:::o;5567:24::-;;;;;;;;;;;;;:::o;5626:31::-;;;;;;;;;;;;;:::o;1996:107::-;2041:15;2084:10;2069:26;;1996:107;:::o;20119:178::-;20200:7;20223:64;20264:22;:20;:22::i;:::-;20223:36;20236:22;20256:1;20236:15;20246:4;;;;;;;;;;;20236:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;20223:8;:12;;:36;;;;:::i;:::-;:40;;:64;;;;:::i;:::-;20216:71;;20119:178;;;:::o;1175:192::-;1261:7;1294:1;1289;:6;;1297:12;1281:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1321:9;1337:1;1333;:5;;;;:::i;:::-;1321:17;;1358:1;1351:8;;;1175:192;;;;;:::o;9026:1615::-;9118:4;9138:6;;;;;;;;;;;9135:63;;;9154:41;9169:6;9177:9;9188:6;9154:14;:41::i;:::-;9147:48;;;;9135:63;9227:4;;;;;;;;;;;9214:17;;:9;:17;;;;:38;;;;;4126:42;9235:17;;:9;:17;;;;9214:38;:72;;;;;9269:17;;;;;;;;;;;9256:30;;:9;:30;;;;9214:72;:103;;;;;9291:15;:26;9307:9;9291:26;;;;;;;;;;;;;;;;;;;;;;;;;9290:27;9214:103;9210:527;;;9375:14;;9365:6;9342:20;9352:9;9342;:20::i;:::-;:29;;;;:::i;:::-;:47;;9334:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9440:4;;;;;;;;;;;9430:14;;:6;:14;;;:49;;;;;9461:18;;;;;;;;;;;9430:49;:94;;;;;9497:16;:27;9514:9;9497:27;;;;;;;;;;;;;;;;;;;;;;;;;9496:28;9430:94;9426:290;;;9576:15;9549:13;:24;9563:9;9549:24;;;;;;;;;;;;;;;;:42;9541:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;9683:21;;;;;;;;;;;9665:39;;:15;:39;;;;:::i;:::-;9638:13;:24;9652:9;9638:24;;;;;;;;;;;;;;;:66;;;;9426:290;9210:527;9761:15;:23;9777:6;9761:23;;;;;;;;;;;;;;;;;;;;;;;;;9757:118;;9819:12;;9809:6;:22;;9801:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;9757:118;9909:4;;;;;;;;;;;9896:17;;:9;:17;;;;:38;;;;;4126:42;9917:17;;:9;:17;;;;9896:38;:69;;;;;9939:15;:26;9955:9;9939:26;;;;;;;;;;;;;;;;;;;;;;;;;9938:27;9896:69;9892:155;;;9990:11;;;;;;;;;;;9982:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;9892:155;10062:16;:14;:16::i;:::-;10059:35;;;10081:10;:8;:10::i;:::-;10059:35;10106:24;10133:26;10152:6;10133:18;:26::i;:::-;10106:53;;10190:61;10210:16;10190:61;;;;;;;;;;;;;;;;;:7;:15;10198:6;10190:15;;;;;;;;;;;;;;;;:19;;:61;;;;;:::i;:::-;10172:7;:15;10180:6;10172:15;;;;;;;;;;;;;;;:79;;;;10264:26;10293:21;10307:6;10293:13;:21::i;:::-;:49;;;;;10318:24;10332:9;10318:13;:24::i;:::-;10293:49;:158;;10435:16;10293:158;;;10345:87;10376:4;;;;;;;;;;;10366:14;;:6;:14;;;:28;;10389:5;10366:28;;;10382:4;10366:28;10396:6;10404:9;10415:16;10345:20;:87::i;:::-;10293:158;10264:187;;10483:42;10506:18;10483:7;:18;10491:9;10483:18;;;;;;;;;;;;;;;;:22;;:42;;;;:::i;:::-;10462:7;:18;10470:9;10462:18;;;;;;;;;;;;;;;:63;;;;10560:9;10543:68;;10552:6;10543:68;;;10571:39;10591:18;10571:19;:39::i;:::-;10543:68;;;;;;:::i;:::-;;;;;;;;10629:4;10622:11;;;;9026:1615;;;;;;:::o;10966:406::-;11059:4;11076:24;11103:26;11122:6;11103:18;:26::i;:::-;11076:53;;11158:61;11178:16;11158:61;;;;;;;;;;;;;;;;;:7;:15;11166:6;11158:15;;;;;;;;;;;;;;;;:19;;:61;;;;;:::i;:::-;11140:7;:15;11148:6;11140:15;;;;;;;;;;;;;;;:79;;;;11251:40;11274:16;11251:7;:18;11259:9;11251:18;;;;;;;;;;;;;;;;:22;;:40;;;;:::i;:::-;11230:7;:18;11238:9;11230:18;;;;;;;;;;;;;;;:61;;;;11324:9;11307:35;;11316:6;11307:35;;;11335:6;11307:35;;;;;;:::i;:::-;;;;;;;;11360:4;11353:11;;;10966:406;;;;;:::o;1033:136::-;1091:7;1118:43;1122:1;1125;1118:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1111:50;;1033:136;;;;:::o;1373:250::-;1431:7;1460:1;1455;:6;1451:47;;1485:1;1478:8;;;;1451:47;1510:9;1526:1;1522;:5;;;;:::i;:::-;1510:17;;1555:1;1550;1546;:5;;;;:::i;:::-;:10;1538:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1614:1;1607:8;;;1373:250;;;;;:::o;1629:132::-;1687:7;1714:39;1718:1;1721;1714:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1707:46;;1629:132;;;;:::o;846:181::-;904:7;924:9;940:1;936;:5;;;;:::i;:::-;924:17;;965:1;960;:6;;952:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1018:1;1011:8;;;846:181;;;;:::o;14187:198::-;14236:4;14274;;;;;;;;;;;14260:18;;:10;:18;;;;:38;;;;;14292:6;;;;;;;;;;;14291:7;14260:38;:63;;;;;14311:12;;;;;;;;;;;14260:63;:117;;;;;14364:13;;14336:24;14354:4;14336:9;:24::i;:::-;:41;;14260:117;14253:124;;14187:198;:::o;14393:1881::-;6138:4;6129:6;;:13;;;;;;;;;;;;;;;;;;14442:27:::1;14472:60;14488:15;;14505:26;;14472:15;:60::i;:::-;:83;;14539:16;;14472:83;;;14535:1;14472:83;14442:113;;14566:17;14586:35;14603:17;;14586:12;;:16;;:35;;;;:::i;:::-;14566:55;;14632:23;14658:60;14716:1;14658:53;14701:9;14658:38;14676:19;14658:13;;:17;;:38;;;;:::i;:::-;:42;;:53;;;;:::i;:::-;:57;;:60;;;;:::i;:::-;14632:86;;14729:20;14752:34;14770:15;14752:13;;:17;;:34;;;;:::i;:::-;14729:57;;14799:21;14837:1;14823:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14799:40;;14868:4;14850;14855:1;14850:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;14894:4;;;;;;;;;;;14884;14889:1;14884:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;14911:21;14935;14911:45;;14969:6;;;;;;;;;;;:57;;;15041:12;15068:1;15084:4;15111;15131:15;14969:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15170:17;15190:40;15216:13;15190:21;:25;;:40;;;;:::i;:::-;15170:60;;15241:19;15263:41;15277:26;15301:1;15277:19;:23;;:26;;;;:::i;:::-;15263:9;:13;;:41;;;;:::i;:::-;15241:63;;15315:26;15344:55;15397:1;15344:48;15380:11;15344:31;15358:16;;15344:9;:13;;:31;;;;:::i;:::-;:35;;:48;;;;:::i;:::-;:52;;:55;;;;:::i;:::-;15315:84;;15410:26;15439:48;15475:11;15439:31;15453:16;;15439:9;:13;;:31;;;;:::i;:::-;:35;;:48;;;;:::i;:::-;15410:77;;15498:21;15522:43;15553:11;15522:26;15536:11;;15522:9;:13;;:26;;;;:::i;:::-;:30;;:43;;;;:::i;:::-;15498:67;;15579:15;15607:17;;;;;;;;;;;15599:31;;15638:18;15599:62;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15578:83;;;15696:12;;;;;;;;;;;15688:26;;15722:13;15688:52;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15672:68;;;;;15791:1;15773:15;:19;15770:357;;;15810:6;;;;;;;;;;;:22;;;15840:18;15886:4;15910:15;15944:1;15964::::0;15984:14:::1;;;;;;;;;;;16017:15;15810:237;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;16067:48;16079:18;16099:15;16067:48;;;;;;;:::i;:::-;;;;;;;;15770:357;16156:14;;;;;;;;;;;16155:15;:111;;16206:18;;16189:13;;:35;:77;;16248:18;;16189:77;;;16227:18;;16189:77;16155:111;;;16173:13;;16155:111;16139:13;:127;;;;14431:1843;;;;;;;;;;;;6156:5:::0;6147:6;;:14;;;;;;;;;;;;;;;;;;14393:1881::o;11380:116::-;11442:4;11467:11;:19;11479:6;11467:19;;;;;;;;;;;;;;;;;;;;;;;;;11466:20;11459:27;;11380:116;;;:::o;11891:1026::-;12012:7;12032:27;12072:4;12062:14;;:6;:14;;;:177;;12164:75;12224:14;;12164:55;12185:33;12213:4;;;;;;;;;;;12201:16;;:8;:16;;;12185:15;:33::i;:::-;12164:16;:20;;:55;;;;:::i;:::-;:59;;:75;;;;:::i;:::-;12062:177;;;12078:74;12137:14;;12078:54;12099:32;12126:4;;;;;;;;;;;12114:16;;:8;:16;;;12099:14;:32::i;:::-;12078:16;:20;;:54;;;;:::i;:::-;:58;;:74;;;;:::i;:::-;12062:177;12032:207;;12262:27;12302:4;12292:14;;:6;:14;;;:146;;12378:60;12425:12;;12378:42;12402:17;;12378:19;:23;;:42;;;;:::i;:::-;:46;;:60;;;;:::i;:::-;12292:146;;;12308:58;12354:11;;12308:41;12332:16;;12308:19;:23;;:41;;;;:::i;:::-;:45;;:58;;;;:::i;:::-;12292:146;12262:176;;12470:41;12491:19;12470:16;;:20;;:41;;;;:::i;:::-;12451:16;:60;;;;12534:29;12566:44;12590:19;12566;:23;;:44;;;;:::i;:::-;12534:76;;12646:49;12673:21;12646:7;:22;12662:4;12646:22;;;;;;;;;;;;;;;;:26;;:49;;;;:::i;:::-;12621:7;:22;12637:4;12621:22;;;;;;;;;;;;;;;:74;;;;12738:4;12713:75;;12722:6;12713:75;;;12745:42;12765:21;12745:19;:42::i;:::-;12713:75;;;;;;:::i;:::-;;;;;;;;12804:46;12812:19;12833:16;;12804:46;;;;;;;:::i;:::-;;;;;;;;12868:41;12889:19;12868:16;:20;;:41;;;;:::i;:::-;12861:48;;;;;11891:1026;;;;;;:::o;1767:189::-;1853:7;1885:1;1881;:5;1888:12;1873:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1912:9;1928:1;1924;:5;;;;:::i;:::-;1912:17;;1947:1;1940:8;;;1767:189;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:75::-;475:6;508:2;502:9;492:19;;442:75;:::o;523:117::-;632:1;629;622:12;646:117;755:1;752;745:12;769:122;842:24;860:5;842:24;:::i;:::-;835:5;832:35;822:63;;881:1;878;871:12;822:63;769:122;:::o;897:139::-;943:5;981:6;968:20;959:29;;997:33;1024:5;997:33;:::i;:::-;897:139;;;;:::o;1042:329::-;1101:6;1150:2;1138:9;1129:7;1125:23;1121:32;1118:119;;;1156:79;;:::i;:::-;1118:119;1276:1;1301:53;1346:7;1337:6;1326:9;1322:22;1301:53;:::i;:::-;1291:63;;1247:117;1042:329;;;;:::o;1377:99::-;1429:6;1463:5;1457:12;1447:22;;1377:99;;;:::o;1482:169::-;1566:11;1600:6;1595:3;1588:19;1640:4;1635:3;1631:14;1616:29;;1482:169;;;;:::o;1657:246::-;1738:1;1748:113;1762:6;1759:1;1756:13;1748:113;;;1847:1;1842:3;1838:11;1832:18;1828:1;1823:3;1819:11;1812:39;1784:2;1781:1;1777:10;1772:15;;1748:113;;;1895:1;1886:6;1881:3;1877:16;1870:27;1719:184;1657:246;;;:::o;1909:102::-;1950:6;2001:2;1997:7;1992:2;1985:5;1981:14;1977:28;1967:38;;1909:102;;;:::o;2017:377::-;2105:3;2133:39;2166:5;2133:39;:::i;:::-;2188:71;2252:6;2247:3;2188:71;:::i;:::-;2181:78;;2268:65;2326:6;2321:3;2314:4;2307:5;2303:16;2268:65;:::i;:::-;2358:29;2380:6;2358:29;:::i;:::-;2353:3;2349:39;2342:46;;2109:285;2017:377;;;;:::o;2400:313::-;2513:4;2551:2;2540:9;2536:18;2528:26;;2600:9;2594:4;2590:20;2586:1;2575:9;2571:17;2564:47;2628:78;2701:4;2692:6;2628:78;:::i;:::-;2620:86;;2400:313;;;;:::o;2719:126::-;2756:7;2796:42;2789:5;2785:54;2774:65;;2719:126;;;:::o;2851:96::-;2888:7;2917:24;2935:5;2917:24;:::i;:::-;2906:35;;2851:96;;;:::o;2953:122::-;3026:24;3044:5;3026:24;:::i;:::-;3019:5;3016:35;3006:63;;3065:1;3062;3055:12;3006:63;2953:122;:::o;3081:139::-;3127:5;3165:6;3152:20;3143:29;;3181:33;3208:5;3181:33;:::i;:::-;3081:139;;;;:::o;3226:474::-;3294:6;3302;3351:2;3339:9;3330:7;3326:23;3322:32;3319:119;;;3357:79;;:::i;:::-;3319:119;3477:1;3502:53;3547:7;3538:6;3527:9;3523:22;3502:53;:::i;:::-;3492:63;;3448:117;3604:2;3630:53;3675:7;3666:6;3655:9;3651:22;3630:53;:::i;:::-;3620:63;;3575:118;3226:474;;;;;:::o;3706:90::-;3740:7;3783:5;3776:13;3769:21;3758:32;;3706:90;;;:::o;3802:109::-;3883:21;3898:5;3883:21;:::i;:::-;3878:3;3871:34;3802:109;;:::o;3917:210::-;4004:4;4042:2;4031:9;4027:18;4019:26;;4055:65;4117:1;4106:9;4102:17;4093:6;4055:65;:::i;:::-;3917:210;;;;:::o;4133:329::-;4192:6;4241:2;4229:9;4220:7;4216:23;4212:32;4209:119;;;4247:79;;:::i;:::-;4209:119;4367:1;4392:53;4437:7;4428:6;4417:9;4413:22;4392:53;:::i;:::-;4382:63;;4338:117;4133:329;;;;:::o;4468:474::-;4536:6;4544;4593:2;4581:9;4572:7;4568:23;4564:32;4561:119;;;4599:79;;:::i;:::-;4561:119;4719:1;4744:53;4789:7;4780:6;4769:9;4765:22;4744:53;:::i;:::-;4734:63;;4690:117;4846:2;4872:53;4917:7;4908:6;4897:9;4893:22;4872:53;:::i;:::-;4862:63;;4817:118;4468:474;;;;;:::o;4948:619::-;5025:6;5033;5041;5090:2;5078:9;5069:7;5065:23;5061:32;5058:119;;;5096:79;;:::i;:::-;5058:119;5216:1;5241:53;5286:7;5277:6;5266:9;5262:22;5241:53;:::i;:::-;5231:63;;5187:117;5343:2;5369:53;5414:7;5405:6;5394:9;5390:22;5369:53;:::i;:::-;5359:63;;5314:118;5471:2;5497:53;5542:7;5533:6;5522:9;5518:22;5497:53;:::i;:::-;5487:63;;5442:118;4948:619;;;;;:::o;5573:117::-;5682:1;5679;5672:12;5696:180;5744:77;5741:1;5734:88;5841:4;5838:1;5831:15;5865:4;5862:1;5855:15;5882:281;5965:27;5987:4;5965:27;:::i;:::-;5957:6;5953:40;6095:6;6083:10;6080:22;6059:18;6047:10;6044:34;6041:62;6038:88;;;6106:18;;:::i;:::-;6038:88;6146:10;6142:2;6135:22;5925:238;5882:281;;:::o;6169:129::-;6203:6;6230:20;;:::i;:::-;6220:30;;6259:33;6287:4;6279:6;6259:33;:::i;:::-;6169:129;;;:::o;6304:311::-;6381:4;6471:18;6463:6;6460:30;6457:56;;;6493:18;;:::i;:::-;6457:56;6543:4;6535:6;6531:17;6523:25;;6603:4;6597;6593:15;6585:23;;6304:311;;;:::o;6621:117::-;6730:1;6727;6720:12;6761:710;6857:5;6882:81;6898:64;6955:6;6898:64;:::i;:::-;6882:81;:::i;:::-;6873:90;;6983:5;7012:6;7005:5;6998:21;7046:4;7039:5;7035:16;7028:23;;7099:4;7091:6;7087:17;7079:6;7075:30;7128:3;7120:6;7117:15;7114:122;;;7147:79;;:::i;:::-;7114:122;7262:6;7245:220;7279:6;7274:3;7271:15;7245:220;;;7354:3;7383:37;7416:3;7404:10;7383:37;:::i;:::-;7378:3;7371:50;7450:4;7445:3;7441:14;7434:21;;7321:144;7305:4;7300:3;7296:14;7289:21;;7245:220;;;7249:21;6863:608;;6761:710;;;;;:::o;7494:370::-;7565:5;7614:3;7607:4;7599:6;7595:17;7591:27;7581:122;;7622:79;;:::i;:::-;7581:122;7739:6;7726:20;7764:94;7854:3;7846:6;7839:4;7831:6;7827:17;7764:94;:::i;:::-;7755:103;;7571:293;7494:370;;;;:::o;7870:311::-;7947:4;8037:18;8029:6;8026:30;8023:56;;;8059:18;;:::i;:::-;8023:56;8109:4;8101:6;8097:17;8089:25;;8169:4;8163;8159:15;8151:23;;7870:311;;;:::o;8204:710::-;8300:5;8325:81;8341:64;8398:6;8341:64;:::i;:::-;8325:81;:::i;:::-;8316:90;;8426:5;8455:6;8448:5;8441:21;8489:4;8482:5;8478:16;8471:23;;8542:4;8534:6;8530:17;8522:6;8518:30;8571:3;8563:6;8560:15;8557:122;;;8590:79;;:::i;:::-;8557:122;8705:6;8688:220;8722:6;8717:3;8714:15;8688:220;;;8797:3;8826:37;8859:3;8847:10;8826:37;:::i;:::-;8821:3;8814:50;8893:4;8888:3;8884:14;8877:21;;8764:144;8748:4;8743:3;8739:14;8732:21;;8688:220;;;8692:21;8306:608;;8204:710;;;;;:::o;8937:370::-;9008:5;9057:3;9050:4;9042:6;9038:17;9034:27;9024:122;;9065:79;;:::i;:::-;9024:122;9182:6;9169:20;9207:94;9297:3;9289:6;9282:4;9274:6;9270:17;9207:94;:::i;:::-;9198:103;;9014:293;8937:370;;;;:::o;9313:894::-;9431:6;9439;9488:2;9476:9;9467:7;9463:23;9459:32;9456:119;;;9494:79;;:::i;:::-;9456:119;9642:1;9631:9;9627:17;9614:31;9672:18;9664:6;9661:30;9658:117;;;9694:79;;:::i;:::-;9658:117;9799:78;9869:7;9860:6;9849:9;9845:22;9799:78;:::i;:::-;9789:88;;9585:302;9954:2;9943:9;9939:18;9926:32;9985:18;9977:6;9974:30;9971:117;;;10007:79;;:::i;:::-;9971:117;10112:78;10182:7;10173:6;10162:9;10158:22;10112:78;:::i;:::-;10102:88;;9897:303;9313:894;;;;;:::o;10213:116::-;10283:21;10298:5;10283:21;:::i;:::-;10276:5;10273:32;10263:60;;10319:1;10316;10309:12;10263:60;10213:116;:::o;10335:133::-;10378:5;10416:6;10403:20;10394:29;;10432:30;10456:5;10432:30;:::i;:::-;10335:133;;;;:::o;10474:323::-;10530:6;10579:2;10567:9;10558:7;10554:23;10550:32;10547:119;;;10585:79;;:::i;:::-;10547:119;10705:1;10730:50;10772:7;10763:6;10752:9;10748:22;10730:50;:::i;:::-;10720:60;;10676:114;10474:323;;;;:::o;10803:86::-;10838:7;10878:4;10871:5;10867:16;10856:27;;10803:86;;;:::o;10895:112::-;10978:22;10994:5;10978:22;:::i;:::-;10973:3;10966:35;10895:112;;:::o;11013:214::-;11102:4;11140:2;11129:9;11125:18;11117:26;;11153:67;11217:1;11206:9;11202:17;11193:6;11153:67;:::i;:::-;11013:214;;;;:::o;11233:468::-;11298:6;11306;11355:2;11343:9;11334:7;11330:23;11326:32;11323:119;;;11361:79;;:::i;:::-;11323:119;11481:1;11506:53;11551:7;11542:6;11531:9;11527:22;11506:53;:::i;:::-;11496:63;;11452:117;11608:2;11634:50;11676:7;11667:6;11656:9;11652:22;11634:50;:::i;:::-;11624:60;;11579:115;11233:468;;;;;:::o;11707:118::-;11794:24;11812:5;11794:24;:::i;:::-;11789:3;11782:37;11707:118;;:::o;11831:222::-;11924:4;11962:2;11951:9;11947:18;11939:26;;11975:71;12043:1;12032:9;12028:17;12019:6;11975:71;:::i;:::-;11831:222;;;;:::o;12059:117::-;12168:1;12165;12158:12;12199:568;12272:8;12282:6;12332:3;12325:4;12317:6;12313:17;12309:27;12299:122;;12340:79;;:::i;:::-;12299:122;12453:6;12440:20;12430:30;;12483:18;12475:6;12472:30;12469:117;;;12505:79;;:::i;:::-;12469:117;12619:4;12611:6;12607:17;12595:29;;12673:3;12665:4;12657:6;12653:17;12643:8;12639:32;12636:41;12633:128;;;12680:79;;:::i;:::-;12633:128;12199:568;;;;;:::o;12773:698::-;12865:6;12873;12881;12930:2;12918:9;12909:7;12905:23;12901:32;12898:119;;;12936:79;;:::i;:::-;12898:119;13084:1;13073:9;13069:17;13056:31;13114:18;13106:6;13103:30;13100:117;;;13136:79;;:::i;:::-;13100:117;13249:80;13321:7;13312:6;13301:9;13297:22;13249:80;:::i;:::-;13231:98;;;;13027:312;13378:2;13404:50;13446:7;13437:6;13426:9;13422:22;13404:50;:::i;:::-;13394:60;;13349:115;12773:698;;;;;:::o;13477:1495::-;13608:6;13616;13624;13632;13640;13648;13656;13664;13672;13721:3;13709:9;13700:7;13696:23;13692:33;13689:120;;;13728:79;;:::i;:::-;13689:120;13848:1;13873:53;13918:7;13909:6;13898:9;13894:22;13873:53;:::i;:::-;13863:63;;13819:117;13975:2;14001:53;14046:7;14037:6;14026:9;14022:22;14001:53;:::i;:::-;13991:63;;13946:118;14103:2;14129:53;14174:7;14165:6;14154:9;14150:22;14129:53;:::i;:::-;14119:63;;14074:118;14231:2;14257:53;14302:7;14293:6;14282:9;14278:22;14257:53;:::i;:::-;14247:63;;14202:118;14359:3;14386:53;14431:7;14422:6;14411:9;14407:22;14386:53;:::i;:::-;14376:63;;14330:119;14488:3;14515:53;14560:7;14551:6;14540:9;14536:22;14515:53;:::i;:::-;14505:63;;14459:119;14617:3;14644:53;14689:7;14680:6;14669:9;14665:22;14644:53;:::i;:::-;14634:63;;14588:119;14746:3;14773:53;14818:7;14809:6;14798:9;14794:22;14773:53;:::i;:::-;14763:63;;14717:119;14875:3;14902:53;14947:7;14938:6;14927:9;14923:22;14902:53;:::i;:::-;14892:63;;14846:119;13477:1495;;;;;;;;;;;:::o;14978:753::-;15058:6;15066;15074;15082;15131:3;15119:9;15110:7;15106:23;15102:33;15099:120;;;15138:79;;:::i;:::-;15099:120;15258:1;15283:50;15325:7;15316:6;15305:9;15301:22;15283:50;:::i;:::-;15273:60;;15229:114;15382:2;15408:53;15453:7;15444:6;15433:9;15429:22;15408:53;:::i;:::-;15398:63;;15353:118;15510:2;15536:53;15581:7;15572:6;15561:9;15557:22;15536:53;:::i;:::-;15526:63;;15481:118;15638:2;15664:50;15706:7;15697:6;15686:9;15682:22;15664:50;:::i;:::-;15654:60;;15609:115;14978:753;;;;;;;:::o;15737:474::-;15805:6;15813;15862:2;15850:9;15841:7;15837:23;15833:32;15830:119;;;15868:79;;:::i;:::-;15830:119;15988:1;16013:53;16058:7;16049:6;16038:9;16034:22;16013:53;:::i;:::-;16003:63;;15959:117;16115:2;16141:53;16186:7;16177:6;16166:9;16162:22;16141:53;:::i;:::-;16131:63;;16086:118;15737:474;;;;;:::o;16217:619::-;16294:6;16302;16310;16359:2;16347:9;16338:7;16334:23;16330:32;16327:119;;;16365:79;;:::i;:::-;16327:119;16485:1;16510:53;16555:7;16546:6;16535:9;16531:22;16510:53;:::i;:::-;16500:63;;16456:117;16612:2;16638:53;16683:7;16674:6;16663:9;16659:22;16638:53;:::i;:::-;16628:63;;16583:118;16740:2;16766:53;16811:7;16802:6;16791:9;16787:22;16766:53;:::i;:::-;16756:63;;16711:118;16217:619;;;;;:::o;16842:60::-;16870:3;16891:5;16884:12;;16842:60;;;:::o;16908:142::-;16958:9;16991:53;17009:34;17018:24;17036:5;17018:24;:::i;:::-;17009:34;:::i;:::-;16991:53;:::i;:::-;16978:66;;16908:142;;;:::o;17056:126::-;17106:9;17139:37;17170:5;17139:37;:::i;:::-;17126:50;;17056:126;;;:::o;17188:144::-;17256:9;17289:37;17320:5;17289:37;:::i;:::-;17276:50;;17188:144;;;:::o;17338:167::-;17443:55;17492:5;17443:55;:::i;:::-;17438:3;17431:68;17338:167;;:::o;17511:258::-;17622:4;17660:2;17649:9;17645:18;17637:26;;17673:89;17759:1;17748:9;17744:17;17735:6;17673:89;:::i;:::-;17511:258;;;;:::o;17775:182::-;17915:34;17911:1;17903:6;17899:14;17892:58;17775:182;:::o;17963:366::-;18105:3;18126:67;18190:2;18185:3;18126:67;:::i;:::-;18119:74;;18202:93;18291:3;18202:93;:::i;:::-;18320:2;18315:3;18311:12;18304:19;;17963:366;;;:::o;18335:419::-;18501:4;18539:2;18528:9;18524:18;18516:26;;18588:9;18582:4;18578:20;18574:1;18563:9;18559:17;18552:47;18616:131;18742:4;18616:131;:::i;:::-;18608:139;;18335:419;;;:::o;18760:177::-;18900:29;18896:1;18888:6;18884:14;18877:53;18760:177;:::o;18943:366::-;19085:3;19106:67;19170:2;19165:3;19106:67;:::i;:::-;19099:74;;19182:93;19271:3;19182:93;:::i;:::-;19300:2;19295:3;19291:12;19284:19;;18943:366;;;:::o;19315:419::-;19481:4;19519:2;19508:9;19504:18;19496:26;;19568:9;19562:4;19558:20;19554:1;19543:9;19539:17;19532:47;19596:131;19722:4;19596:131;:::i;:::-;19588:139;;19315:419;;;:::o;19740:180::-;19788:77;19785:1;19778:88;19885:4;19882:1;19875:15;19909:4;19906:1;19899:15;19926:410;19966:7;19989:20;20007:1;19989:20;:::i;:::-;19984:25;;20023:20;20041:1;20023:20;:::i;:::-;20018:25;;20078:1;20075;20071:9;20100:30;20118:11;20100:30;:::i;:::-;20089:41;;20279:1;20270:7;20266:15;20263:1;20260:22;20240:1;20233:9;20213:83;20190:139;;20309:18;;:::i;:::-;20190:139;19974:362;19926:410;;;;:::o;20342:180::-;20390:77;20387:1;20380:88;20487:4;20484:1;20477:15;20511:4;20508:1;20501:15;20528:185;20568:1;20585:20;20603:1;20585:20;:::i;:::-;20580:25;;20619:20;20637:1;20619:20;:::i;:::-;20614:25;;20658:1;20648:35;;20663:18;;:::i;:::-;20648:35;20705:1;20702;20698:9;20693:14;;20528:185;;;;:::o;20719:180::-;20767:77;20764:1;20757:88;20864:4;20861:1;20854:15;20888:4;20885:1;20878:15;20905:320;20949:6;20986:1;20980:4;20976:12;20966:22;;21033:1;21027:4;21023:12;21054:18;21044:81;;21110:4;21102:6;21098:17;21088:27;;21044:81;21172:2;21164:6;21161:14;21141:18;21138:38;21135:84;;21191:18;;:::i;:::-;21135:84;20956:269;20905:320;;;:::o;21231:171::-;21371:23;21367:1;21359:6;21355:14;21348:47;21231:171;:::o;21408:366::-;21550:3;21571:67;21635:2;21630:3;21571:67;:::i;:::-;21564:74;;21647:93;21736:3;21647:93;:::i;:::-;21765:2;21760:3;21756:12;21749:19;;21408:366;;;:::o;21780:419::-;21946:4;21984:2;21973:9;21969:18;21961:26;;22033:9;22027:4;22023:20;22019:1;22008:9;22004:17;21997:47;22061:131;22187:4;22061:131;:::i;:::-;22053:139;;21780:419;;;:::o;22205:180::-;22253:77;22250:1;22243:88;22350:4;22347:1;22340:15;22374:4;22371:1;22364:15;22391:168;22531:20;22527:1;22519:6;22515:14;22508:44;22391:168;:::o;22565:366::-;22707:3;22728:67;22792:2;22787:3;22728:67;:::i;:::-;22721:74;;22804:93;22893:3;22804:93;:::i;:::-;22922:2;22917:3;22913:12;22906:19;;22565:366;;;:::o;22937:419::-;23103:4;23141:2;23130:9;23126:18;23118:26;;23190:9;23184:4;23180:20;23176:1;23165:9;23161:17;23154:47;23218:131;23344:4;23218:131;:::i;:::-;23210:139;;22937:419;;;:::o;23362:89::-;23398:7;23438:6;23431:5;23427:18;23416:29;;23362:89;;;:::o;23457:171::-;23495:3;23518:23;23535:5;23518:23;:::i;:::-;23509:32;;23563:6;23556:5;23553:17;23550:43;;23573:18;;:::i;:::-;23550:43;23620:1;23613:5;23609:13;23602:20;;23457:171;;;:::o;23634:233::-;23673:3;23696:24;23714:5;23696:24;:::i;:::-;23687:33;;23742:66;23735:5;23732:77;23729:103;;23812:18;;:::i;:::-;23729:103;23859:1;23852:5;23848:13;23841:20;;23634:233;;;:::o;23873:179::-;24013:31;24009:1;24001:6;23997:14;23990:55;23873:179;:::o;24058:366::-;24200:3;24221:67;24285:2;24280:3;24221:67;:::i;:::-;24214:74;;24297:93;24386:3;24297:93;:::i;:::-;24415:2;24410:3;24406:12;24399:19;;24058:366;;;:::o;24430:419::-;24596:4;24634:2;24623:9;24619:18;24611:26;;24683:9;24677:4;24673:20;24669:1;24658:9;24654:17;24647:47;24711:131;24837:4;24711:131;:::i;:::-;24703:139;;24430:419;;;:::o;24855:180::-;24995:32;24991:1;24983:6;24979:14;24972:56;24855:180;:::o;25041:366::-;25183:3;25204:67;25268:2;25263:3;25204:67;:::i;:::-;25197:74;;25280:93;25369:3;25280:93;:::i;:::-;25398:2;25393:3;25389:12;25382:19;;25041:366;;;:::o;25413:419::-;25579:4;25617:2;25606:9;25602:18;25594:26;;25666:9;25660:4;25656:20;25652:1;25641:9;25637:17;25630:47;25694:131;25820:4;25694:131;:::i;:::-;25686:139;;25413:419;;;:::o;25838:181::-;25978:33;25974:1;25966:6;25962:14;25955:57;25838:181;:::o;26025:366::-;26167:3;26188:67;26252:2;26247:3;26188:67;:::i;:::-;26181:74;;26264:93;26353:3;26264:93;:::i;:::-;26382:2;26377:3;26373:12;26366:19;;26025:366;;;:::o;26397:419::-;26563:4;26601:2;26590:9;26586:18;26578:26;;26650:9;26644:4;26640:20;26636:1;26625:9;26621:17;26614:47;26678:131;26804:4;26678:131;:::i;:::-;26670:139;;26397:419;;;:::o;26822:222::-;26962:34;26958:1;26950:6;26946:14;26939:58;27031:5;27026:2;27018:6;27014:15;27007:30;26822:222;:::o;27050:366::-;27192:3;27213:67;27277:2;27272:3;27213:67;:::i;:::-;27206:74;;27289:93;27378:3;27289:93;:::i;:::-;27407:2;27402:3;27398:12;27391:19;;27050:366;;;:::o;27422:419::-;27588:4;27626:2;27615:9;27611:18;27603:26;;27675:9;27669:4;27665:20;27661:1;27650:9;27646:17;27639:47;27703:131;27829:4;27703:131;:::i;:::-;27695:139;;27422:419;;;:::o;27847:529::-;28012:4;28050:3;28039:9;28035:19;28027:27;;28064:65;28126:1;28115:9;28111:17;28102:6;28064:65;:::i;:::-;28139:66;28201:2;28190:9;28186:18;28177:6;28139:66;:::i;:::-;28215:72;28283:2;28272:9;28268:18;28259:6;28215:72;:::i;:::-;28297;28365:2;28354:9;28350:18;28341:6;28297:72;:::i;:::-;27847:529;;;;;;;:::o;28382:442::-;28531:4;28569:2;28558:9;28554:18;28546:26;;28582:71;28650:1;28639:9;28635:17;28626:6;28582:71;:::i;:::-;28663:72;28731:2;28720:9;28716:18;28707:6;28663:72;:::i;:::-;28745;28813:2;28802:9;28798:18;28789:6;28745:72;:::i;:::-;28382:442;;;;;;:::o;28830:182::-;28970:34;28966:1;28958:6;28954:14;28947:58;28830:182;:::o;29018:366::-;29160:3;29181:67;29245:2;29240:3;29181:67;:::i;:::-;29174:74;;29257:93;29346:3;29257:93;:::i;:::-;29375:2;29370:3;29366:12;29359:19;;29018:366;;;:::o;29390:419::-;29556:4;29594:2;29583:9;29579:18;29571:26;;29643:9;29637:4;29633:20;29629:1;29618:9;29614:17;29607:47;29671:131;29797:4;29671:131;:::i;:::-;29663:139;;29390:419;;;:::o;29815:143::-;29872:5;29903:6;29897:13;29888:22;;29919:33;29946:5;29919:33;:::i;:::-;29815:143;;;;:::o;29964:351::-;30034:6;30083:2;30071:9;30062:7;30058:23;30054:32;30051:119;;;30089:79;;:::i;:::-;30051:119;30209:1;30234:64;30290:7;30281:6;30270:9;30266:22;30234:64;:::i;:::-;30224:74;;30180:128;29964:351;;;;:::o;30321:332::-;30442:4;30480:2;30469:9;30465:18;30457:26;;30493:71;30561:1;30550:9;30546:17;30537:6;30493:71;:::i;:::-;30574:72;30642:2;30631:9;30627:18;30618:6;30574:72;:::i;:::-;30321:332;;;;;:::o;30659:137::-;30713:5;30744:6;30738:13;30729:22;;30760:30;30784:5;30760:30;:::i;:::-;30659:137;;;;:::o;30802:345::-;30869:6;30918:2;30906:9;30897:7;30893:23;30889:32;30886:119;;;30924:79;;:::i;:::-;30886:119;31044:1;31069:61;31122:7;31113:6;31102:9;31098:22;31069:61;:::i;:::-;31059:71;;31015:125;30802:345;;;;:::o;31153:225::-;31293:34;31289:1;31281:6;31277:14;31270:58;31362:8;31357:2;31349:6;31345:15;31338:33;31153:225;:::o;31384:366::-;31526:3;31547:67;31611:2;31606:3;31547:67;:::i;:::-;31540:74;;31623:93;31712:3;31623:93;:::i;:::-;31741:2;31736:3;31732:12;31725:19;;31384:366;;;:::o;31756:419::-;31922:4;31960:2;31949:9;31945:18;31937:26;;32009:9;32003:4;31999:20;31995:1;31984:9;31980:17;31973:47;32037:131;32163:4;32037:131;:::i;:::-;32029:139;;31756:419;;;:::o;32181:194::-;32221:4;32241:20;32259:1;32241:20;:::i;:::-;32236:25;;32275:20;32293:1;32275:20;:::i;:::-;32270:25;;32319:1;32316;32312:9;32304:17;;32343:1;32337:4;32334:11;32331:37;;;32348:18;;:::i;:::-;32331:37;32181:194;;;;:::o;32381:191::-;32421:3;32440:20;32458:1;32440:20;:::i;:::-;32435:25;;32474:20;32492:1;32474:20;:::i;:::-;32469:25;;32517:1;32514;32510:9;32503:16;;32538:3;32535:1;32532:10;32529:36;;;32545:18;;:::i;:::-;32529:36;32381:191;;;;:::o;32578:169::-;32718:21;32714:1;32706:6;32702:14;32695:45;32578:169;:::o;32753:366::-;32895:3;32916:67;32980:2;32975:3;32916:67;:::i;:::-;32909:74;;32992:93;33081:3;32992:93;:::i;:::-;33110:2;33105:3;33101:12;33094:19;;32753:366;;;:::o;33125:419::-;33291:4;33329:2;33318:9;33314:18;33306:26;;33378:9;33372:4;33368:20;33364:1;33353:9;33349:17;33342:47;33406:131;33532:4;33406:131;:::i;:::-;33398:139;;33125:419;;;:::o;33550:178::-;33690:30;33686:1;33678:6;33674:14;33667:54;33550:178;:::o;33734:366::-;33876:3;33897:67;33961:2;33956:3;33897:67;:::i;:::-;33890:74;;33973:93;34062:3;33973:93;:::i;:::-;34091:2;34086:3;34082:12;34075:19;;33734:366;;;:::o;34106:419::-;34272:4;34310:2;34299:9;34295:18;34287:26;;34359:9;34353:4;34349:20;34345:1;34334:9;34330:17;34323:47;34387:131;34513:4;34387:131;:::i;:::-;34379:139;;34106:419;;;:::o;34531:177::-;34671:29;34667:1;34659:6;34655:14;34648:53;34531:177;:::o;34714:366::-;34856:3;34877:67;34941:2;34936:3;34877:67;:::i;:::-;34870:74;;34953:93;35042:3;34953:93;:::i;:::-;35071:2;35066:3;35062:12;35055:19;;34714:366;;;:::o;35086:419::-;35252:4;35290:2;35279:9;35275:18;35267:26;;35339:9;35333:4;35329:20;35325:1;35314:9;35310:17;35303:47;35367:131;35493:4;35367:131;:::i;:::-;35359:139;;35086:419;;;:::o;35511:170::-;35651:22;35647:1;35639:6;35635:14;35628:46;35511:170;:::o;35687:366::-;35829:3;35850:67;35914:2;35909:3;35850:67;:::i;:::-;35843:74;;35926:93;36015:3;35926:93;:::i;:::-;36044:2;36039:3;36035:12;36028:19;;35687:366;;;:::o;36059:419::-;36225:4;36263:2;36252:9;36248:18;36240:26;;36312:9;36306:4;36302:20;36298:1;36287:9;36283:17;36276:47;36340:131;36466:4;36340:131;:::i;:::-;36332:139;;36059:419;;;:::o;36484:220::-;36624:34;36620:1;36612:6;36608:14;36601:58;36693:3;36688:2;36680:6;36676:15;36669:28;36484:220;:::o;36710:366::-;36852:3;36873:67;36937:2;36932:3;36873:67;:::i;:::-;36866:74;;36949:93;37038:3;36949:93;:::i;:::-;37067:2;37062:3;37058:12;37051:19;;36710:366;;;:::o;37082:419::-;37248:4;37286:2;37275:9;37271:18;37263:26;;37335:9;37329:4;37325:20;37321:1;37310:9;37306:17;37299:47;37363:131;37489:4;37363:131;:::i;:::-;37355:139;;37082:419;;;:::o;37507:177::-;37647:29;37643:1;37635:6;37631:14;37624:53;37507:177;:::o;37690:366::-;37832:3;37853:67;37917:2;37912:3;37853:67;:::i;:::-;37846:74;;37929:93;38018:3;37929:93;:::i;:::-;38047:2;38042:3;38038:12;38031:19;;37690:366;;;:::o;38062:419::-;38228:4;38266:2;38255:9;38251:18;38243:26;;38315:9;38309:4;38305:20;38301:1;38290:9;38286:17;38279:47;38343:131;38469:4;38343:131;:::i;:::-;38335:139;;38062:419;;;:::o;38487:85::-;38532:7;38561:5;38550:16;;38487:85;;;:::o;38578:158::-;38636:9;38669:61;38687:42;38696:32;38722:5;38696:32;:::i;:::-;38687:42;:::i;:::-;38669:61;:::i;:::-;38656:74;;38578:158;;;:::o;38742:147::-;38837:45;38876:5;38837:45;:::i;:::-;38832:3;38825:58;38742:147;;:::o;38895:114::-;38962:6;38996:5;38990:12;38980:22;;38895:114;;;:::o;39015:184::-;39114:11;39148:6;39143:3;39136:19;39188:4;39183:3;39179:14;39164:29;;39015:184;;;;:::o;39205:132::-;39272:4;39295:3;39287:11;;39325:4;39320:3;39316:14;39308:22;;39205:132;;;:::o;39343:108::-;39420:24;39438:5;39420:24;:::i;:::-;39415:3;39408:37;39343:108;;:::o;39457:179::-;39526:10;39547:46;39589:3;39581:6;39547:46;:::i;:::-;39625:4;39620:3;39616:14;39602:28;;39457:179;;;;:::o;39642:113::-;39712:4;39744;39739:3;39735:14;39727:22;;39642:113;;;:::o;39791:732::-;39910:3;39939:54;39987:5;39939:54;:::i;:::-;40009:86;40088:6;40083:3;40009:86;:::i;:::-;40002:93;;40119:56;40169:5;40119:56;:::i;:::-;40198:7;40229:1;40214:284;40239:6;40236:1;40233:13;40214:284;;;40315:6;40309:13;40342:63;40401:3;40386:13;40342:63;:::i;:::-;40335:70;;40428:60;40481:6;40428:60;:::i;:::-;40418:70;;40274:224;40261:1;40258;40254:9;40249:14;;40214:284;;;40218:14;40514:3;40507:10;;39915:608;;;39791:732;;;;:::o;40529:831::-;40792:4;40830:3;40819:9;40815:19;40807:27;;40844:71;40912:1;40901:9;40897:17;40888:6;40844:71;:::i;:::-;40925:80;41001:2;40990:9;40986:18;40977:6;40925:80;:::i;:::-;41052:9;41046:4;41042:20;41037:2;41026:9;41022:18;41015:48;41080:108;41183:4;41174:6;41080:108;:::i;:::-;41072:116;;41198:72;41266:2;41255:9;41251:18;41242:6;41198:72;:::i;:::-;41280:73;41348:3;41337:9;41333:19;41324:6;41280:73;:::i;:::-;40529:831;;;;;;;;:::o;41366:147::-;41467:11;41504:3;41489:18;;41366:147;;;;:::o;41519:114::-;;:::o;41639:398::-;41798:3;41819:83;41900:1;41895:3;41819:83;:::i;:::-;41812:90;;41911:93;42000:3;41911:93;:::i;:::-;42029:1;42024:3;42020:11;42013:18;;41639:398;;;:::o;42043:379::-;42227:3;42249:147;42392:3;42249:147;:::i;:::-;42242:154;;42413:3;42406:10;;42043:379;;;:::o;42428:807::-;42677:4;42715:3;42704:9;42700:19;42692:27;;42729:71;42797:1;42786:9;42782:17;42773:6;42729:71;:::i;:::-;42810:72;42878:2;42867:9;42863:18;42854:6;42810:72;:::i;:::-;42892:80;42968:2;42957:9;42953:18;42944:6;42892:80;:::i;:::-;42982;43058:2;43047:9;43043:18;43034:6;42982:80;:::i;:::-;43072:73;43140:3;43129:9;43125:19;43116:6;43072:73;:::i;:::-;43155;43223:3;43212:9;43208:19;43199:6;43155:73;:::i;:::-;42428:807;;;;;;;;;:::o;43241:663::-;43329:6;43337;43345;43394:2;43382:9;43373:7;43369:23;43365:32;43362:119;;;43400:79;;:::i;:::-;43362:119;43520:1;43545:64;43601:7;43592:6;43581:9;43577:22;43545:64;:::i;:::-;43535:74;;43491:128;43658:2;43684:64;43740:7;43731:6;43720:9;43716:22;43684:64;:::i;:::-;43674:74;;43629:129;43797:2;43823:64;43879:7;43870:6;43859:9;43855:22;43823:64;:::i;:::-;43813:74;;43768:129;43241:663;;;;;:::o;43910:332::-;44031:4;44069:2;44058:9;44054:18;44046:26;;44082:71;44150:1;44139:9;44135:17;44126:6;44082:71;:::i;:::-;44163:72;44231:2;44220:9;44216:18;44207:6;44163:72;:::i;:::-;43910:332;;;;;:::o

Swarm Source

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