ETH Price: $3,335.37 (-1.44%)
Gas: 23 Gwei

Token

Goddess of Mystery (DESPOINA)
 

Overview

Max Total Supply

6,666,666,666 DESPOINA

Holders

24

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
38,571,295.794417796926589267 DESPOINA

Value
$0.00
0xd38182442b0Dfb93278e8c74c62F3f11bbdEEb33
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:
DESPOINA

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-07-21
*/

/**
 
d8888b. d88888b .d8888. d8888b.  .d88b.  d888888b d8b   db  .d8b.  
88  `8D 88'     88'  YP 88  `8D .8P  Y8.   `88'   888o  88 d8' `8b 
88   88 88ooooo `8bo.   88oodD' 88    88    88    88V8o 88 88ooo88 
88   88 88~~~~~   `Y8b. 88~~~   88    88    88    88 V8o88 88~~~88 
88  .8D 88.     db   8D 88      `8b  d8'   .88.   88  V888 88   88 
Y8888D' Y88888P `8888Y' 88       `Y88P'  Y888888P VP   V8P YP   YP       

-------------------------------------------------------------------

                DESPOINA - Goddess of Mystery
    
                       4% BUY / SELL

            3% TAXES WILL GO TO LIQUIDITY POOLS
  
               1% TAX WILL GO TO BUY BACKS

             COMMUNITY WILL HANDLE ALL SOCIALS

                LOCK = 100% LIQUIDITY BURN

WILL BE RENOUNCED WITH LOWERING TAX TO 3% WHEN CHART IS STABLE

                    
--------------------------------------------------------------------                             

*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

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 Address {

    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }


    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}


abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}




contract DESPOINA is Context,IERC20, Ownable{
    using Address for address;

    string private _name = "Goddess of Mystery";
    string private _symbol = "DESPOINA";
    uint8 private _decimals = 18;
    uint256 totalFeeFortx = 0;
    uint256 maxWalletTreshold = 4;
    uint256 maxTxTreshold = 3;
    uint256 private swapTreshold =3;

    uint256 private currentThreshold = 20; //Once the token value goes up this number can be decreased (To reduce price impact on asset)
    uint256 private _totalSupply = 6666666666 * 10**_decimals; 
    uint256 public requiredTokensToSwap = _totalSupply * swapTreshold /1000;
    mapping (address => uint256) private _balances;
    mapping (address => bool) private _excludedFromFees;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public automatedMarketMakerPairs;
    address _owner;
    address payable public marketingAddress = payable(0x8AaD7B8524A5cC180408a15f670F9cFaC13FDb58);
    address public TSUKA =  (0x234736F78a6F18d20d3d2eD0544c55d38F26b1CD);
    address public CAW =  (0x2B52cC9051991B42A77CA1Dc703f6d15E0981241);
    uint256 maxWalletAmount = _totalSupply*maxWalletTreshold/100; 
    uint256 maxTxAmount = _totalSupply*maxTxTreshold/100;
    mapping (address => bool) botWallets;
    bool botTradeEnabled = false;
    bool checkWalletSize = true;
    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private presaleAddresses;
    uint256 private buyliqFee = 1; 
    uint256 private buyprevLiqFee = 1;
    uint256 private buymktFee = 1;
    uint256 private buyPrevmktFee = 1;
    uint256 private buyTSUKA = 1;
    uint256 private buyprevTSUKA = 1;
    uint256 private buyCAW = 1;
    uint256 private buyprevCAW = 1;
    
    bool private tradeEnabled = false;

    
    uint256 private sellliqFee = 1;
    uint256 private sellprevLiqFee = 1;
    uint256 private sellmktFee = 1;
    uint256 private sellPrevmktFee = 1;
    uint256 private sellTSUKA = 1;
    uint256 private sellprevTSUKA = 1;
    uint256 private sellCAW = 1;
    uint256 private sellprevCAW = 1;


    bool public inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    uint256 private mktTokens = 0;
    uint256 private TSUKATokens = 0;
    uint256 private CAWTokens = 0;
    uint256 private liqTokens = 0;

    
    event SwapAndLiquify(uint256 tokensSwapped,
		uint256 ethReceived,
		uint256 tokensIntoLiquidity
	);
    event tokensSwappedDuringTokenomics(uint256 amount);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    
    // 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
    IUniswapV2Router02 _router;
    address public uniswapV2Pair;

    //Balances tracker

    modifier lockTheSwap{
		inSwapAndLiquify = true;
		_;
		inSwapAndLiquify = false;
	}
    

    constructor(){
        _balances[_msgSender()] = _totalSupply;
        //0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D mainnet and all networks
        IUniswapV2Router02 _uniRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        
        uniswapV2Pair = IUniswapV2Factory(_uniRouter.factory())
            .createPair(address(this), _uniRouter.WETH());
        
        _excludedFromFees[owner()] = true;         
        _excludedFromFees[address(this)] = true;// exclude owner and contract instance from fees
        _router = _uniRouter;
        _liquidityHolders[address(_router)] = true;
        _liquidityHolders[owner()] = true;
        _liquidityHolders[address(this)] = true;
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
        emit Transfer(address(0),_msgSender(),_totalSupply);




    }
    receive() external payable{}


    //general token data and tracking of balances to be swapped.
    function getOwner()external view returns(address){
            return owner();
    }
    function currentmktTokens() external view returns (uint256){
            return mktTokens;
     }
     function currentPZTokens() external view returns (uint256){
            return TSUKATokens;
    
     }
     function currentLiqTokens() external view returns (uint256){
            return liqTokens;
     }

     function totalSupply() external view override returns (uint256){
            return _totalSupply;
     }
   
    function balanceOf(address account) public view override returns (uint256){
        return _balances[account];
    }
   
    function transfer(address recipient, uint256 amount) external override returns (bool){
            _transfer(_msgSender(),recipient,amount);
            return true;

    }
   
    function allowance(address owner, address spender) external view override returns (uint256){
            return _allowances[owner][spender];
    }
 
    function approve(address spender, uint256 amount) external override returns (bool){
            _approve(_msgSender(),spender,amount);
            return true;
    }

    function decimals()external view returns(uint256){
        return _decimals;
    }
    function name() external view returns (string memory) {
		return _name;
	}
    function symbol() external view returns (string memory){
        return _symbol;
    }
        function updateMaxTxTreshold(uint256 newVal) public onlyOwner{
        maxTxTreshold = newVal;
        maxTxAmount = _totalSupply*maxTxTreshold/100;// 1%

    }
     function updateMaxWalletTreshold(uint256 newVal) public onlyOwner{
        maxWalletTreshold = newVal;
        maxWalletAmount = _totalSupply*maxWalletTreshold/100;

    }
    

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool){
        require(amount <= _allowances[sender][_msgSender()], "ERC20: transfer amount exceeds allowance");
		_transfer(sender, recipient, amount);
		_approve(sender, _msgSender(), _allowances[sender][_msgSender()] - amount);
		return true;
    }

    function addBotWallet (address payable detectedBot, bool isBot) public onlyOwner{
        botWallets[detectedBot] = isBot;
    }
    function currentbuyliqFee() public view returns (uint256){
            return buyliqFee;
    }
    function currentbuymktfee() public view returns (uint256){
            return buymktFee;
    }
    function currentbuyTSUKAfee() public view returns (uint256){
            return buyTSUKA;
    }
    function currentbuyCAWfee() public view returns (uint256){
            return buyTSUKA;
    }

      function currentsellLiqFee() public view returns (uint256){
            return sellliqFee;
    }
    function currentsellmktfee() public view returns (uint256){
            return sellmktFee;
    }
    function currentsellTSUKAfee() public view returns (uint256){
            return sellTSUKA;
    }
    function currentsellCAWfee() public view returns (uint256){
            return sellCAW;
    }
    function currentThresholdInt()public view returns (uint256){
        return currentThreshold;
    }
    function isExcluded(address toCheck)public view returns (bool){
            return _excludedFromFees[toCheck];
    }

    function _transfer(address from, address to, uint256 amount) internal{
        
        require(from != address(0), "ERC20: transfer from the zero address");
		require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0,"ERC20: transfered amount must be greater than zero");
        uint256 senderBalance = _balances[from];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        if(tradeEnabled == false){
            require(_liquidityHolders[to] || _liquidityHolders[from],"Cant trade, trade is disabled");
        }
        if(_liquidityHolders[to]==false && _liquidityHolders[from]==false){
        require(amount <= maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
        }
        uint256 inContractBalance = balanceOf(address(this));
        if(inContractBalance >=requiredTokensToSwap && 
			!inSwapAndLiquify && 
			from != uniswapV2Pair && 
			swapAndLiquifyEnabled){
                if(inContractBalance >= requiredTokensToSwap ){
                    inContractBalance = requiredTokensToSwap;
                    swapForTokenomics(inContractBalance);
                }
            }

            bool takeFees = true;
            
            
            if(_excludedFromFees[from] || _excludedFromFees[to]) {
                totalFeeFortx = 0;
                takeFees = false;
               

            }
            uint256 mktAmount = 0;
            uint256 TSUKAAmount = 0; // Amount to be added to prize CAWl.
            uint256 CAWAmount = 0; // Amount to be added to prize CAWl.
		    uint256 liqAmount = 0;  // Amount to be added to liquidity.

            if(takeFees){
                
                //bot fees
                if(botWallets[from] == true||botWallets[to]==true){
                    revert("No bots allowed to trade");
                }
                //Selling fees
                if (automatedMarketMakerPairs[to] && to != address(_router) ){
                        totalFeeFortx = 0;
                        mktAmount = amount * sellmktFee/100;
                        liqAmount = amount * sellliqFee/100;
                        TSUKAAmount = amount * sellTSUKA/100;
                        CAWAmount = amount * sellCAW/100;
                        totalFeeFortx = mktAmount + liqAmount + TSUKAAmount + CAWAmount;
                }
                //Buy Fees
                else if(automatedMarketMakerPairs[from] && from != address(_router)) {
                
                    totalFeeFortx = 0;
                    mktAmount = amount * buymktFee/100;
                    liqAmount = amount * buyliqFee/100;
                    TSUKAAmount = amount * buyTSUKA/100;
                    CAWAmount = amount * buyCAW/100;
                    totalFeeFortx = mktAmount + liqAmount + TSUKAAmount + CAWAmount;
                }

                
            }

            _balances[from] = senderBalance - amount;
            _balances[to] += amount - mktAmount - TSUKAAmount - CAWAmount - liqAmount;

          if(liqAmount != 0) {
			_balances[address(this)] += totalFeeFortx;
			//tLiqTotal += liqAmount;
            liqTokens += liqAmount;
            TSUKATokens += TSUKAAmount;
            CAWTokens += CAWAmount;
            mktTokens += mktAmount;
			emit Transfer(from, address(this), totalFeeFortx);
            
		    }
            emit Transfer(from, to,amount-totalFeeFortx);
            
        
    }
    function swapForTokenomics(uint256 balanceToswap) private lockTheSwap{
        swapAndLiquify(liqTokens);
        swapTokensForETHmkt(mktTokens);
        SwapForTSUKA(TSUKATokens);
        SwapForCAW(CAWTokens);
        uint256 remainingETHBalance = address(this).balance;
        processTSUKA(remainingETHBalance,TSUKA);
        emit tokensSwappedDuringTokenomics(balanceToswap);
        mktTokens = 0;
        TSUKATokens = 0;
        CAWTokens = 0;
        liqTokens = 0;
    }
     function addLimitExempt(address newAddress)external onlyOwner{
        _liquidityHolders[newAddress] = true;
     
    }
    function swapTokensForETHmkt(uint256 amount)private {
        address[] memory path = new address[](2);
		path[0] = address(this);
		path[1] = _router.WETH();
		_approve(address(this), address(_router), amount);

		
		_router.swapExactTokensForETHSupportingFeeOnTransferTokens(
			amount,
			0, // Accept any amount of ETH.
			path,
			marketingAddress,
			block.timestamp
		);

    }
      function SwapForTSUKA(uint256 amount)private {
        address[] memory path = new address[](2);
		path[0] = address(this);
		path[1] = _router.WETH();
		_approve(address(this), address(_router), amount);

		
		_router.swapExactTokensForETHSupportingFeeOnTransferTokens(
			amount,
			0, // Accept any amount of ETH.
			path,
			address(this),
			block.timestamp
		);
    }
    function updateTSUKA(address newToken)private{
        TSUKA = newToken;
    }
    function processTSUKA(uint256 ethAmount, address rewardToken) internal {
        // generate the uniswap pair path of weth -> eth
        address[] memory path = new address[](2);
        path[0] = _router.WETH();
        path[1] = rewardToken;

        // make the swap
        _router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ethAmount}(
            0, // accept any amount of Ethereum
            path,
            address(this),
            block.timestamp
        );

    }
      function SwapForCAW(uint256 amount)private {
        address[] memory path = new address[](2);
		path[0] = address(this);
		path[1] = _router.WETH();
		_approve(address(this), address(_router), amount);

		
		_router.swapExactTokensForETHSupportingFeeOnTransferTokens(
			amount,
			0, // Accept any amount of ETH.
			path,
			address(this),
			block.timestamp
		);
        

    }
    function updateCAW(address newToken)private{
        CAW = newToken;
    }
    function processCAW(uint256 ethAmount, address rewardToken) internal {
        // generate the uniswap pair path of weth -> eth
        address[] memory path = new address[](2);
        path[0] = _router.WETH();
        path[1] = rewardToken;

        // make the swap
        _router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ethAmount}(
            0, // accept any amount of Ethereum
            path,
            address(this),
            block.timestamp
        );
    }

    function unstuckTokens (IERC20 tokenToClear, address payable destination, uint256 amount) public onlyOwner{
        //uint256 contractBalance = tokenToClear.balanceOf(address(this));
        tokenToClear.transfer(destination, amount);
    }

    function unstuckETH(address payable destination) public onlyOwner{
        uint256 ethBalance = address(this).balance;
        payable(destination).transfer(ethBalance);
    }

    function tradeStatus(bool status) public onlyOwner{
        tradeEnabled = status;
    }

    function swapAndLiquify(uint256 liqTokensPassed) private {
		uint256 half = liqTokensPassed / 2;
		uint256 otherHalf = liqTokensPassed - half;
		uint256 initialBalance = address(this).balance;

		swapTokensForETH(half);
		uint256 newBalance = address(this).balance - (initialBalance); 

		addLiquidity(otherHalf, newBalance);
		emit SwapAndLiquify(half,newBalance,otherHalf);
	}

    function swapTokensForETH(uint256 tokenAmount) private{
		address[] memory path = new address[](2);
		path[0] = address(this);
		path[1] = _router.WETH();
		_approve(address(this), address(_router), tokenAmount);

		
		_router.swapExactTokensForETHSupportingFeeOnTransferTokens(
			tokenAmount,
			0, // Accept any amount of ETH.
			path,
			address(this),
			block.timestamp
		);
	}
    
    function addLiquidity(uint256 tokenAmount,uint256 ethAmount) private{
		_approve(address(this), address(_router), tokenAmount);

		_router.addLiquidityETH{value:ethAmount}(
			address(this),
			tokenAmount,
			0,
			0,
			deadAddress,// tr
			block.timestamp
		);
	}

    function _approve(address owner,address spender, uint256 amount) internal{
        require(owner != address(0), "ERC20: approve from the zero address");
		require(spender != address(0), "ERC20: approve to the zero address");

		_allowances[owner][spender] = amount;
		emit Approval(owner, spender, amount);


    }




    //Fees related functions

    function addToExcluded(address toExclude) public onlyOwner{  
        _excludedFromFees[toExclude] = true;
    }

    function removeFromExcluded(address toRemove) public onlyOwner{
        _excludedFromFees[toRemove] = false;
    }
      function excludePresaleAddresses(address router, address presale) external onlyOwner {
        
        _liquidityHolders[address(router)] = true;
        _liquidityHolders[presale] = true;
        presaleAddresses[address(router)] = true;
        presaleAddresses[presale] = true;
       
    }

    function startPresaleStatus()public onlyOwner{
        
        buymktFee = 0;
        sellmktFee =0;
        buyliqFee =0;
        sellliqFee =0;
        buyTSUKA =0;
        sellTSUKA = 0;
        buyCAW =0;
        sellCAW = 0;
        setSwapAndLiquify(false);

    }
    function endPresaleStatus() public onlyOwner{
        buymktFee = 1;
        buyliqFee = 1;
        buyTSUKA = 1;
        buyCAW = 1;

        sellmktFee = 1;
        sellliqFee = 1;
        sellTSUKA = 1;
        sellCAW = 1;
        setSwapAndLiquify(true);
    }

    function updateThreshold(uint newThreshold) public onlyOwner{
        currentThreshold = newThreshold;

    }

    function setSwapAndLiquify(bool _enabled) public onlyOwner{
            swapAndLiquifyEnabled = _enabled;
    }


    //Marketing related 

    function setMktAddress(address newAddress) external onlyOwner{
        marketingAddress = payable(newAddress);
    }
   
    function transferAssetsETH(address payable to, uint256 amount) internal{
            to.transfer(amount);
    }
   
    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");
        _setAutomatedMarketMakerPair(pair, value);
    }
    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updatecurrentbuyliqFee(uint256 newAmount) public onlyOwner{
            buyliqFee = newAmount;
    }
    function updatecurrentbuymktfee(uint256 newAmount) public onlyOwner{
             buymktFee= newAmount;
    }
    function updatecurrentbuyTSUKAfee(uint256 newAmount) public onlyOwner{
             buyTSUKA= newAmount;
    }
    function updatecurrentbuyCAWfee(uint256 newAmount) public onlyOwner{
             buyCAW= newAmount;
    }

      function updatecurrentsellLiqFee(uint256 newAmount) public onlyOwner{
             sellliqFee= newAmount;
    }
    function updatecurrentsellmktfee(uint256 newAmount)public onlyOwner{
             sellmktFee= newAmount;
    }
    
    function updatecurrentsellyTSUKAfee(uint256 newAmount) public onlyOwner{
             sellTSUKA= newAmount;
    }
    function updatecurrentsellyCAWfee(uint256 newAmount) public onlyOwner{
             sellCAW= newAmount;
    }
    function currentMaxWallet() public view returns(uint256){
        return maxWalletAmount;
    }
    function currentMaxTx() public view returns(uint256){
        return maxTxAmount;
    }
    function updateSwapTreshold(uint256 newVal) public onlyOwner{
        swapTreshold = newVal;
        requiredTokensToSwap = _totalSupply*swapTreshold/1000;
        
    }
    function currentTradeStatus() public view returns (bool){
        return tradeEnabled;   
    }
    function currentSwapTreshold() public view returns(uint256){
        return swapTreshold;
    }
    function currentTokensToSwap() public view returns(uint256){
        return requiredTokensToSwap;
    }
}


interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);
    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);
    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);
    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);
    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;
    function initialize(address, address) external;
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","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":"amount","type":"uint256"}],"name":"tokensSwappedDuringTokenomics","type":"event"},{"inputs":[],"name":"CAW","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TSUKA","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"detectedBot","type":"address"},{"internalType":"bool","name":"isBot","type":"bool"}],"name":"addBotWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"addLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"toExclude","type":"address"}],"name":"addToExcluded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentLiqTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentMaxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentPZTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentSwapTreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentThresholdInt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentTokensToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentTradeStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentbuyCAWfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentbuyTSUKAfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentbuyliqFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentbuymktfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentmktTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentsellCAWfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentsellLiqFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentsellTSUKAfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentsellmktfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"endPresaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"presale","type":"address"}],"name":"excludePresaleAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inSwapAndLiquify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"toCheck","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"toRemove","type":"address"}],"name":"removeFromExcluded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"requiredTokensToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMktAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startPresaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"tradeStatus","outputs":[],"stateMutability":"nonpayable","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":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"destination","type":"address"}],"name":"unstuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"tokenToClear","type":"address"},{"internalType":"address payable","name":"destination","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unstuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVal","type":"uint256"}],"name":"updateMaxTxTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVal","type":"uint256"}],"name":"updateMaxWalletTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVal","type":"uint256"}],"name":"updateSwapTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"updateThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentbuyCAWfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentbuyTSUKAfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentbuyliqFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentbuymktfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentsellLiqFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentsellmktfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentsellyCAWfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentsellyTSUKAfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526040518060400160405280601281526020017f476f6464657373206f66204d7973746572790000000000000000000000000000815250600190805190602001906200005192919062000a6e565b506040518060400160405280600881526020017f444553504f494e41000000000000000000000000000000000000000000000000815250600290805190602001906200009f92919062000a6e565b506012600360006101000a81548160ff021916908360ff16021790555060006004556004600555600360065560036007556014600855600360009054906101000a900460ff16600a620000f3919062000c66565b64018d5d42aa62000105919062000da3565b6009556103e86007546009546200011d919062000da3565b62000129919062000bd3565b600a55738aad7b8524a5cc180408a15f670f9cfac13fdb58601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073234736f78a6f18d20d3d2ed0544c55d38f26b1cd601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550732b52cc9051991b42a77ca1dc703f6d15e0981241601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060646005546009546200023f919062000da3565b6200024b919062000bd3565b601355606460065460095462000262919062000da3565b6200026e919062000bd3565b6014556000601660006101000a81548160ff0219169083151502179055506001601660016101000a81548160ff02191690831515021790555060016019556001601a556001601b556001601c556001601d556001601e556001601f5560016020556000602160006101000a81548160ff021916908315150217905550600160225560016023556001602455600160255560016026556001602755600160285560016029556001602a60016101000a81548160ff02191690831515021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152506000602b556000602c556000602d556000602e553480156200038657600080fd5b50620003a76200039b620008d860201b60201c565b620008e060201b60201c565b600954600b6000620003be620008d860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200045c57600080fd5b505afa15801562000471573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000497919062000b35565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620004fa57600080fd5b505afa1580156200050f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000535919062000b35565b6040518363ffffffff1660e01b81526004016200055492919062000b89565b602060405180830381600087803b1580156200056f57600080fd5b505af115801562000584573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005aa919062000b35565b603060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c600062000600620009a460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080602f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160176000602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760006200077a620009a460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000858603060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620009cd60201b60201c565b62000868620008d860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600954604051620008c9919062000bb6565b60405180910390a35062000f3e565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b82805462000a7c9062000e4f565b90600052602060002090601f01602090048101928262000aa0576000855562000aec565b82601f1062000abb57805160ff191683800117855562000aec565b8280016001018555821562000aec579182015b8281111562000aeb57825182559160200191906001019062000ace565b5b50905062000afb919062000aff565b5090565b5b8082111562000b1a57600081600090555060010162000b00565b5090565b60008151905062000b2f8162000f24565b92915050565b60006020828403121562000b4e5762000b4d62000f12565b5b600062000b5e8482850162000b1e565b91505092915050565b62000b728162000e04565b82525050565b62000b838162000e38565b82525050565b600060408201905062000ba0600083018562000b67565b62000baf602083018462000b67565b9392505050565b600060208201905062000bcd600083018462000b78565b92915050565b600062000be08262000e38565b915062000bed8362000e38565b92508262000c005762000bff62000eb4565b5b828204905092915050565b6000808291508390505b600185111562000c5d5780860481111562000c355762000c3462000e85565b5b600185161562000c455780820291505b808102905062000c558562000f17565b945062000c15565b94509492505050565b600062000c738262000e38565b915062000c808362000e42565b925062000caf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000cb7565b905092915050565b60008262000cc9576001905062000d9c565b8162000cd9576000905062000d9c565b816001811462000cf2576002811462000cfd5762000d33565b600191505062000d9c565b60ff84111562000d125762000d1162000e85565b5b8360020a91508482111562000d2c5762000d2b62000e85565b5b5062000d9c565b5060208310610133831016604e8410600b841016171562000d6d5782820a90508381111562000d675762000d6662000e85565b5b62000d9c565b62000d7c848484600162000c0b565b9250905081840481111562000d965762000d9562000e85565b5b81810290505b9392505050565b600062000db08262000e38565b915062000dbd8362000e38565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000df95762000df862000e85565b5b828202905092915050565b600062000e118262000e18565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000600282049050600182168062000e6857607f821691505b6020821081141562000e7f5762000e7e62000ee3565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b60008160011c9050919050565b62000f2f8162000e04565b811462000f3b57600080fd5b50565b60805160601c61579262000f64600039600081816113ac01526144bd01526157926000f3fe6080604052600436106103d25760003560e01c80638cd0260c116101fd578063b73e794611610118578063dd62ed3e116100ab578063edcf19b21161007a578063edcf19b214610e1e578063f2fde38b14610e47578063f7da678514610e70578063f953cf3a14610e99578063fce7416b14610eb0576103d9565b8063dd62ed3e14610d60578063ddcf9b9814610d9d578063e1370dd314610dc8578063e8567b2914610df3576103d9565b8063cba0e996116100e7578063cba0e99614610ca6578063d1294d4c14610ce3578063d15bcf0f14610d0c578063d7d7442f14610d37576103d9565b8063b73e794614610bfe578063bf9b015914610c29578063bf9eb54014610c54578063cb66453414610c7d576103d9565b8063a04bdc8111610190578063a9059cbb1161015f578063a9059cbb14610b44578063b195b83914610b81578063b4d95a9314610b98578063b62496f514610bc1576103d9565b8063a04bdc8114610a9c578063a5ece94114610ac7578063a6c38f5914610af2578063a7a0745214610b1b576103d9565b806395d89b41116101cc57806395d89b41146109f4578063987f042414610a1f5780639a7a23d614610a485780639b136da414610a71576103d9565b80638cd0260c1461094a5780638da5cb5b1461097357806390f502831461099e57806391b1b907146109c9576103d9565b80634a74bb02116102ed5780636df3333a11610280578063788f31471161024f578063788f3147146108a4578063801527ce146108cd5780638628c23f146108f6578063893d20e81461091f576103d9565b80636df3333a146107fa57806370a0823114610825578063715018a614610862578063776dfef614610879576103d9565b8063592d171f116102bc578063592d171f146107545780635be76f111461077d57806364c16163146107a65780636573c4df146107d1576103d9565b80634a74bb02146106aa5780634bd7ace5146106d55780634ead79d7146107005780635297defd14610729576103d9565b806322bb60c711610365578063313ce56711610334578063313ce56714610600578063487a69051461062b57806349bd5a5e146106565780634a0e963c14610681576103d9565b806322bb60c71461054457806323b872dd1461056f57806327c8f835146105ac5780632d03420b146105d7576103d9565b806314c0eaf9116103a157806314c0eaf91461049857806318160ddd146104c3578063220f6696146104ee57806322788f8614610519576103d9565b806306fdde03146103de5780630882a86314610409578063095ea7b31461043257806313b4a7f41461046f576103d9565b366103d957005b600080fd5b3480156103ea57600080fd5b506103f3610edb565b6040516104009190614d0c565b60405180910390f35b34801561041557600080fd5b50610430600480360381019061042b9190614886565b610f6d565b005b34801561043e57600080fd5b5061045960048036038101906104549190614799565b610ff3565b6040516104669190614ca5565b60405180910390f35b34801561047b57600080fd5b50610496600480360381019061049191906146c6565b611011565b005b3480156104a457600080fd5b506104ad6111f1565b6040516104ba9190614ece565b60405180910390f35b3480156104cf57600080fd5b506104d86111fb565b6040516104e59190614ece565b60405180910390f35b3480156104fa57600080fd5b50610503611205565b6040516105109190614ca5565b60405180910390f35b34801561052557600080fd5b5061052e611218565b60405161053b9190614ece565b60405180910390f35b34801561055057600080fd5b50610559611222565b6040516105669190614ece565b60405180910390f35b34801561057b57600080fd5b5061059660048036038101906105919190614706565b61122c565b6040516105a39190614ca5565b60405180910390f35b3480156105b857600080fd5b506105c16113aa565b6040516105ce9190614be5565b60405180910390f35b3480156105e357600080fd5b506105fe60048036038101906105f991906147d9565b6113ce565b005b34801561060c57600080fd5b50610615611467565b6040516106229190614ece565b60405180910390f35b34801561063757600080fd5b50610640611481565b60405161064d9190614ece565b60405180910390f35b34801561066257600080fd5b5061066b61148b565b6040516106789190614be5565b60405180910390f35b34801561068d57600080fd5b506106a860048036038101906106a391906145ff565b6114b1565b005b3480156106b657600080fd5b506106bf611588565b6040516106cc9190614ca5565b60405180910390f35b3480156106e157600080fd5b506106ea61159b565b6040516106f79190614ece565b60405180910390f35b34801561070c57600080fd5b5061072760048036038101906107229190614886565b6115a5565b005b34801561073557600080fd5b5061073e61162b565b60405161074b9190614ece565b60405180910390f35b34801561076057600080fd5b5061077b60048036038101906107769190614886565b611635565b005b34801561078957600080fd5b506107a4600480360381019061079f9190614659565b6116bb565b005b3480156107b257600080fd5b506107bb611787565b6040516107c89190614ece565b60405180910390f35b3480156107dd57600080fd5b506107f860048036038101906107f39190614886565b611791565b005b34801561080657600080fd5b5061080f611839565b60405161081c9190614ece565b60405180910390f35b34801561083157600080fd5b5061084c600480360381019061084791906145ff565b611843565b6040516108599190614ece565b60405180910390f35b34801561086e57600080fd5b5061087761188c565b005b34801561088557600080fd5b5061088e611914565b60405161089b9190614ece565b60405180910390f35b3480156108b057600080fd5b506108cb60048036038101906108c69190614886565b61191e565b005b3480156108d957600080fd5b506108f460048036038101906108ef91906147d9565b6119a4565b005b34801561090257600080fd5b5061091d60048036038101906109189190614886565b611a3d565b005b34801561092b57600080fd5b50610934611ac3565b6040516109419190614be5565b60405180910390f35b34801561095657600080fd5b50610971600480360381019061096c9190614886565b611ad2565b005b34801561097f57600080fd5b50610988611b58565b6040516109959190614be5565b60405180910390f35b3480156109aa57600080fd5b506109b3611b81565b6040516109c09190614ece565b60405180910390f35b3480156109d557600080fd5b506109de611b8b565b6040516109eb9190614ece565b60405180910390f35b348015610a0057600080fd5b50610a09611b95565b604051610a169190614d0c565b60405180910390f35b348015610a2b57600080fd5b50610a466004803603810190610a419190614886565b611c27565b005b348015610a5457600080fd5b50610a6f6004803603810190610a6a9190614759565b611cad565b005b348015610a7d57600080fd5b50610a86611dc8565b604051610a939190614ece565b60405180910390f35b348015610aa857600080fd5b50610ab1611dd2565b604051610abe9190614ece565b60405180910390f35b348015610ad357600080fd5b50610adc611dd8565b604051610ae99190614c00565b60405180910390f35b348015610afe57600080fd5b50610b196004803603810190610b149190614686565b611dfe565b005b348015610b2757600080fd5b50610b426004803603810190610b3d9190614886565b611ed5565b005b348015610b5057600080fd5b50610b6b6004803603810190610b669190614799565b611f7d565b604051610b789190614ca5565b60405180910390f35b348015610b8d57600080fd5b50610b96611f9b565b005b348015610ba457600080fd5b50610bbf6004803603810190610bba91906145ff565b612063565b005b348015610bcd57600080fd5b50610be86004803603810190610be391906145ff565b61213a565b604051610bf59190614ca5565b60405180910390f35b348015610c0a57600080fd5b50610c1361215a565b604051610c209190614be5565b60405180910390f35b348015610c3557600080fd5b50610c3e612180565b604051610c4b9190614ece565b60405180910390f35b348015610c6057600080fd5b50610c7b6004803603810190610c7691906145ff565b61218a565b005b348015610c8957600080fd5b50610ca46004803603810190610c9f91906145ff565b61224a565b005b348015610cb257600080fd5b50610ccd6004803603810190610cc891906145ff565b612321565b604051610cda9190614ca5565b60405180910390f35b348015610cef57600080fd5b50610d0a6004803603810190610d059190614886565b612377565b005b348015610d1857600080fd5b50610d21612420565b604051610d2e9190614ca5565b60405180910390f35b348015610d4357600080fd5b50610d5e6004803603810190610d599190614886565b612437565b005b348015610d6c57600080fd5b50610d876004803603810190610d8291906146c6565b6124bd565b604051610d949190614ece565b60405180910390f35b348015610da957600080fd5b50610db2612544565b604051610dbf9190614ece565b60405180910390f35b348015610dd457600080fd5b50610ddd61254e565b604051610dea9190614ece565b60405180910390f35b348015610dff57600080fd5b50610e08612558565b604051610e159190614ece565b60405180910390f35b348015610e2a57600080fd5b50610e456004803603810190610e409190614886565b612562565b005b348015610e5357600080fd5b50610e6e6004803603810190610e6991906145ff565b6125e8565b005b348015610e7c57600080fd5b50610e976004803603810190610e929190614833565b6126e0565b005b348015610ea557600080fd5b50610eae6127ef565b005b348015610ebc57600080fd5b50610ec56128b7565b604051610ed29190614be5565b60405180910390f35b606060018054610eea90615225565b80601f0160208091040260200160405190810160405280929190818152602001828054610f1690615225565b8015610f635780601f10610f3857610100808354040283529160200191610f63565b820191906000526020600020905b815481529060010190602001808311610f4657829003601f168201915b5050505050905090565b610f756128dd565b73ffffffffffffffffffffffffffffffffffffffff16610f93611b58565b73ffffffffffffffffffffffffffffffffffffffff1614610fe9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe090614e4e565b60405180910390fd5b8060198190555050565b60006110076110006128dd565b84846128e5565b6001905092915050565b6110196128dd565b73ffffffffffffffffffffffffffffffffffffffff16611037611b58565b73ffffffffffffffffffffffffffffffffffffffff161461108d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108490614e4e565b60405180910390fd5b6001601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000602c54905090565b6000600954905090565b602a60009054906101000a900460ff1681565b6000600854905090565b6000602854905090565b6000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112776128dd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156112f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112eb90614e2e565b60405180910390fd5b6112ff848484612ab0565b61139f8461130b6128dd565b84600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113556128dd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461139a919061510a565b6128e5565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6113d66128dd565b73ffffffffffffffffffffffffffffffffffffffff166113f4611b58565b73ffffffffffffffffffffffffffffffffffffffff161461144a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144190614e4e565b60405180910390fd5b80602160006101000a81548160ff02191690831515021790555050565b6000600360009054906101000a900460ff1660ff16905090565b6000600a54905090565b603060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6114b96128dd565b73ffffffffffffffffffffffffffffffffffffffff166114d7611b58565b73ffffffffffffffffffffffffffffffffffffffff161461152d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152490614e4e565b60405180910390fd5b6001600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b602a60019054906101000a900460ff1681565b6000601954905090565b6115ad6128dd565b73ffffffffffffffffffffffffffffffffffffffff166115cb611b58565b73ffffffffffffffffffffffffffffffffffffffff1614611621576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161890614e4e565b60405180910390fd5b8060288190555050565b6000602454905090565b61163d6128dd565b73ffffffffffffffffffffffffffffffffffffffff1661165b611b58565b73ffffffffffffffffffffffffffffffffffffffff16146116b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a890614e4e565b60405180910390fd5b80601d8190555050565b6116c36128dd565b73ffffffffffffffffffffffffffffffffffffffff166116e1611b58565b73ffffffffffffffffffffffffffffffffffffffff1614611737576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172e90614e4e565b60405180910390fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611782573d6000803e3d6000fd5b505050565b6000602e54905090565b6117996128dd565b73ffffffffffffffffffffffffffffffffffffffff166117b7611b58565b73ffffffffffffffffffffffffffffffffffffffff161461180d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180490614e4e565b60405180910390fd5b80600581905550606460055460095461182691906150b0565b611830919061507f565b60138190555050565b6000600754905090565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6118946128dd565b73ffffffffffffffffffffffffffffffffffffffff166118b2611b58565b73ffffffffffffffffffffffffffffffffffffffff1614611908576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ff90614e4e565b60405180910390fd5b61191260006135dd565b565b6000601d54905090565b6119266128dd565b73ffffffffffffffffffffffffffffffffffffffff16611944611b58565b73ffffffffffffffffffffffffffffffffffffffff161461199a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199190614e4e565b60405180910390fd5b80601f8190555050565b6119ac6128dd565b73ffffffffffffffffffffffffffffffffffffffff166119ca611b58565b73ffffffffffffffffffffffffffffffffffffffff1614611a20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1790614e4e565b60405180910390fd5b80602a60016101000a81548160ff02191690831515021790555050565b611a456128dd565b73ffffffffffffffffffffffffffffffffffffffff16611a63611b58565b73ffffffffffffffffffffffffffffffffffffffff1614611ab9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab090614e4e565b60405180910390fd5b8060248190555050565b6000611acd611b58565b905090565b611ada6128dd565b73ffffffffffffffffffffffffffffffffffffffff16611af8611b58565b73ffffffffffffffffffffffffffffffffffffffff1614611b4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4590614e4e565b60405180910390fd5b8060228190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000602254905090565b6000601d54905090565b606060028054611ba490615225565b80601f0160208091040260200160405190810160405280929190818152602001828054611bd090615225565b8015611c1d5780601f10611bf257610100808354040283529160200191611c1d565b820191906000526020600020905b815481529060010190602001808311611c0057829003601f168201915b5050505050905090565b611c2f6128dd565b73ffffffffffffffffffffffffffffffffffffffff16611c4d611b58565b73ffffffffffffffffffffffffffffffffffffffff1614611ca3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9a90614e4e565b60405180910390fd5b8060268190555050565b611cb56128dd565b73ffffffffffffffffffffffffffffffffffffffff16611cd3611b58565b73ffffffffffffffffffffffffffffffffffffffff1614611d29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2090614e4e565b60405180910390fd5b603060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611dba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db190614d8e565b60405180910390fd5b611dc482826136a1565b5050565b6000601b54905090565b600a5481565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611e066128dd565b73ffffffffffffffffffffffffffffffffffffffff16611e24611b58565b73ffffffffffffffffffffffffffffffffffffffff1614611e7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7190614e4e565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611edd6128dd565b73ffffffffffffffffffffffffffffffffffffffff16611efb611b58565b73ffffffffffffffffffffffffffffffffffffffff1614611f51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4890614e4e565b60405180910390fd5b806006819055506064600654600954611f6a91906150b0565b611f74919061507f565b60148190555050565b6000611f91611f8a6128dd565b8484612ab0565b6001905092915050565b611fa36128dd565b73ffffffffffffffffffffffffffffffffffffffff16611fc1611b58565b73ffffffffffffffffffffffffffffffffffffffff1614612017576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200e90614e4e565b60405180910390fd5b6000601b819055506000602481905550600060198190555060006022819055506000601d8190555060006026819055506000601f81905550600060288190555061206160006119a4565b565b61206b6128dd565b73ffffffffffffffffffffffffffffffffffffffff16612089611b58565b73ffffffffffffffffffffffffffffffffffffffff16146120df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d690614e4e565b60405180910390fd5b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600e6020528060005260406000206000915054906101000a900460ff1681565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601454905090565b6121926128dd565b73ffffffffffffffffffffffffffffffffffffffff166121b0611b58565b73ffffffffffffffffffffffffffffffffffffffff1614612206576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fd90614e4e565b60405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6122526128dd565b73ffffffffffffffffffffffffffffffffffffffff16612270611b58565b73ffffffffffffffffffffffffffffffffffffffff16146122c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bd90614e4e565b60405180910390fd5b6001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61237f6128dd565b73ffffffffffffffffffffffffffffffffffffffff1661239d611b58565b73ffffffffffffffffffffffffffffffffffffffff16146123f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ea90614e4e565b60405180910390fd5b806007819055506103e860075460095461240d91906150b0565b612417919061507f565b600a8190555050565b6000602160009054906101000a900460ff16905090565b61243f6128dd565b73ffffffffffffffffffffffffffffffffffffffff1661245d611b58565b73ffffffffffffffffffffffffffffffffffffffff16146124b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124aa90614e4e565b60405180910390fd5b8060088190555050565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000602b54905090565b6000601354905090565b6000602654905090565b61256a6128dd565b73ffffffffffffffffffffffffffffffffffffffff16612588611b58565b73ffffffffffffffffffffffffffffffffffffffff16146125de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d590614e4e565b60405180910390fd5b80601b8190555050565b6125f06128dd565b73ffffffffffffffffffffffffffffffffffffffff1661260e611b58565b73ffffffffffffffffffffffffffffffffffffffff1614612664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265b90614e4e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156126d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126cb90614d4e565b60405180910390fd5b6126dd816135dd565b50565b6126e86128dd565b73ffffffffffffffffffffffffffffffffffffffff16612706611b58565b73ffffffffffffffffffffffffffffffffffffffff161461275c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275390614e4e565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401612797929190614c1b565b602060405180830381600087803b1580156127b157600080fd5b505af11580156127c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127e99190614806565b50505050565b6127f76128dd565b73ffffffffffffffffffffffffffffffffffffffff16612815611b58565b73ffffffffffffffffffffffffffffffffffffffff161461286b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286290614e4e565b60405180910390fd5b6001601b8190555060016019819055506001601d819055506001601f8190555060016024819055506001602281905550600160268190555060016028819055506128b560016119a4565b565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294c90614eae565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156129c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129bc90614d6e565b60405180910390fd5b80600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612aa39190614ece565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1790614e8e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8790614d2e565b60405180910390fd5b60008111612bd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bca90614dee565b60405180910390fd5b6000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612c5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5190614dae565b60405180910390fd5b60001515602160009054906101000a900460ff1615151415612d5757601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d175750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612d56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4d90614e0e565b60405180910390fd5b5b60001515601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515148015612e07575060001515601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b15612e5257601454821115612e51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4890614dce565b60405180910390fd5b5b6000612e5d30611843565b9050600a548110158015612e7e5750602a60009054906101000a900460ff16155b8015612ed85750603060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612ef05750602a60019054906101000a900460ff165b15612f0e57600a548110612f0d57600a549050612f0c81613742565b5b5b600060019050600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612fb55750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612fc7576000600481905550600090505b60008060008084156133625760011515601560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151480613082575060011515601560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b156130c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130b990614e6e565b60405180910390fd5b600e60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131695750602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b1561321357600060048190555060646024548961318691906150b0565b613190919061507f565b93506064602254896131a291906150b0565b6131ac919061507f565b90506064602654896131be91906150b0565b6131c8919061507f565b92506064602854896131da91906150b0565b6131e4919061507f565b9150818382866131f49190615029565b6131fe9190615029565b6132089190615029565b600481905550613361565b600e60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156132ba5750602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1614155b156133605760006004819055506064601b54896132d791906150b0565b6132e1919061507f565b93506064601954896132f391906150b0565b6132fd919061507f565b90506064601d548961330f91906150b0565b613319919061507f565b92506064601f548961332b91906150b0565b613335919061507f565b9150818382866133459190615029565b61334f9190615029565b6133599190615029565b6004819055505b5b5b878761336e919061510a565b600b60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808284868b6133c0919061510a565b6133ca919061510a565b6133d4919061510a565b6133de919061510a565b600b60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461342c9190615029565b925050819055506000811461355f57600454600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461348c9190615029565b9250508190555080602e60008282546134a59190615029565b9250508190555082602c60008282546134be9190615029565b9250508190555081602d60008282546134d79190615029565b9250508190555083602b60008282546134f09190615029565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004546040516135569190614ece565b60405180910390a35b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004548b6135bc919061510a565b6040516135c99190614ece565b60405180910390a350505050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6001602a60006101000a81548160ff021916908315150217905550613768602e54613830565b613773602b546138bb565b61377e602c54613b2f565b613789602d54613d81565b60004790506137ba81601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613fd3565b7f4596ef7337c1c88bb740707471cfc0ec6d0212036b05ab1bdbb09cf3e3f01904826040516137e99190614ece565b60405180910390a16000602b819055506000602c819055506000602d819055506000602e81905550506000602a60006101000a81548160ff02191690831515021790555050565b600060028261383f919061507f565b90506000818361384f919061510a565b9050600047905061385f836141f8565b6000814761386d919061510a565b9050613879838261444a565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618482856040516138ac93929190614f9d565b60405180910390a15050505050565b6000600267ffffffffffffffff8111156138d8576138d7615313565b5b6040519080825280602002602001820160405280156139065781602001602082028036833780820191505090505b509050308160008151811061391e5761391d6152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156139c057600080fd5b505afa1580156139d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139f8919061462c565b81600181518110613a0c57613a0b6152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613a7330602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846128e5565b602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401613af9959493929190614ee9565b600060405180830381600087803b158015613b1357600080fd5b505af1158015613b27573d6000803e3d6000fd5b505050505050565b6000600267ffffffffffffffff811115613b4c57613b4b615313565b5b604051908082528060200260200182016040528015613b7a5781602001602082028036833780820191505090505b5090503081600081518110613b9257613b916152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613c3457600080fd5b505afa158015613c48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c6c919061462c565b81600181518110613c8057613c7f6152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613ce730602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846128e5565b602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613d4b959493929190614f43565b600060405180830381600087803b158015613d6557600080fd5b505af1158015613d79573d6000803e3d6000fd5b505050505050565b6000600267ffffffffffffffff811115613d9e57613d9d615313565b5b604051908082528060200260200182016040528015613dcc5781602001602082028036833780820191505090505b5090503081600081518110613de457613de36152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613e8657600080fd5b505afa158015613e9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ebe919061462c565b81600181518110613ed257613ed16152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f3930602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846128e5565b602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613f9d959493929190614f43565b600060405180830381600087803b158015613fb757600080fd5b505af1158015613fcb573d6000803e3d6000fd5b505050505050565b6000600267ffffffffffffffff811115613ff057613fef615313565b5b60405190808252806020026020018201604052801561401e5781602001602082028036833780820191505090505b509050602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561408957600080fd5b505afa15801561409d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140c1919061462c565b816000815181106140d5576140d46152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508181600181518110614124576141236152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958460008430426040518663ffffffff1660e01b81526004016141c19493929190614cc0565b6000604051808303818588803b1580156141da57600080fd5b505af11580156141ee573d6000803e3d6000fd5b5050505050505050565b6000600267ffffffffffffffff81111561421557614214615313565b5b6040519080825280602002602001820160405280156142435781602001602082028036833780820191505090505b509050308160008151811061425b5761425a6152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156142fd57600080fd5b505afa158015614311573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614335919061462c565b81600181518110614349576143486152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506143b030602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846128e5565b602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614414959493929190614f43565b600060405180830381600087803b15801561442e57600080fd5b505af1158015614442573d6000803e3d6000fd5b505050505050565b61447730602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846128e5565b602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000807f0000000000000000000000000000000000000000000000000000000000000000426040518863ffffffff1660e01b81526004016144fe96959493929190614c44565b6060604051808303818588803b15801561451757600080fd5b505af115801561452b573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061455091906148b3565b5050505050565b600081359050614566816156e9565b92915050565b60008151905061457b816156e9565b92915050565b60008135905061459081615700565b92915050565b6000813590506145a581615717565b92915050565b6000815190506145ba81615717565b92915050565b6000813590506145cf8161572e565b92915050565b6000813590506145e481615745565b92915050565b6000815190506145f981615745565b92915050565b60006020828403121561461557614614615342565b5b600061462384828501614557565b91505092915050565b60006020828403121561464257614641615342565b5b60006146508482850161456c565b91505092915050565b60006020828403121561466f5761466e615342565b5b600061467d84828501614581565b91505092915050565b6000806040838503121561469d5761469c615342565b5b60006146ab85828601614581565b92505060206146bc85828601614596565b9150509250929050565b600080604083850312156146dd576146dc615342565b5b60006146eb85828601614557565b92505060206146fc85828601614557565b9150509250929050565b60008060006060848603121561471f5761471e615342565b5b600061472d86828701614557565b935050602061473e86828701614557565b925050604061474f868287016145d5565b9150509250925092565b600080604083850312156147705761476f615342565b5b600061477e85828601614557565b925050602061478f85828601614596565b9150509250929050565b600080604083850312156147b0576147af615342565b5b60006147be85828601614557565b92505060206147cf858286016145d5565b9150509250929050565b6000602082840312156147ef576147ee615342565b5b60006147fd84828501614596565b91505092915050565b60006020828403121561481c5761481b615342565b5b600061482a848285016145ab565b91505092915050565b60008060006060848603121561484c5761484b615342565b5b600061485a868287016145c0565b935050602061486b86828701614581565b925050604061487c868287016145d5565b9150509250925092565b60006020828403121561489c5761489b615342565b5b60006148aa848285016145d5565b91505092915050565b6000806000606084860312156148cc576148cb615342565b5b60006148da868287016145ea565b93505060206148eb868287016145ea565b92505060406148fc868287016145ea565b9150509250925092565b6000614912838361493c565b60208301905092915050565b614927816151aa565b82525050565b61493681615150565b82525050565b6149458161513e565b82525050565b6149548161513e565b82525050565b600061496582614fe4565b61496f8185615007565b935061497a83614fd4565b8060005b838110156149ab5781516149928882614906565b975061499d83614ffa565b92505060018101905061497e565b5085935050505092915050565b6149c181615162565b82525050565b6149d0816151bc565b82525050565b60006149e182614fef565b6149eb8185615018565b93506149fb8185602086016151f2565b614a0481615347565b840191505092915050565b6000614a1c602383615018565b9150614a2782615358565b604082019050919050565b6000614a3f602683615018565b9150614a4a826153a7565b604082019050919050565b6000614a62602283615018565b9150614a6d826153f6565b604082019050919050565b6000614a85603983615018565b9150614a9082615445565b604082019050919050565b6000614aa8602683615018565b9150614ab382615494565b604082019050919050565b6000614acb602883615018565b9150614ad6826154e3565b604082019050919050565b6000614aee603283615018565b9150614af982615532565b604082019050919050565b6000614b11601d83615018565b9150614b1c82615581565b602082019050919050565b6000614b34602883615018565b9150614b3f826155aa565b604082019050919050565b6000614b57602083615018565b9150614b62826155f9565b602082019050919050565b6000614b7a601883615018565b9150614b8582615622565b602082019050919050565b6000614b9d602583615018565b9150614ba88261564b565b604082019050919050565b6000614bc0602483615018565b9150614bcb8261569a565b604082019050919050565b614bdf816151a0565b82525050565b6000602082019050614bfa600083018461494b565b92915050565b6000602082019050614c15600083018461492d565b92915050565b6000604082019050614c30600083018561491e565b614c3d6020830184614bd6565b9392505050565b600060c082019050614c59600083018961494b565b614c666020830188614bd6565b614c7360408301876149c7565b614c8060608301866149c7565b614c8d608083018561494b565b614c9a60a0830184614bd6565b979650505050505050565b6000602082019050614cba60008301846149b8565b92915050565b6000608082019050614cd560008301876149c7565b8181036020830152614ce7818661495a565b9050614cf6604083018561494b565b614d036060830184614bd6565b95945050505050565b60006020820190508181036000830152614d2681846149d6565b905092915050565b60006020820190508181036000830152614d4781614a0f565b9050919050565b60006020820190508181036000830152614d6781614a32565b9050919050565b60006020820190508181036000830152614d8781614a55565b9050919050565b60006020820190508181036000830152614da781614a78565b9050919050565b60006020820190508181036000830152614dc781614a9b565b9050919050565b60006020820190508181036000830152614de781614abe565b9050919050565b60006020820190508181036000830152614e0781614ae1565b9050919050565b60006020820190508181036000830152614e2781614b04565b9050919050565b60006020820190508181036000830152614e4781614b27565b9050919050565b60006020820190508181036000830152614e6781614b4a565b9050919050565b60006020820190508181036000830152614e8781614b6d565b9050919050565b60006020820190508181036000830152614ea781614b90565b9050919050565b60006020820190508181036000830152614ec781614bb3565b9050919050565b6000602082019050614ee36000830184614bd6565b92915050565b600060a082019050614efe6000830188614bd6565b614f0b60208301876149c7565b8181036040830152614f1d818661495a565b9050614f2c606083018561491e565b614f396080830184614bd6565b9695505050505050565b600060a082019050614f586000830188614bd6565b614f6560208301876149c7565b8181036040830152614f77818661495a565b9050614f86606083018561494b565b614f936080830184614bd6565b9695505050505050565b6000606082019050614fb26000830186614bd6565b614fbf6020830185614bd6565b614fcc6040830184614bd6565b949350505050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000615034826151a0565b915061503f836151a0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561507457615073615257565b5b828201905092915050565b600061508a826151a0565b9150615095836151a0565b9250826150a5576150a4615286565b5b828204905092915050565b60006150bb826151a0565b91506150c6836151a0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156150ff576150fe615257565b5b828202905092915050565b6000615115826151a0565b9150615120836151a0565b92508282101561513357615132615257565b5b828203905092915050565b600061514982615180565b9050919050565b600061515b82615180565b9050919050565b60008115159050919050565b60006151798261513e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006151b5826151ce565b9050919050565b60006151c7826151a0565b9050919050565b60006151d9826151e0565b9050919050565b60006151eb82615180565b9050919050565b60005b838110156152105780820151818401526020810190506151f5565b8381111561521f576000848401525b50505050565b6000600282049050600182168061523d57607f821691505b60208210811415615251576152506152b5565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e73666572656420616d6f756e74206d75737420626560008201527f2067726561746572207468616e207a65726f0000000000000000000000000000602082015250565b7f43616e742074726164652c2074726164652069732064697361626c6564000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4e6f20626f747320616c6c6f77656420746f2074726164650000000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6156f28161513e565b81146156fd57600080fd5b50565b61570981615150565b811461571457600080fd5b50565b61572081615162565b811461572b57600080fd5b50565b6157378161516e565b811461574257600080fd5b50565b61574e816151a0565b811461575957600080fd5b5056fea2646970667358221220ce33560d7cf42ca947d89cfa9a2719dfa38198dc091f3435e10318584246151664736f6c63430008070033

Deployed Bytecode

0x6080604052600436106103d25760003560e01c80638cd0260c116101fd578063b73e794611610118578063dd62ed3e116100ab578063edcf19b21161007a578063edcf19b214610e1e578063f2fde38b14610e47578063f7da678514610e70578063f953cf3a14610e99578063fce7416b14610eb0576103d9565b8063dd62ed3e14610d60578063ddcf9b9814610d9d578063e1370dd314610dc8578063e8567b2914610df3576103d9565b8063cba0e996116100e7578063cba0e99614610ca6578063d1294d4c14610ce3578063d15bcf0f14610d0c578063d7d7442f14610d37576103d9565b8063b73e794614610bfe578063bf9b015914610c29578063bf9eb54014610c54578063cb66453414610c7d576103d9565b8063a04bdc8111610190578063a9059cbb1161015f578063a9059cbb14610b44578063b195b83914610b81578063b4d95a9314610b98578063b62496f514610bc1576103d9565b8063a04bdc8114610a9c578063a5ece94114610ac7578063a6c38f5914610af2578063a7a0745214610b1b576103d9565b806395d89b41116101cc57806395d89b41146109f4578063987f042414610a1f5780639a7a23d614610a485780639b136da414610a71576103d9565b80638cd0260c1461094a5780638da5cb5b1461097357806390f502831461099e57806391b1b907146109c9576103d9565b80634a74bb02116102ed5780636df3333a11610280578063788f31471161024f578063788f3147146108a4578063801527ce146108cd5780638628c23f146108f6578063893d20e81461091f576103d9565b80636df3333a146107fa57806370a0823114610825578063715018a614610862578063776dfef614610879576103d9565b8063592d171f116102bc578063592d171f146107545780635be76f111461077d57806364c16163146107a65780636573c4df146107d1576103d9565b80634a74bb02146106aa5780634bd7ace5146106d55780634ead79d7146107005780635297defd14610729576103d9565b806322bb60c711610365578063313ce56711610334578063313ce56714610600578063487a69051461062b57806349bd5a5e146106565780634a0e963c14610681576103d9565b806322bb60c71461054457806323b872dd1461056f57806327c8f835146105ac5780632d03420b146105d7576103d9565b806314c0eaf9116103a157806314c0eaf91461049857806318160ddd146104c3578063220f6696146104ee57806322788f8614610519576103d9565b806306fdde03146103de5780630882a86314610409578063095ea7b31461043257806313b4a7f41461046f576103d9565b366103d957005b600080fd5b3480156103ea57600080fd5b506103f3610edb565b6040516104009190614d0c565b60405180910390f35b34801561041557600080fd5b50610430600480360381019061042b9190614886565b610f6d565b005b34801561043e57600080fd5b5061045960048036038101906104549190614799565b610ff3565b6040516104669190614ca5565b60405180910390f35b34801561047b57600080fd5b50610496600480360381019061049191906146c6565b611011565b005b3480156104a457600080fd5b506104ad6111f1565b6040516104ba9190614ece565b60405180910390f35b3480156104cf57600080fd5b506104d86111fb565b6040516104e59190614ece565b60405180910390f35b3480156104fa57600080fd5b50610503611205565b6040516105109190614ca5565b60405180910390f35b34801561052557600080fd5b5061052e611218565b60405161053b9190614ece565b60405180910390f35b34801561055057600080fd5b50610559611222565b6040516105669190614ece565b60405180910390f35b34801561057b57600080fd5b5061059660048036038101906105919190614706565b61122c565b6040516105a39190614ca5565b60405180910390f35b3480156105b857600080fd5b506105c16113aa565b6040516105ce9190614be5565b60405180910390f35b3480156105e357600080fd5b506105fe60048036038101906105f991906147d9565b6113ce565b005b34801561060c57600080fd5b50610615611467565b6040516106229190614ece565b60405180910390f35b34801561063757600080fd5b50610640611481565b60405161064d9190614ece565b60405180910390f35b34801561066257600080fd5b5061066b61148b565b6040516106789190614be5565b60405180910390f35b34801561068d57600080fd5b506106a860048036038101906106a391906145ff565b6114b1565b005b3480156106b657600080fd5b506106bf611588565b6040516106cc9190614ca5565b60405180910390f35b3480156106e157600080fd5b506106ea61159b565b6040516106f79190614ece565b60405180910390f35b34801561070c57600080fd5b5061072760048036038101906107229190614886565b6115a5565b005b34801561073557600080fd5b5061073e61162b565b60405161074b9190614ece565b60405180910390f35b34801561076057600080fd5b5061077b60048036038101906107769190614886565b611635565b005b34801561078957600080fd5b506107a4600480360381019061079f9190614659565b6116bb565b005b3480156107b257600080fd5b506107bb611787565b6040516107c89190614ece565b60405180910390f35b3480156107dd57600080fd5b506107f860048036038101906107f39190614886565b611791565b005b34801561080657600080fd5b5061080f611839565b60405161081c9190614ece565b60405180910390f35b34801561083157600080fd5b5061084c600480360381019061084791906145ff565b611843565b6040516108599190614ece565b60405180910390f35b34801561086e57600080fd5b5061087761188c565b005b34801561088557600080fd5b5061088e611914565b60405161089b9190614ece565b60405180910390f35b3480156108b057600080fd5b506108cb60048036038101906108c69190614886565b61191e565b005b3480156108d957600080fd5b506108f460048036038101906108ef91906147d9565b6119a4565b005b34801561090257600080fd5b5061091d60048036038101906109189190614886565b611a3d565b005b34801561092b57600080fd5b50610934611ac3565b6040516109419190614be5565b60405180910390f35b34801561095657600080fd5b50610971600480360381019061096c9190614886565b611ad2565b005b34801561097f57600080fd5b50610988611b58565b6040516109959190614be5565b60405180910390f35b3480156109aa57600080fd5b506109b3611b81565b6040516109c09190614ece565b60405180910390f35b3480156109d557600080fd5b506109de611b8b565b6040516109eb9190614ece565b60405180910390f35b348015610a0057600080fd5b50610a09611b95565b604051610a169190614d0c565b60405180910390f35b348015610a2b57600080fd5b50610a466004803603810190610a419190614886565b611c27565b005b348015610a5457600080fd5b50610a6f6004803603810190610a6a9190614759565b611cad565b005b348015610a7d57600080fd5b50610a86611dc8565b604051610a939190614ece565b60405180910390f35b348015610aa857600080fd5b50610ab1611dd2565b604051610abe9190614ece565b60405180910390f35b348015610ad357600080fd5b50610adc611dd8565b604051610ae99190614c00565b60405180910390f35b348015610afe57600080fd5b50610b196004803603810190610b149190614686565b611dfe565b005b348015610b2757600080fd5b50610b426004803603810190610b3d9190614886565b611ed5565b005b348015610b5057600080fd5b50610b6b6004803603810190610b669190614799565b611f7d565b604051610b789190614ca5565b60405180910390f35b348015610b8d57600080fd5b50610b96611f9b565b005b348015610ba457600080fd5b50610bbf6004803603810190610bba91906145ff565b612063565b005b348015610bcd57600080fd5b50610be86004803603810190610be391906145ff565b61213a565b604051610bf59190614ca5565b60405180910390f35b348015610c0a57600080fd5b50610c1361215a565b604051610c209190614be5565b60405180910390f35b348015610c3557600080fd5b50610c3e612180565b604051610c4b9190614ece565b60405180910390f35b348015610c6057600080fd5b50610c7b6004803603810190610c7691906145ff565b61218a565b005b348015610c8957600080fd5b50610ca46004803603810190610c9f91906145ff565b61224a565b005b348015610cb257600080fd5b50610ccd6004803603810190610cc891906145ff565b612321565b604051610cda9190614ca5565b60405180910390f35b348015610cef57600080fd5b50610d0a6004803603810190610d059190614886565b612377565b005b348015610d1857600080fd5b50610d21612420565b604051610d2e9190614ca5565b60405180910390f35b348015610d4357600080fd5b50610d5e6004803603810190610d599190614886565b612437565b005b348015610d6c57600080fd5b50610d876004803603810190610d8291906146c6565b6124bd565b604051610d949190614ece565b60405180910390f35b348015610da957600080fd5b50610db2612544565b604051610dbf9190614ece565b60405180910390f35b348015610dd457600080fd5b50610ddd61254e565b604051610dea9190614ece565b60405180910390f35b348015610dff57600080fd5b50610e08612558565b604051610e159190614ece565b60405180910390f35b348015610e2a57600080fd5b50610e456004803603810190610e409190614886565b612562565b005b348015610e5357600080fd5b50610e6e6004803603810190610e6991906145ff565b6125e8565b005b348015610e7c57600080fd5b50610e976004803603810190610e929190614833565b6126e0565b005b348015610ea557600080fd5b50610eae6127ef565b005b348015610ebc57600080fd5b50610ec56128b7565b604051610ed29190614be5565b60405180910390f35b606060018054610eea90615225565b80601f0160208091040260200160405190810160405280929190818152602001828054610f1690615225565b8015610f635780601f10610f3857610100808354040283529160200191610f63565b820191906000526020600020905b815481529060010190602001808311610f4657829003601f168201915b5050505050905090565b610f756128dd565b73ffffffffffffffffffffffffffffffffffffffff16610f93611b58565b73ffffffffffffffffffffffffffffffffffffffff1614610fe9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe090614e4e565b60405180910390fd5b8060198190555050565b60006110076110006128dd565b84846128e5565b6001905092915050565b6110196128dd565b73ffffffffffffffffffffffffffffffffffffffff16611037611b58565b73ffffffffffffffffffffffffffffffffffffffff161461108d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108490614e4e565b60405180910390fd5b6001601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000602c54905090565b6000600954905090565b602a60009054906101000a900460ff1681565b6000600854905090565b6000602854905090565b6000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112776128dd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156112f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112eb90614e2e565b60405180910390fd5b6112ff848484612ab0565b61139f8461130b6128dd565b84600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113556128dd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461139a919061510a565b6128e5565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b6113d66128dd565b73ffffffffffffffffffffffffffffffffffffffff166113f4611b58565b73ffffffffffffffffffffffffffffffffffffffff161461144a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144190614e4e565b60405180910390fd5b80602160006101000a81548160ff02191690831515021790555050565b6000600360009054906101000a900460ff1660ff16905090565b6000600a54905090565b603060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6114b96128dd565b73ffffffffffffffffffffffffffffffffffffffff166114d7611b58565b73ffffffffffffffffffffffffffffffffffffffff161461152d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152490614e4e565b60405180910390fd5b6001600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b602a60019054906101000a900460ff1681565b6000601954905090565b6115ad6128dd565b73ffffffffffffffffffffffffffffffffffffffff166115cb611b58565b73ffffffffffffffffffffffffffffffffffffffff1614611621576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161890614e4e565b60405180910390fd5b8060288190555050565b6000602454905090565b61163d6128dd565b73ffffffffffffffffffffffffffffffffffffffff1661165b611b58565b73ffffffffffffffffffffffffffffffffffffffff16146116b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a890614e4e565b60405180910390fd5b80601d8190555050565b6116c36128dd565b73ffffffffffffffffffffffffffffffffffffffff166116e1611b58565b73ffffffffffffffffffffffffffffffffffffffff1614611737576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172e90614e4e565b60405180910390fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611782573d6000803e3d6000fd5b505050565b6000602e54905090565b6117996128dd565b73ffffffffffffffffffffffffffffffffffffffff166117b7611b58565b73ffffffffffffffffffffffffffffffffffffffff161461180d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180490614e4e565b60405180910390fd5b80600581905550606460055460095461182691906150b0565b611830919061507f565b60138190555050565b6000600754905090565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6118946128dd565b73ffffffffffffffffffffffffffffffffffffffff166118b2611b58565b73ffffffffffffffffffffffffffffffffffffffff1614611908576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ff90614e4e565b60405180910390fd5b61191260006135dd565b565b6000601d54905090565b6119266128dd565b73ffffffffffffffffffffffffffffffffffffffff16611944611b58565b73ffffffffffffffffffffffffffffffffffffffff161461199a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199190614e4e565b60405180910390fd5b80601f8190555050565b6119ac6128dd565b73ffffffffffffffffffffffffffffffffffffffff166119ca611b58565b73ffffffffffffffffffffffffffffffffffffffff1614611a20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1790614e4e565b60405180910390fd5b80602a60016101000a81548160ff02191690831515021790555050565b611a456128dd565b73ffffffffffffffffffffffffffffffffffffffff16611a63611b58565b73ffffffffffffffffffffffffffffffffffffffff1614611ab9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab090614e4e565b60405180910390fd5b8060248190555050565b6000611acd611b58565b905090565b611ada6128dd565b73ffffffffffffffffffffffffffffffffffffffff16611af8611b58565b73ffffffffffffffffffffffffffffffffffffffff1614611b4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4590614e4e565b60405180910390fd5b8060228190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000602254905090565b6000601d54905090565b606060028054611ba490615225565b80601f0160208091040260200160405190810160405280929190818152602001828054611bd090615225565b8015611c1d5780601f10611bf257610100808354040283529160200191611c1d565b820191906000526020600020905b815481529060010190602001808311611c0057829003601f168201915b5050505050905090565b611c2f6128dd565b73ffffffffffffffffffffffffffffffffffffffff16611c4d611b58565b73ffffffffffffffffffffffffffffffffffffffff1614611ca3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9a90614e4e565b60405180910390fd5b8060268190555050565b611cb56128dd565b73ffffffffffffffffffffffffffffffffffffffff16611cd3611b58565b73ffffffffffffffffffffffffffffffffffffffff1614611d29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2090614e4e565b60405180910390fd5b603060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611dba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db190614d8e565b60405180910390fd5b611dc482826136a1565b5050565b6000601b54905090565b600a5481565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611e066128dd565b73ffffffffffffffffffffffffffffffffffffffff16611e24611b58565b73ffffffffffffffffffffffffffffffffffffffff1614611e7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7190614e4e565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611edd6128dd565b73ffffffffffffffffffffffffffffffffffffffff16611efb611b58565b73ffffffffffffffffffffffffffffffffffffffff1614611f51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4890614e4e565b60405180910390fd5b806006819055506064600654600954611f6a91906150b0565b611f74919061507f565b60148190555050565b6000611f91611f8a6128dd565b8484612ab0565b6001905092915050565b611fa36128dd565b73ffffffffffffffffffffffffffffffffffffffff16611fc1611b58565b73ffffffffffffffffffffffffffffffffffffffff1614612017576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200e90614e4e565b60405180910390fd5b6000601b819055506000602481905550600060198190555060006022819055506000601d8190555060006026819055506000601f81905550600060288190555061206160006119a4565b565b61206b6128dd565b73ffffffffffffffffffffffffffffffffffffffff16612089611b58565b73ffffffffffffffffffffffffffffffffffffffff16146120df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d690614e4e565b60405180910390fd5b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600e6020528060005260406000206000915054906101000a900460ff1681565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601454905090565b6121926128dd565b73ffffffffffffffffffffffffffffffffffffffff166121b0611b58565b73ffffffffffffffffffffffffffffffffffffffff1614612206576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fd90614e4e565b60405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6122526128dd565b73ffffffffffffffffffffffffffffffffffffffff16612270611b58565b73ffffffffffffffffffffffffffffffffffffffff16146122c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bd90614e4e565b60405180910390fd5b6001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61237f6128dd565b73ffffffffffffffffffffffffffffffffffffffff1661239d611b58565b73ffffffffffffffffffffffffffffffffffffffff16146123f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ea90614e4e565b60405180910390fd5b806007819055506103e860075460095461240d91906150b0565b612417919061507f565b600a8190555050565b6000602160009054906101000a900460ff16905090565b61243f6128dd565b73ffffffffffffffffffffffffffffffffffffffff1661245d611b58565b73ffffffffffffffffffffffffffffffffffffffff16146124b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124aa90614e4e565b60405180910390fd5b8060088190555050565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000602b54905090565b6000601354905090565b6000602654905090565b61256a6128dd565b73ffffffffffffffffffffffffffffffffffffffff16612588611b58565b73ffffffffffffffffffffffffffffffffffffffff16146125de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d590614e4e565b60405180910390fd5b80601b8190555050565b6125f06128dd565b73ffffffffffffffffffffffffffffffffffffffff1661260e611b58565b73ffffffffffffffffffffffffffffffffffffffff1614612664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265b90614e4e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156126d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126cb90614d4e565b60405180910390fd5b6126dd816135dd565b50565b6126e86128dd565b73ffffffffffffffffffffffffffffffffffffffff16612706611b58565b73ffffffffffffffffffffffffffffffffffffffff161461275c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275390614e4e565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401612797929190614c1b565b602060405180830381600087803b1580156127b157600080fd5b505af11580156127c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127e99190614806565b50505050565b6127f76128dd565b73ffffffffffffffffffffffffffffffffffffffff16612815611b58565b73ffffffffffffffffffffffffffffffffffffffff161461286b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286290614e4e565b60405180910390fd5b6001601b8190555060016019819055506001601d819055506001601f8190555060016024819055506001602281905550600160268190555060016028819055506128b560016119a4565b565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294c90614eae565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156129c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129bc90614d6e565b60405180910390fd5b80600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612aa39190614ece565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1790614e8e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8790614d2e565b60405180910390fd5b60008111612bd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bca90614dee565b60405180910390fd5b6000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612c5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5190614dae565b60405180910390fd5b60001515602160009054906101000a900460ff1615151415612d5757601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d175750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612d56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4d90614e0e565b60405180910390fd5b5b60001515601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515148015612e07575060001515601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b15612e5257601454821115612e51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4890614dce565b60405180910390fd5b5b6000612e5d30611843565b9050600a548110158015612e7e5750602a60009054906101000a900460ff16155b8015612ed85750603060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612ef05750602a60019054906101000a900460ff165b15612f0e57600a548110612f0d57600a549050612f0c81613742565b5b5b600060019050600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612fb55750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612fc7576000600481905550600090505b60008060008084156133625760011515601560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151480613082575060011515601560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b156130c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130b990614e6e565b60405180910390fd5b600e60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131695750602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b1561321357600060048190555060646024548961318691906150b0565b613190919061507f565b93506064602254896131a291906150b0565b6131ac919061507f565b90506064602654896131be91906150b0565b6131c8919061507f565b92506064602854896131da91906150b0565b6131e4919061507f565b9150818382866131f49190615029565b6131fe9190615029565b6132089190615029565b600481905550613361565b600e60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156132ba5750602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1614155b156133605760006004819055506064601b54896132d791906150b0565b6132e1919061507f565b93506064601954896132f391906150b0565b6132fd919061507f565b90506064601d548961330f91906150b0565b613319919061507f565b92506064601f548961332b91906150b0565b613335919061507f565b9150818382866133459190615029565b61334f9190615029565b6133599190615029565b6004819055505b5b5b878761336e919061510a565b600b60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808284868b6133c0919061510a565b6133ca919061510a565b6133d4919061510a565b6133de919061510a565b600b60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461342c9190615029565b925050819055506000811461355f57600454600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461348c9190615029565b9250508190555080602e60008282546134a59190615029565b9250508190555082602c60008282546134be9190615029565b9250508190555081602d60008282546134d79190615029565b9250508190555083602b60008282546134f09190615029565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004546040516135569190614ece565b60405180910390a35b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004548b6135bc919061510a565b6040516135c99190614ece565b60405180910390a350505050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6001602a60006101000a81548160ff021916908315150217905550613768602e54613830565b613773602b546138bb565b61377e602c54613b2f565b613789602d54613d81565b60004790506137ba81601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613fd3565b7f4596ef7337c1c88bb740707471cfc0ec6d0212036b05ab1bdbb09cf3e3f01904826040516137e99190614ece565b60405180910390a16000602b819055506000602c819055506000602d819055506000602e81905550506000602a60006101000a81548160ff02191690831515021790555050565b600060028261383f919061507f565b90506000818361384f919061510a565b9050600047905061385f836141f8565b6000814761386d919061510a565b9050613879838261444a565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618482856040516138ac93929190614f9d565b60405180910390a15050505050565b6000600267ffffffffffffffff8111156138d8576138d7615313565b5b6040519080825280602002602001820160405280156139065781602001602082028036833780820191505090505b509050308160008151811061391e5761391d6152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156139c057600080fd5b505afa1580156139d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139f8919061462c565b81600181518110613a0c57613a0b6152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613a7330602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846128e5565b602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401613af9959493929190614ee9565b600060405180830381600087803b158015613b1357600080fd5b505af1158015613b27573d6000803e3d6000fd5b505050505050565b6000600267ffffffffffffffff811115613b4c57613b4b615313565b5b604051908082528060200260200182016040528015613b7a5781602001602082028036833780820191505090505b5090503081600081518110613b9257613b916152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613c3457600080fd5b505afa158015613c48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c6c919061462c565b81600181518110613c8057613c7f6152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613ce730602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846128e5565b602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613d4b959493929190614f43565b600060405180830381600087803b158015613d6557600080fd5b505af1158015613d79573d6000803e3d6000fd5b505050505050565b6000600267ffffffffffffffff811115613d9e57613d9d615313565b5b604051908082528060200260200182016040528015613dcc5781602001602082028036833780820191505090505b5090503081600081518110613de457613de36152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613e8657600080fd5b505afa158015613e9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ebe919061462c565b81600181518110613ed257613ed16152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f3930602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846128e5565b602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613f9d959493929190614f43565b600060405180830381600087803b158015613fb757600080fd5b505af1158015613fcb573d6000803e3d6000fd5b505050505050565b6000600267ffffffffffffffff811115613ff057613fef615313565b5b60405190808252806020026020018201604052801561401e5781602001602082028036833780820191505090505b509050602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561408957600080fd5b505afa15801561409d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140c1919061462c565b816000815181106140d5576140d46152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508181600181518110614124576141236152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958460008430426040518663ffffffff1660e01b81526004016141c19493929190614cc0565b6000604051808303818588803b1580156141da57600080fd5b505af11580156141ee573d6000803e3d6000fd5b5050505050505050565b6000600267ffffffffffffffff81111561421557614214615313565b5b6040519080825280602002602001820160405280156142435781602001602082028036833780820191505090505b509050308160008151811061425b5761425a6152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156142fd57600080fd5b505afa158015614311573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614335919061462c565b81600181518110614349576143486152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506143b030602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846128e5565b602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614414959493929190614f43565b600060405180830381600087803b15801561442e57600080fd5b505af1158015614442573d6000803e3d6000fd5b505050505050565b61447730602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846128e5565b602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000807f000000000000000000000000000000000000000000000000000000000000dead426040518863ffffffff1660e01b81526004016144fe96959493929190614c44565b6060604051808303818588803b15801561451757600080fd5b505af115801561452b573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061455091906148b3565b5050505050565b600081359050614566816156e9565b92915050565b60008151905061457b816156e9565b92915050565b60008135905061459081615700565b92915050565b6000813590506145a581615717565b92915050565b6000815190506145ba81615717565b92915050565b6000813590506145cf8161572e565b92915050565b6000813590506145e481615745565b92915050565b6000815190506145f981615745565b92915050565b60006020828403121561461557614614615342565b5b600061462384828501614557565b91505092915050565b60006020828403121561464257614641615342565b5b60006146508482850161456c565b91505092915050565b60006020828403121561466f5761466e615342565b5b600061467d84828501614581565b91505092915050565b6000806040838503121561469d5761469c615342565b5b60006146ab85828601614581565b92505060206146bc85828601614596565b9150509250929050565b600080604083850312156146dd576146dc615342565b5b60006146eb85828601614557565b92505060206146fc85828601614557565b9150509250929050565b60008060006060848603121561471f5761471e615342565b5b600061472d86828701614557565b935050602061473e86828701614557565b925050604061474f868287016145d5565b9150509250925092565b600080604083850312156147705761476f615342565b5b600061477e85828601614557565b925050602061478f85828601614596565b9150509250929050565b600080604083850312156147b0576147af615342565b5b60006147be85828601614557565b92505060206147cf858286016145d5565b9150509250929050565b6000602082840312156147ef576147ee615342565b5b60006147fd84828501614596565b91505092915050565b60006020828403121561481c5761481b615342565b5b600061482a848285016145ab565b91505092915050565b60008060006060848603121561484c5761484b615342565b5b600061485a868287016145c0565b935050602061486b86828701614581565b925050604061487c868287016145d5565b9150509250925092565b60006020828403121561489c5761489b615342565b5b60006148aa848285016145d5565b91505092915050565b6000806000606084860312156148cc576148cb615342565b5b60006148da868287016145ea565b93505060206148eb868287016145ea565b92505060406148fc868287016145ea565b9150509250925092565b6000614912838361493c565b60208301905092915050565b614927816151aa565b82525050565b61493681615150565b82525050565b6149458161513e565b82525050565b6149548161513e565b82525050565b600061496582614fe4565b61496f8185615007565b935061497a83614fd4565b8060005b838110156149ab5781516149928882614906565b975061499d83614ffa565b92505060018101905061497e565b5085935050505092915050565b6149c181615162565b82525050565b6149d0816151bc565b82525050565b60006149e182614fef565b6149eb8185615018565b93506149fb8185602086016151f2565b614a0481615347565b840191505092915050565b6000614a1c602383615018565b9150614a2782615358565b604082019050919050565b6000614a3f602683615018565b9150614a4a826153a7565b604082019050919050565b6000614a62602283615018565b9150614a6d826153f6565b604082019050919050565b6000614a85603983615018565b9150614a9082615445565b604082019050919050565b6000614aa8602683615018565b9150614ab382615494565b604082019050919050565b6000614acb602883615018565b9150614ad6826154e3565b604082019050919050565b6000614aee603283615018565b9150614af982615532565b604082019050919050565b6000614b11601d83615018565b9150614b1c82615581565b602082019050919050565b6000614b34602883615018565b9150614b3f826155aa565b604082019050919050565b6000614b57602083615018565b9150614b62826155f9565b602082019050919050565b6000614b7a601883615018565b9150614b8582615622565b602082019050919050565b6000614b9d602583615018565b9150614ba88261564b565b604082019050919050565b6000614bc0602483615018565b9150614bcb8261569a565b604082019050919050565b614bdf816151a0565b82525050565b6000602082019050614bfa600083018461494b565b92915050565b6000602082019050614c15600083018461492d565b92915050565b6000604082019050614c30600083018561491e565b614c3d6020830184614bd6565b9392505050565b600060c082019050614c59600083018961494b565b614c666020830188614bd6565b614c7360408301876149c7565b614c8060608301866149c7565b614c8d608083018561494b565b614c9a60a0830184614bd6565b979650505050505050565b6000602082019050614cba60008301846149b8565b92915050565b6000608082019050614cd560008301876149c7565b8181036020830152614ce7818661495a565b9050614cf6604083018561494b565b614d036060830184614bd6565b95945050505050565b60006020820190508181036000830152614d2681846149d6565b905092915050565b60006020820190508181036000830152614d4781614a0f565b9050919050565b60006020820190508181036000830152614d6781614a32565b9050919050565b60006020820190508181036000830152614d8781614a55565b9050919050565b60006020820190508181036000830152614da781614a78565b9050919050565b60006020820190508181036000830152614dc781614a9b565b9050919050565b60006020820190508181036000830152614de781614abe565b9050919050565b60006020820190508181036000830152614e0781614ae1565b9050919050565b60006020820190508181036000830152614e2781614b04565b9050919050565b60006020820190508181036000830152614e4781614b27565b9050919050565b60006020820190508181036000830152614e6781614b4a565b9050919050565b60006020820190508181036000830152614e8781614b6d565b9050919050565b60006020820190508181036000830152614ea781614b90565b9050919050565b60006020820190508181036000830152614ec781614bb3565b9050919050565b6000602082019050614ee36000830184614bd6565b92915050565b600060a082019050614efe6000830188614bd6565b614f0b60208301876149c7565b8181036040830152614f1d818661495a565b9050614f2c606083018561491e565b614f396080830184614bd6565b9695505050505050565b600060a082019050614f586000830188614bd6565b614f6560208301876149c7565b8181036040830152614f77818661495a565b9050614f86606083018561494b565b614f936080830184614bd6565b9695505050505050565b6000606082019050614fb26000830186614bd6565b614fbf6020830185614bd6565b614fcc6040830184614bd6565b949350505050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000615034826151a0565b915061503f836151a0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561507457615073615257565b5b828201905092915050565b600061508a826151a0565b9150615095836151a0565b9250826150a5576150a4615286565b5b828204905092915050565b60006150bb826151a0565b91506150c6836151a0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156150ff576150fe615257565b5b828202905092915050565b6000615115826151a0565b9150615120836151a0565b92508282101561513357615132615257565b5b828203905092915050565b600061514982615180565b9050919050565b600061515b82615180565b9050919050565b60008115159050919050565b60006151798261513e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006151b5826151ce565b9050919050565b60006151c7826151a0565b9050919050565b60006151d9826151e0565b9050919050565b60006151eb82615180565b9050919050565b60005b838110156152105780820151818401526020810190506151f5565b8381111561521f576000848401525b50505050565b6000600282049050600182168061523d57607f821691505b60208210811415615251576152506152b5565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e73666572656420616d6f756e74206d75737420626560008201527f2067726561746572207468616e207a65726f0000000000000000000000000000602082015250565b7f43616e742074726164652c2074726164652069732064697361626c6564000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4e6f20626f747320616c6c6f77656420746f2074726164650000000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6156f28161513e565b81146156fd57600080fd5b50565b61570981615150565b811461571457600080fd5b50565b61572081615162565b811461572b57600080fd5b50565b6157378161516e565b811461574257600080fd5b50565b61574e816151a0565b811461575957600080fd5b5056fea2646970667358221220ce33560d7cf42ca947d89cfa9a2719dfa38198dc091f3435e10318584246151664736f6c63430008070033

Deployed Bytecode Sourcemap

6399:19677:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11646:76;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24433:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11380:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22582:302;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10569:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10790;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8566:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13544:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13443:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12186:388;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8648:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20780:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11556:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25968:105;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9229:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22336:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8601:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12718:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25267:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13234:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24667:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20594:178;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10682:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11997:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25865:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10907:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5764:94;;;;;;;;;;;;;:::i;:::-;;13025:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24785:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23585:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25022:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10371:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24903:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5113:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13130:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12922:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11728:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25146:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23989:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12820:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6954:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7305:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12582:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11826:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11036:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22892:283;;;;;;;;;;;;;:::i;:::-;;22458:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7219:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7405:68;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25487:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23736:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17813:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13651:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25582:174;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25762:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23465:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11223:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10463:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25384:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13338:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24550:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6013:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20343:243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23181:276;;;;;;;;;;;;;:::i;:::-;;7480:66;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11646:76;11685:13;11712:5;11705:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11646:76;:::o;24433:111::-;5344:12;:10;:12::i;:::-;5333:23;;:7;:5;:7::i;:::-;:23;;;5325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24527:9:::1;24515;:21;;;;24433:111:::0;:::o;11380:168::-;11457:4;11477:37;11486:12;:10;:12::i;:::-;11499:7;11507:6;11477:8;:37::i;:::-;11536:4;11529:11;;11380:168;;;;:::o;22582:302::-;5344:12;:10;:12::i;:::-;5333:23;;:7;:5;:7::i;:::-;:23;;;5325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22725:4:::1;22688:17;:34;22714:6;22688:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;22769:4;22740:17;:26;22758:7;22740:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;22820:4;22784:16;:33;22809:6;22784:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;22863:4;22835:16;:25;22852:7;22835:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;22582:302:::0;;:::o;10569:106::-;10619:7;10649:11;;10642:18;;10569:106;:::o;10790:::-;10845:7;10875:12;;10868:19;;10790:106;:::o;8566:28::-;;;;;;;;;;;;;:::o;13544:101::-;13595:7;13621:16;;13614:23;;13544:101;:::o;13443:95::-;13493:7;13523;;13516:14;;13443:95;:::o;12186:388::-;12318:4;12352:11;:19;12364:6;12352:19;;;;;;;;;;;;;;;:33;12372:12;:10;:12::i;:::-;12352:33;;;;;;;;;;;;;;;;12342:6;:43;;12334:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;12435:36;12445:6;12453:9;12464:6;12435:9;:36::i;:::-;12476:74;12485:6;12493:12;:10;:12::i;:::-;12543:6;12507:11;:19;12519:6;12507:19;;;;;;;;;;;;;;;:33;12527:12;:10;:12::i;:::-;12507:33;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;12476:8;:74::i;:::-;12562:4;12555:11;;12186:388;;;;;:::o;8648:81::-;;;:::o;20780:90::-;5344:12;:10;:12::i;:::-;5333:23;;:7;:5;:7::i;:::-;:23;;;5325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20856:6:::1;20841:12;;:21;;;;;;;;;;;;;;;;;;20780:90:::0;:::o;11556:84::-;11597:7;11623:9;;;;;;;;;;;11616:16;;;;11556:84;:::o;25968:105::-;26019:7;26045:20;;26038:27;;25968:105;:::o;9229:28::-;;;;;;;;;;;;;:::o;22336:114::-;5344:12;:10;:12::i;:::-;5333:23;;:7;:5;:7::i;:::-;:23;;;5325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22438:4:::1;22407:17;:28;22425:9;22407:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;22336:114:::0;:::o;8601:40::-;;;;;;;;;;;;;:::o;12718:96::-;12767:7;12797:9;;12790:16;;12718:96;:::o;25267:111::-;5344:12;:10;:12::i;:::-;5333:23;;:7;:5;:7::i;:::-;:23;;;5325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25361:9:::1;25352:7;:18;;;;25267:111:::0;:::o;13234:98::-;13284:7;13314:10;;13307:17;;13234:98;:::o;24667:112::-;5344:12;:10;:12::i;:::-;5333:23;;:7;:5;:7::i;:::-;:23;;;5325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24762:9:::1;24752:8;:19;;;;24667:112:::0;:::o;20594:178::-;5344:12;:10;:12::i;:::-;5333:23;;:7;:5;:7::i;:::-;:23;;;5325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20670:18:::1;20691:21;20670:42;;20731:11;20723:29;;:41;20753:10;20723:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;20659:113;20594:178:::0;:::o;10682:99::-;10733:7;10763:9;;10756:16;;10682:99;:::o;11997:175::-;5344:12;:10;:12::i;:::-;5333:23;;:7;:5;:7::i;:::-;:23;;;5325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12093:6:::1;12073:17;:26;;;;12159:3;12141:17;;12128:12;;:30;;;;:::i;:::-;:34;;;;:::i;:::-;12110:15;:52;;;;11997:175:::0;:::o;25865:97::-;25916:7;25942:12;;25935:19;;25865:97;:::o;10907:118::-;10973:7;10999:9;:18;11009:7;10999:18;;;;;;;;;;;;;;;;10992:25;;10907:118;;;:::o;5764:94::-;5344:12;:10;:12::i;:::-;5333:23;;:7;:5;:7::i;:::-;:23;;;5325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5829:21:::1;5847:1;5829:9;:21::i;:::-;5764:94::o:0;13025:95::-;13074:7;13104:8;;13097:15;;13025:95;:::o;24785:108::-;5344:12;:10;:12::i;:::-;5333:23;;:7;:5;:7::i;:::-;:23;;;5325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24876:9:::1;24868:6;:17;;;;24785:108:::0;:::o;23585:113::-;5344:12;:10;:12::i;:::-;5333:23;;:7;:5;:7::i;:::-;:23;;;5325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23682:8:::1;23658:21;;:32;;;;;;;;;;;;;;;;;;23585:113:::0;:::o;25022:112::-;5344:12;:10;:12::i;:::-;5333:23;;:7;:5;:7::i;:::-;:23;;;5325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25117:9:::1;25105:10;:21;;;;25022:112:::0;:::o;10371:86::-;10412:7;10442;:5;:7::i;:::-;10435:14;;10371:86;:::o;24903:113::-;5344:12;:10;:12::i;:::-;5333:23;;:7;:5;:7::i;:::-;:23;;;5325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24999:9:::1;24987:10;:21;;;;24903:113:::0;:::o;5113:87::-;5159:7;5186:6;;;;;;;;;;;5179:13;;5113:87;:::o;13130:98::-;13180:7;13210:10;;13203:17;;13130:98;:::o;12922:97::-;12973:7;13003:8;;12996:15;;12922:97;:::o;11728:88::-;11769:13;11801:7;11794:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11728:88;:::o;25146:115::-;5344:12;:10;:12::i;:::-;5333:23;;:7;:5;:7::i;:::-;:23;;;5325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25244:9:::1;25233;:20;;;;25146:115:::0;:::o;23989:242::-;5344:12;:10;:12::i;:::-;5333:23;;:7;:5;:7::i;:::-;:23;;;5325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24096:13:::1;;;;;;;;;;;24088:21;;:4;:21;;;;24080:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;24182:41;24211:4;24217:5;24182:28;:41::i;:::-;23989:242:::0;;:::o;12820:96::-;12869:7;12899:9;;12892:16;;12820:96;:::o;6954:71::-;;;;:::o;7305:93::-;;;;;;;;;;;;;:::o;12582:130::-;5344:12;:10;:12::i;:::-;5333:23;;:7;:5;:7::i;:::-;:23;;;5325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12699:5:::1;12673:10;:23;12684:11;12673:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;12582:130:::0;;:::o;11826:164::-;5344:12;:10;:12::i;:::-;5333:23;;:7;:5;:7::i;:::-;:23;;;5325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11914:6:::1;11898:13;:22;;;;11972:3;11958:13;;11945:12;;:26;;;;:::i;:::-;:30;;;;:::i;:::-;11931:11;:44;;;;11826:164:::0;:::o;11036:176::-;11116:4;11136:40;11146:12;:10;:12::i;:::-;11159:9;11169:6;11136:9;:40::i;:::-;11198:4;11191:11;;11036:176;;;;:::o;22892:283::-;5344:12;:10;:12::i;:::-;5333:23;;:7;:5;:7::i;:::-;:23;;;5325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22970:1:::1;22958:9;:13;;;;22994:1;22982:10;:13;;;;23017:1;23006:9;:12;;;;23041:1;23029:10;:13;;;;23063:1;23053:8;:11;;;;23087:1;23075:9;:13;;;;23107:1;23099:6;:9;;;;23129:1;23119:7;:11;;;;23141:24;23159:5;23141:17;:24::i;:::-;22892:283::o:0;22458:116::-;5344:12;:10;:12::i;:::-;5333:23;;:7;:5;:7::i;:::-;:23;;;5325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22561:5:::1;22531:17;:27;22549:8;22531:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;22458:116:::0;:::o;7219:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;7405:68::-;;;;;;;;;;;;;:::o;25487:89::-;25531:7;25557:11;;25550:18;;25487:89;:::o;23736:118::-;5344:12;:10;:12::i;:::-;5333:23;;:7;:5;:7::i;:::-;:23;;;5325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23835:10:::1;23808:16;;:38;;;;;;;;;;;;;;;;;;23736:118:::0;:::o;17813:123::-;5344:12;:10;:12::i;:::-;5333:23;;:7;:5;:7::i;:::-;:23;;;5325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17917:4:::1;17885:17;:29;17903:10;17885:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;17813:123:::0;:::o;13651:118::-;13708:4;13735:17;:26;13753:7;13735:26;;;;;;;;;;;;;;;;;;;;;;;;;13728:33;;13651:118;;;:::o;25582:174::-;5344:12;:10;:12::i;:::-;5333:23;;:7;:5;:7::i;:::-;:23;;;5325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25668:6:::1;25653:12;:21;;;;25734:4;25721:12;;25708;;:25;;;;:::i;:::-;:30;;;;:::i;:::-;25685:20;:53;;;;25582:174:::0;:::o;25762:97::-;25813:4;25836:12;;;;;;;;;;;25829:19;;25762:97;:::o;23465:112::-;5344:12;:10;:12::i;:::-;5333:23;;:7;:5;:7::i;:::-;:23;;;5325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23555:12:::1;23536:16;:31;;;;23465:112:::0;:::o;11223:148::-;11306:7;11336:11;:18;11348:5;11336:18;;;;;;;;;;;;;;;:27;11355:7;11336:27;;;;;;;;;;;;;;;;11329:34;;11223:148;;;;:::o;10463:99::-;10514:7;10544:9;;10537:16;;10463:99;:::o;25384:97::-;25432:7;25458:15;;25451:22;;25384:97;:::o;13338:99::-;13390:7;13420:9;;13413:16;;13338:99;:::o;24550:111::-;5344:12;:10;:12::i;:::-;5333:23;;:7;:5;:7::i;:::-;:23;;;5325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24644:9:::1;24633;:20;;;;24550:111:::0;:::o;6013:192::-;5344:12;:10;:12::i;:::-;5333:23;;:7;:5;:7::i;:::-;:23;;;5325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6122:1:::1;6102:22;;:8;:22;;;;6094:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6178:19;6188:8;6178:9;:19::i;:::-;6013:192:::0;:::o;20343:243::-;5344:12;:10;:12::i;:::-;5333:23;;:7;:5;:7::i;:::-;:23;;;5325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20536:12:::1;:21;;;20558:11;20571:6;20536:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20343:243:::0;;;:::o;23181:276::-;5344:12;:10;:12::i;:::-;5333:23;;:7;:5;:7::i;:::-;:23;;;5325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23248:1:::1;23236:9;:13;;;;23272:1;23260:9;:13;;;;23295:1;23284:8;:12;;;;23316:1;23307:6;:10;;;;23343:1;23330:10;:14;;;;23368:1;23355:10;:14;;;;23392:1;23380:9;:13;;;;23414:1;23404:7;:11;;;;23426:23;23444:4;23426:17;:23::i;:::-;23181:276::o:0;7480:66::-;;;;;;;;;;;;;:::o;1075:98::-;1128:7;1155:10;1148:17;;1075:98;:::o;21968:322::-;22077:1;22060:19;;:5;:19;;;;22052:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22152:1;22133:21;;:7;:21;;;;22125:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22230:6;22200:11;:18;22212:5;22200:18;;;;;;;;;;;;;;;:27;22219:7;22200:27;;;;;;;;;;;;;;;:36;;;;22262:7;22246:32;;22255:5;22246:32;;;22271:6;22246:32;;;;;;:::i;:::-;;;;;;;;21968:322;;;:::o;13777:3531::-;13891:1;13875:18;;:4;:18;;;;13867:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13962:1;13948:16;;:2;:16;;;;13940:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14032:1;14023:6;:10;14015:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;14098:21;14122:9;:15;14132:4;14122:15;;;;;;;;;;;;;;;;14098:39;;14173:6;14156:13;:23;;14148:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;14252:5;14236:21;;:12;;;;;;;;;;;:21;;;14233:141;;;14281:17;:21;14299:2;14281:21;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;14306:17;:23;14324:4;14306:23;;;;;;;;;;;;;;;;;;;;;;;;;14281:48;14273:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;14233:141;14410:5;14387:28;;:17;:21;14405:2;14387:21;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;:62;;;;;14444:5;14419:30;;:17;:23;14437:4;14419:23;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;14387:62;14384:163;;;14479:11;;14469:6;:21;;14461:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;14384:163;14557:25;14585:24;14603:4;14585:9;:24::i;:::-;14557:52;;14643:20;;14623:17;:40;;:66;;;;;14673:16;;;;;;;;;;;14672:17;14623:66;:96;;;;;14706:13;;;;;;;;;;;14698:21;;:4;:21;;;;14623:96;:126;;;;;14728:21;;;;;;;;;;;14623:126;14620:352;;;14793:20;;14772:17;:41;14769:188;;14858:20;;14838:40;;14901:36;14919:17;14901;:36::i;:::-;14769:188;14620:352;14988:13;15004:4;14988:20;;15054:17;:23;15072:4;15054:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;15081:17;:21;15099:2;15081:21;;;;;;;;;;;;;;;;;;;;;;;;;15054:48;15051:159;;;15139:1;15123:13;:17;;;;15170:5;15159:16;;15051:159;15224:17;15260:19;15335:17;15402;15480:8;15477:1255;;;15577:4;15557:24;;:10;:16;15568:4;15557:16;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;:46;;;;15599:4;15583:20;;:10;:14;15594:2;15583:14;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;15557:46;15554:127;;;15627:34;;;;;;;;;;:::i;:::-;;;;;;;;15554:127;15735:25;:29;15761:2;15735:29;;;;;;;;;;;;;;;;;;;;;;;;;:55;;;;;15782:7;;;;;;;;;;;15768:22;;:2;:22;;;;15735:55;15731:966;;;15835:1;15819:13;:17;;;;15895:3;15884:10;;15875:6;:19;;;;:::i;:::-;:23;;;;:::i;:::-;15863:35;;15957:3;15946:10;;15937:6;:19;;;;:::i;:::-;:23;;;;:::i;:::-;15925:35;;16020:3;16010:9;;16001:6;:18;;;;:::i;:::-;:22;;;;:::i;:::-;15987:36;;16079:3;16071:7;;16062:6;:16;;;;:::i;:::-;:20;;;;:::i;:::-;16050:32;;16163:9;16149:11;16137:9;16125;:21;;;;:::i;:::-;:35;;;;:::i;:::-;:47;;;;:::i;:::-;16109:13;:63;;;;15731:966;;;16246:25;:31;16272:4;16246:31;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;;16297:7;;;;;;;;;;;16281:24;;:4;:24;;;;16246:59;16243:454;;;16364:1;16348:13;:17;;;;16419:3;16409:9;;16400:6;:18;;;;:::i;:::-;:22;;;;:::i;:::-;16388:34;;16476:3;16466:9;;16457:6;:18;;;;:::i;:::-;:22;;;;:::i;:::-;16445:34;;16534:3;16525:8;;16516:6;:17;;;;:::i;:::-;:21;;;;:::i;:::-;16502:35;;16588:3;16581:6;;16572;:15;;;;:::i;:::-;:19;;;;:::i;:::-;16560:31;;16668:9;16654:11;16642:9;16630;:21;;;;:::i;:::-;:35;;;;:::i;:::-;:47;;;;:::i;:::-;16614:13;:63;;;;16243:454;15731:966;15477:1255;16782:6;16766:13;:22;;;;:::i;:::-;16748:9;:15;16758:4;16748:15;;;;;;;;;;;;;;;:40;;;;16867:9;16855;16841:11;16829:9;16820:6;:18;;;;:::i;:::-;:32;;;;:::i;:::-;:44;;;;:::i;:::-;:56;;;;:::i;:::-;16803:9;:13;16813:2;16803:13;;;;;;;;;;;;;;;;:73;;;;;;;:::i;:::-;;;;;;;;16907:1;16894:9;:14;16891:327;;16944:13;;16916:9;:24;16934:4;16916:24;;;;;;;;;;;;;;;;:41;;;;;;;:::i;:::-;;;;;;;;17015:9;17002;;:22;;;;;;;:::i;:::-;;;;;;;;17054:11;17039;;:26;;;;;;;:::i;:::-;;;;;;;;17093:9;17080;;:22;;;;;;;:::i;:::-;;;;;;;;17130:9;17117;;:22;;;;;;;:::i;:::-;;;;;;;;17173:4;17150:44;;17159:4;17150:44;;;17180:13;;17150:44;;;;;;:::i;:::-;;;;;;;;16891:327;17252:2;17237:39;;17246:4;17237:39;;;17262:13;;17255:6;:20;;;;:::i;:::-;17237:39;;;;;;:::i;:::-;;;;;;;;13846:3462;;;;;;;13777:3531;;;:::o;6213:173::-;6269:16;6288:6;;;;;;;;;;;6269:25;;6314:8;6305:6;;:17;;;;;;;;;;;;;;;;;;6369:8;6338:40;;6359:8;6338:40;;;;;;;;;;;;6258:128;6213:173;:::o;24237:188::-;24354:5;24320:25;:31;24346:4;24320:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;24411:5;24377:40;;24405:4;24377:40;;;;;;;;;;;;24237:188;;:::o;17314:492::-;9336:4;9317:16;;:23;;;;;;;;;;;;;;;;;;17394:25:::1;17409:9;;17394:14;:25::i;:::-;17430:30;17450:9;;17430:19;:30::i;:::-;17471:25;17484:11;;17471:12;:25::i;:::-;17507:21;17518:9;;17507:10;:21::i;:::-;17539:27;17569:21;17539:51;;17601:39;17614:19;17634:5;;;;;;;;;;;17601:12;:39::i;:::-;17656:44;17686:13;17656:44;;;;;;:::i;:::-;;;;;;;;17723:1;17711:9;:13;;;;17749:1;17735:11;:15;;;;17773:1;17761:9;:13;;;;17797:1;17785:9;:13;;;;17383:423;9370:5:::0;9351:16;;:24;;;;;;;;;;;;;;;;;;17314:492;:::o;20878:388::-;20940:12;20973:1;20955:15;:19;;;;:::i;:::-;20940:34;;20979:17;21017:4;20999:15;:22;;;;:::i;:::-;20979:42;;21026:22;21051:21;21026:46;;21079:22;21096:4;21079:16;:22::i;:::-;21106:18;21152:14;21127:21;:40;;;;:::i;:::-;21106:61;;21175:35;21188:9;21199:10;21175:12;:35::i;:::-;21220:41;21235:4;21240:10;21251:9;21220:41;;;;;;;;:::i;:::-;;;;;;;;20935:331;;;;20878:388;:::o;17942:399::-;18005:21;18043:1;18029:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18005:40;;18068:4;18050;18055:1;18050:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18088:7;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18078:4;18083:1;18078:7;;;;;;;;:::i;:::-;;;;;;;:24;;;;;;;;;;;18107:49;18124:4;18139:7;;;;;;;;;;;18149:6;18107:8;:49::i;:::-;18167:7;;;;;;;;;;;:58;;;18231:6;18243:1;18279:4;18289:16;;;;;;;;;;;18311:15;18167:164;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17994:347;17942:399;:::o;18349:387::-;18405:21;18443:1;18429:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18405:40;;18468:4;18450;18455:1;18450:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18488:7;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18478:4;18483:1;18478:7;;;;;;;;:::i;:::-;;;;;;;:24;;;;;;;;;;;18507:49;18524:4;18539:7;;;;;;;;;;;18549:6;18507:8;:49::i;:::-;18567:7;;;;;;;;;;;:58;;;18631:6;18643:1;18679:4;18697;18708:15;18567:161;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18394:342;18349:387;:::o;19345:397::-;19399:21;19437:1;19423:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19399:40;;19462:4;19444;19449:1;19444:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;19482:7;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19472:4;19477:1;19472:7;;;;;;;;:::i;:::-;;;;;;;:24;;;;;;;;;;;19501:49;19518:4;19533:7;;;;;;;;;;;19543:6;19501:8;:49::i;:::-;19561:7;;;;;;;;;;;:58;;;19625:6;19637:1;19673:4;19691;19702:15;19561:161;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19388:354;19345:397;:::o;18828:509::-;18968:21;19006:1;18992:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18968:40;;19029:7;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19019:4;19024:1;19019:7;;;;;;;;:::i;:::-;;;;;;;:24;;;;;;;;;;;19064:11;19054:4;19059:1;19054:7;;;;;;;;:::i;:::-;;;;;;;:21;;;;;;;;;;;19114:7;;;;;;;;;;;:58;;;19180:9;19205:1;19254:4;19281;19301:15;19114:213;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18899:438;18828:509;;:::o;21274:397::-;21333:21;21371:1;21357:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21333:40;;21396:4;21378;21383:1;21378:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;21416:7;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21406:4;21411:1;21406:7;;;;;;;;:::i;:::-;;;;;;;:24;;;;;;;;;;;21435:54;21452:4;21467:7;;;;;;;;;;;21477:11;21435:8;:54::i;:::-;21500:7;;;;;;;;;;;:58;;;21564:11;21581:1;21617:4;21635;21646:15;21500:166;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21328:343;21274:397;:::o;21683:277::-;21756:54;21773:4;21788:7;;;;;;;;;;;21798:11;21756:8;:54::i;:::-;21817:7;;;;;;;;;;;:23;;;21847:9;21871:4;21882:11;21899:1;21906;21913:11;21935:15;21817:138;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21683:277;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;301:155::-;355:5;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;301:155;;;;:::o;462:133::-;505:5;543:6;530:20;521:29;;559:30;583:5;559:30;:::i;:::-;462:133;;;;:::o;601:137::-;655:5;686:6;680:13;671:22;;702:30;726:5;702:30;:::i;:::-;601:137;;;;:::o;744:165::-;803:5;841:6;828:20;819:29;;857:46;897:5;857:46;:::i;:::-;744:165;;;;:::o;915:139::-;961:5;999:6;986:20;977:29;;1015:33;1042:5;1015:33;:::i;:::-;915:139;;;;:::o;1060:143::-;1117:5;1148:6;1142:13;1133:22;;1164:33;1191:5;1164:33;:::i;:::-;1060:143;;;;:::o;1209:329::-;1268:6;1317:2;1305:9;1296:7;1292:23;1288:32;1285:119;;;1323:79;;:::i;:::-;1285:119;1443:1;1468:53;1513:7;1504:6;1493:9;1489:22;1468:53;:::i;:::-;1458:63;;1414:117;1209:329;;;;:::o;1544:351::-;1614:6;1663:2;1651:9;1642:7;1638:23;1634:32;1631:119;;;1669:79;;:::i;:::-;1631:119;1789:1;1814:64;1870:7;1861:6;1850:9;1846:22;1814:64;:::i;:::-;1804:74;;1760:128;1544:351;;;;:::o;1901:345::-;1968:6;2017:2;2005:9;1996:7;1992:23;1988:32;1985:119;;;2023:79;;:::i;:::-;1985:119;2143:1;2168:61;2221:7;2212:6;2201:9;2197:22;2168:61;:::i;:::-;2158:71;;2114:125;1901:345;;;;:::o;2252:484::-;2325:6;2333;2382:2;2370:9;2361:7;2357:23;2353:32;2350:119;;;2388:79;;:::i;:::-;2350:119;2508:1;2533:61;2586:7;2577:6;2566:9;2562:22;2533:61;:::i;:::-;2523:71;;2479:125;2643:2;2669:50;2711:7;2702:6;2691:9;2687:22;2669:50;:::i;:::-;2659:60;;2614:115;2252:484;;;;;:::o;2742:474::-;2810:6;2818;2867:2;2855:9;2846:7;2842:23;2838:32;2835:119;;;2873:79;;:::i;:::-;2835:119;2993:1;3018:53;3063:7;3054:6;3043:9;3039:22;3018:53;:::i;:::-;3008:63;;2964:117;3120:2;3146:53;3191:7;3182:6;3171:9;3167:22;3146:53;:::i;:::-;3136:63;;3091:118;2742:474;;;;;:::o;3222:619::-;3299:6;3307;3315;3364:2;3352:9;3343:7;3339:23;3335:32;3332:119;;;3370:79;;:::i;:::-;3332:119;3490:1;3515:53;3560:7;3551:6;3540:9;3536:22;3515:53;:::i;:::-;3505:63;;3461:117;3617:2;3643:53;3688:7;3679:6;3668:9;3664:22;3643:53;:::i;:::-;3633:63;;3588:118;3745:2;3771:53;3816:7;3807:6;3796:9;3792:22;3771:53;:::i;:::-;3761:63;;3716:118;3222:619;;;;;:::o;3847:468::-;3912:6;3920;3969:2;3957:9;3948:7;3944:23;3940:32;3937:119;;;3975:79;;:::i;:::-;3937:119;4095:1;4120:53;4165:7;4156:6;4145:9;4141:22;4120:53;:::i;:::-;4110:63;;4066:117;4222:2;4248:50;4290:7;4281:6;4270:9;4266:22;4248:50;:::i;:::-;4238:60;;4193:115;3847:468;;;;;:::o;4321:474::-;4389:6;4397;4446:2;4434:9;4425:7;4421:23;4417:32;4414:119;;;4452:79;;:::i;:::-;4414:119;4572:1;4597:53;4642:7;4633:6;4622:9;4618:22;4597:53;:::i;:::-;4587:63;;4543:117;4699:2;4725:53;4770:7;4761:6;4750:9;4746:22;4725:53;:::i;:::-;4715:63;;4670:118;4321:474;;;;;:::o;4801:323::-;4857:6;4906:2;4894:9;4885:7;4881:23;4877:32;4874:119;;;4912:79;;:::i;:::-;4874:119;5032:1;5057:50;5099:7;5090:6;5079:9;5075:22;5057:50;:::i;:::-;5047:60;;5003:114;4801:323;;;;:::o;5130:345::-;5197:6;5246:2;5234:9;5225:7;5221:23;5217:32;5214:119;;;5252:79;;:::i;:::-;5214:119;5372:1;5397:61;5450:7;5441:6;5430:9;5426:22;5397:61;:::i;:::-;5387:71;;5343:125;5130:345;;;;:::o;5481:661::-;5579:6;5587;5595;5644:2;5632:9;5623:7;5619:23;5615:32;5612:119;;;5650:79;;:::i;:::-;5612:119;5770:1;5795:66;5853:7;5844:6;5833:9;5829:22;5795:66;:::i;:::-;5785:76;;5741:130;5910:2;5936:61;5989:7;5980:6;5969:9;5965:22;5936:61;:::i;:::-;5926:71;;5881:126;6046:2;6072:53;6117:7;6108:6;6097:9;6093:22;6072:53;:::i;:::-;6062:63;;6017:118;5481:661;;;;;:::o;6148:329::-;6207:6;6256:2;6244:9;6235:7;6231:23;6227:32;6224:119;;;6262:79;;:::i;:::-;6224:119;6382:1;6407:53;6452:7;6443:6;6432:9;6428:22;6407:53;:::i;:::-;6397:63;;6353:117;6148:329;;;;:::o;6483:663::-;6571:6;6579;6587;6636:2;6624:9;6615:7;6611:23;6607:32;6604:119;;;6642:79;;:::i;:::-;6604:119;6762:1;6787:64;6843:7;6834:6;6823:9;6819:22;6787:64;:::i;:::-;6777:74;;6733:128;6900:2;6926:64;6982:7;6973:6;6962:9;6958:22;6926:64;:::i;:::-;6916:74;;6871:129;7039:2;7065:64;7121:7;7112:6;7101:9;7097:22;7065:64;:::i;:::-;7055:74;;7010:129;6483:663;;;;;:::o;7152:179::-;7221:10;7242:46;7284:3;7276:6;7242:46;:::i;:::-;7320:4;7315:3;7311:14;7297:28;;7152:179;;;;:::o;7337:147::-;7432:45;7471:5;7432:45;:::i;:::-;7427:3;7420:58;7337:147;;:::o;7490:142::-;7593:32;7619:5;7593:32;:::i;:::-;7588:3;7581:45;7490:142;;:::o;7638:108::-;7715:24;7733:5;7715:24;:::i;:::-;7710:3;7703:37;7638:108;;:::o;7752:118::-;7839:24;7857:5;7839:24;:::i;:::-;7834:3;7827:37;7752:118;;:::o;7906:732::-;8025:3;8054:54;8102:5;8054:54;:::i;:::-;8124:86;8203:6;8198:3;8124:86;:::i;:::-;8117:93;;8234:56;8284:5;8234:56;:::i;:::-;8313:7;8344:1;8329:284;8354:6;8351:1;8348:13;8329:284;;;8430:6;8424:13;8457:63;8516:3;8501:13;8457:63;:::i;:::-;8450:70;;8543:60;8596:6;8543:60;:::i;:::-;8533:70;;8389:224;8376:1;8373;8369:9;8364:14;;8329:284;;;8333:14;8629:3;8622:10;;8030:608;;;7906:732;;;;:::o;8644:109::-;8725:21;8740:5;8725:21;:::i;:::-;8720:3;8713:34;8644:109;;:::o;8759:147::-;8854:45;8893:5;8854:45;:::i;:::-;8849:3;8842:58;8759:147;;:::o;8912:364::-;9000:3;9028:39;9061:5;9028:39;:::i;:::-;9083:71;9147:6;9142:3;9083:71;:::i;:::-;9076:78;;9163:52;9208:6;9203:3;9196:4;9189:5;9185:16;9163:52;:::i;:::-;9240:29;9262:6;9240:29;:::i;:::-;9235:3;9231:39;9224:46;;9004:272;8912:364;;;;:::o;9282:366::-;9424:3;9445:67;9509:2;9504:3;9445:67;:::i;:::-;9438:74;;9521:93;9610:3;9521:93;:::i;:::-;9639:2;9634:3;9630:12;9623:19;;9282:366;;;:::o;9654:::-;9796:3;9817:67;9881:2;9876:3;9817:67;:::i;:::-;9810:74;;9893:93;9982:3;9893:93;:::i;:::-;10011:2;10006:3;10002:12;9995:19;;9654:366;;;:::o;10026:::-;10168:3;10189:67;10253:2;10248:3;10189:67;:::i;:::-;10182:74;;10265:93;10354:3;10265:93;:::i;:::-;10383:2;10378:3;10374:12;10367:19;;10026:366;;;:::o;10398:::-;10540:3;10561:67;10625:2;10620:3;10561:67;:::i;:::-;10554:74;;10637:93;10726:3;10637:93;:::i;:::-;10755:2;10750:3;10746:12;10739:19;;10398:366;;;:::o;10770:::-;10912:3;10933:67;10997:2;10992:3;10933:67;:::i;:::-;10926:74;;11009:93;11098:3;11009:93;:::i;:::-;11127:2;11122:3;11118:12;11111:19;;10770:366;;;:::o;11142:::-;11284:3;11305:67;11369:2;11364:3;11305:67;:::i;:::-;11298:74;;11381:93;11470:3;11381:93;:::i;:::-;11499:2;11494:3;11490:12;11483:19;;11142:366;;;:::o;11514:::-;11656:3;11677:67;11741:2;11736:3;11677:67;:::i;:::-;11670:74;;11753:93;11842:3;11753:93;:::i;:::-;11871:2;11866:3;11862:12;11855:19;;11514:366;;;:::o;11886:::-;12028:3;12049:67;12113:2;12108:3;12049:67;:::i;:::-;12042:74;;12125:93;12214:3;12125:93;:::i;:::-;12243:2;12238:3;12234:12;12227:19;;11886:366;;;:::o;12258:::-;12400:3;12421:67;12485:2;12480:3;12421:67;:::i;:::-;12414:74;;12497:93;12586:3;12497:93;:::i;:::-;12615:2;12610:3;12606:12;12599:19;;12258:366;;;:::o;12630:::-;12772:3;12793:67;12857:2;12852:3;12793:67;:::i;:::-;12786:74;;12869:93;12958:3;12869:93;:::i;:::-;12987:2;12982:3;12978:12;12971:19;;12630:366;;;:::o;13002:::-;13144:3;13165:67;13229:2;13224:3;13165:67;:::i;:::-;13158:74;;13241:93;13330:3;13241:93;:::i;:::-;13359:2;13354:3;13350:12;13343:19;;13002:366;;;:::o;13374:::-;13516:3;13537:67;13601:2;13596:3;13537:67;:::i;:::-;13530:74;;13613:93;13702:3;13613:93;:::i;:::-;13731:2;13726:3;13722:12;13715:19;;13374:366;;;:::o;13746:::-;13888:3;13909:67;13973:2;13968:3;13909:67;:::i;:::-;13902:74;;13985:93;14074:3;13985:93;:::i;:::-;14103:2;14098:3;14094:12;14087:19;;13746:366;;;:::o;14118:118::-;14205:24;14223:5;14205:24;:::i;:::-;14200:3;14193:37;14118:118;;:::o;14242:222::-;14335:4;14373:2;14362:9;14358:18;14350:26;;14386:71;14454:1;14443:9;14439:17;14430:6;14386:71;:::i;:::-;14242:222;;;;:::o;14470:254::-;14579:4;14617:2;14606:9;14602:18;14594:26;;14630:87;14714:1;14703:9;14699:17;14690:6;14630:87;:::i;:::-;14470:254;;;;:::o;14730:348::-;14859:4;14897:2;14886:9;14882:18;14874:26;;14910:79;14986:1;14975:9;14971:17;14962:6;14910:79;:::i;:::-;14999:72;15067:2;15056:9;15052:18;15043:6;14999:72;:::i;:::-;14730:348;;;;;:::o;15084:807::-;15333:4;15371:3;15360:9;15356:19;15348:27;;15385:71;15453:1;15442:9;15438:17;15429:6;15385:71;:::i;:::-;15466:72;15534:2;15523:9;15519:18;15510:6;15466:72;:::i;:::-;15548:80;15624:2;15613:9;15609:18;15600:6;15548:80;:::i;:::-;15638;15714:2;15703:9;15699:18;15690:6;15638:80;:::i;:::-;15728:73;15796:3;15785:9;15781:19;15772:6;15728:73;:::i;:::-;15811;15879:3;15868:9;15864:19;15855:6;15811:73;:::i;:::-;15084:807;;;;;;;;;:::o;15897:210::-;15984:4;16022:2;16011:9;16007:18;15999:26;;16035:65;16097:1;16086:9;16082:17;16073:6;16035:65;:::i;:::-;15897:210;;;;:::o;16113:720::-;16348:4;16386:3;16375:9;16371:19;16363:27;;16400:79;16476:1;16465:9;16461:17;16452:6;16400:79;:::i;:::-;16526:9;16520:4;16516:20;16511:2;16500:9;16496:18;16489:48;16554:108;16657:4;16648:6;16554:108;:::i;:::-;16546:116;;16672:72;16740:2;16729:9;16725:18;16716:6;16672:72;:::i;:::-;16754;16822:2;16811:9;16807:18;16798:6;16754:72;:::i;:::-;16113:720;;;;;;;:::o;16839:313::-;16952:4;16990:2;16979:9;16975:18;16967:26;;17039:9;17033:4;17029:20;17025:1;17014:9;17010:17;17003:47;17067:78;17140:4;17131:6;17067:78;:::i;:::-;17059:86;;16839:313;;;;:::o;17158:419::-;17324:4;17362:2;17351:9;17347:18;17339:26;;17411:9;17405:4;17401:20;17397:1;17386:9;17382:17;17375:47;17439:131;17565:4;17439:131;:::i;:::-;17431:139;;17158:419;;;:::o;17583:::-;17749:4;17787:2;17776:9;17772:18;17764:26;;17836:9;17830:4;17826:20;17822:1;17811:9;17807:17;17800:47;17864:131;17990:4;17864:131;:::i;:::-;17856:139;;17583:419;;;:::o;18008:::-;18174:4;18212:2;18201:9;18197:18;18189:26;;18261:9;18255:4;18251:20;18247:1;18236:9;18232:17;18225:47;18289:131;18415:4;18289:131;:::i;:::-;18281:139;;18008:419;;;:::o;18433:::-;18599:4;18637:2;18626:9;18622:18;18614:26;;18686:9;18680:4;18676:20;18672:1;18661:9;18657:17;18650:47;18714:131;18840:4;18714:131;:::i;:::-;18706:139;;18433:419;;;:::o;18858:::-;19024:4;19062:2;19051:9;19047:18;19039:26;;19111:9;19105:4;19101:20;19097:1;19086:9;19082:17;19075:47;19139:131;19265:4;19139:131;:::i;:::-;19131:139;;18858:419;;;:::o;19283:::-;19449:4;19487:2;19476:9;19472:18;19464:26;;19536:9;19530:4;19526:20;19522:1;19511:9;19507:17;19500:47;19564:131;19690:4;19564:131;:::i;:::-;19556:139;;19283:419;;;:::o;19708:::-;19874:4;19912:2;19901:9;19897:18;19889:26;;19961:9;19955:4;19951:20;19947:1;19936:9;19932:17;19925:47;19989:131;20115:4;19989:131;:::i;:::-;19981:139;;19708:419;;;:::o;20133:::-;20299:4;20337:2;20326:9;20322:18;20314:26;;20386:9;20380:4;20376:20;20372:1;20361:9;20357:17;20350:47;20414:131;20540:4;20414:131;:::i;:::-;20406:139;;20133:419;;;:::o;20558:::-;20724:4;20762:2;20751:9;20747:18;20739:26;;20811:9;20805:4;20801:20;20797:1;20786:9;20782:17;20775:47;20839:131;20965:4;20839:131;:::i;:::-;20831:139;;20558:419;;;:::o;20983:::-;21149:4;21187:2;21176:9;21172:18;21164:26;;21236:9;21230:4;21226:20;21222:1;21211:9;21207:17;21200:47;21264:131;21390:4;21264:131;:::i;:::-;21256:139;;20983:419;;;:::o;21408:::-;21574:4;21612:2;21601:9;21597:18;21589:26;;21661:9;21655:4;21651:20;21647:1;21636:9;21632:17;21625:47;21689:131;21815:4;21689:131;:::i;:::-;21681:139;;21408:419;;;:::o;21833:::-;21999:4;22037:2;22026:9;22022:18;22014:26;;22086:9;22080:4;22076:20;22072:1;22061:9;22057:17;22050:47;22114:131;22240:4;22114:131;:::i;:::-;22106:139;;21833:419;;;:::o;22258:::-;22424:4;22462:2;22451:9;22447:18;22439:26;;22511:9;22505:4;22501:20;22497:1;22486:9;22482:17;22475:47;22539:131;22665:4;22539:131;:::i;:::-;22531:139;;22258:419;;;:::o;22683:222::-;22776:4;22814:2;22803:9;22799:18;22791:26;;22827:71;22895:1;22884:9;22880:17;22871:6;22827:71;:::i;:::-;22683:222;;;;:::o;22911:847::-;23182:4;23220:3;23209:9;23205:19;23197:27;;23234:71;23302:1;23291:9;23287:17;23278:6;23234:71;:::i;:::-;23315:80;23391:2;23380:9;23376:18;23367:6;23315:80;:::i;:::-;23442:9;23436:4;23432:20;23427:2;23416:9;23412:18;23405:48;23470:108;23573:4;23564:6;23470:108;:::i;:::-;23462:116;;23588:80;23664:2;23653:9;23649:18;23640:6;23588:80;:::i;:::-;23678:73;23746:3;23735:9;23731:19;23722:6;23678:73;:::i;:::-;22911:847;;;;;;;;:::o;23764:831::-;24027:4;24065:3;24054:9;24050:19;24042:27;;24079:71;24147:1;24136:9;24132:17;24123:6;24079:71;:::i;:::-;24160:80;24236:2;24225:9;24221:18;24212:6;24160:80;:::i;:::-;24287:9;24281:4;24277:20;24272:2;24261:9;24257:18;24250:48;24315:108;24418:4;24409:6;24315:108;:::i;:::-;24307:116;;24433:72;24501:2;24490:9;24486:18;24477:6;24433:72;:::i;:::-;24515:73;24583:3;24572:9;24568:19;24559:6;24515:73;:::i;:::-;23764:831;;;;;;;;:::o;24601:442::-;24750:4;24788:2;24777:9;24773:18;24765:26;;24801:71;24869:1;24858:9;24854:17;24845:6;24801:71;:::i;:::-;24882:72;24950:2;24939:9;24935:18;24926:6;24882:72;:::i;:::-;24964;25032:2;25021:9;25017:18;25008:6;24964:72;:::i;:::-;24601:442;;;;;;:::o;25130:132::-;25197:4;25220:3;25212:11;;25250:4;25245:3;25241:14;25233:22;;25130:132;;;:::o;25268:114::-;25335:6;25369:5;25363:12;25353:22;;25268:114;;;:::o;25388:99::-;25440:6;25474:5;25468:12;25458:22;;25388:99;;;:::o;25493:113::-;25563:4;25595;25590:3;25586:14;25578:22;;25493:113;;;:::o;25612:184::-;25711:11;25745:6;25740:3;25733:19;25785:4;25780:3;25776:14;25761:29;;25612:184;;;;:::o;25802:169::-;25886:11;25920:6;25915:3;25908:19;25960:4;25955:3;25951:14;25936:29;;25802:169;;;;:::o;25977:305::-;26017:3;26036:20;26054:1;26036:20;:::i;:::-;26031:25;;26070:20;26088:1;26070:20;:::i;:::-;26065:25;;26224:1;26156:66;26152:74;26149:1;26146:81;26143:107;;;26230:18;;:::i;:::-;26143:107;26274:1;26271;26267:9;26260:16;;25977:305;;;;:::o;26288:185::-;26328:1;26345:20;26363:1;26345:20;:::i;:::-;26340:25;;26379:20;26397:1;26379:20;:::i;:::-;26374:25;;26418:1;26408:35;;26423:18;;:::i;:::-;26408:35;26465:1;26462;26458:9;26453:14;;26288:185;;;;:::o;26479:348::-;26519:7;26542:20;26560:1;26542:20;:::i;:::-;26537:25;;26576:20;26594:1;26576:20;:::i;:::-;26571:25;;26764:1;26696:66;26692:74;26689:1;26686:81;26681:1;26674:9;26667:17;26663:105;26660:131;;;26771:18;;:::i;:::-;26660:131;26819:1;26816;26812:9;26801:20;;26479:348;;;;:::o;26833:191::-;26873:4;26893:20;26911:1;26893:20;:::i;:::-;26888:25;;26927:20;26945:1;26927:20;:::i;:::-;26922:25;;26966:1;26963;26960:8;26957:34;;;26971:18;;:::i;:::-;26957:34;27016:1;27013;27009:9;27001:17;;26833:191;;;;:::o;27030:96::-;27067:7;27096:24;27114:5;27096:24;:::i;:::-;27085:35;;27030:96;;;:::o;27132:104::-;27177:7;27206:24;27224:5;27206:24;:::i;:::-;27195:35;;27132:104;;;:::o;27242:90::-;27276:7;27319:5;27312:13;27305:21;27294:32;;27242:90;;;:::o;27338:109::-;27388:7;27417:24;27435:5;27417:24;:::i;:::-;27406:35;;27338:109;;;:::o;27453:126::-;27490:7;27530:42;27523:5;27519:54;27508:65;;27453:126;;;:::o;27585:77::-;27622:7;27651:5;27640:16;;27585:77;;;:::o;27668:134::-;27726:9;27759:37;27790:5;27759:37;:::i;:::-;27746:50;;27668:134;;;:::o;27808:121::-;27866:9;27899:24;27917:5;27899:24;:::i;:::-;27886:37;;27808:121;;;:::o;27935:126::-;27985:9;28018:37;28049:5;28018:37;:::i;:::-;28005:50;;27935:126;;;:::o;28067:113::-;28117:9;28150:24;28168:5;28150:24;:::i;:::-;28137:37;;28067:113;;;:::o;28186:307::-;28254:1;28264:113;28278:6;28275:1;28272:13;28264:113;;;28363:1;28358:3;28354:11;28348:18;28344:1;28339:3;28335:11;28328:39;28300:2;28297:1;28293:10;28288:15;;28264:113;;;28395:6;28392:1;28389:13;28386:101;;;28475:1;28466:6;28461:3;28457:16;28450:27;28386:101;28235:258;28186:307;;;:::o;28499:320::-;28543:6;28580:1;28574:4;28570:12;28560:22;;28627:1;28621:4;28617:12;28648:18;28638:81;;28704:4;28696:6;28692:17;28682:27;;28638:81;28766:2;28758:6;28755:14;28735:18;28732:38;28729:84;;;28785:18;;:::i;:::-;28729:84;28550:269;28499:320;;;:::o;28825:180::-;28873:77;28870:1;28863:88;28970:4;28967:1;28960:15;28994:4;28991:1;28984:15;29011:180;29059:77;29056:1;29049:88;29156:4;29153:1;29146:15;29180:4;29177:1;29170:15;29197:180;29245:77;29242:1;29235:88;29342:4;29339:1;29332:15;29366:4;29363:1;29356:15;29383:180;29431:77;29428:1;29421:88;29528:4;29525:1;29518:15;29552:4;29549:1;29542:15;29569:180;29617:77;29614:1;29607:88;29714:4;29711:1;29704:15;29738:4;29735:1;29728:15;29878:117;29987:1;29984;29977:12;30001:102;30042:6;30093:2;30089:7;30084:2;30077:5;30073:14;30069:28;30059:38;;30001:102;;;:::o;30109:222::-;30249:34;30245:1;30237:6;30233:14;30226:58;30318:5;30313:2;30305:6;30301:15;30294:30;30109:222;:::o;30337:225::-;30477:34;30473:1;30465:6;30461:14;30454:58;30546:8;30541:2;30533:6;30529:15;30522:33;30337:225;:::o;30568:221::-;30708:34;30704:1;30696:6;30692:14;30685:58;30777:4;30772:2;30764:6;30760:15;30753:29;30568:221;:::o;30795:244::-;30935:34;30931:1;30923:6;30919:14;30912:58;31004:27;30999:2;30991:6;30987:15;30980:52;30795:244;:::o;31045:225::-;31185:34;31181:1;31173:6;31169:14;31162:58;31254:8;31249:2;31241:6;31237:15;31230:33;31045:225;:::o;31276:227::-;31416:34;31412:1;31404:6;31400:14;31393:58;31485:10;31480:2;31472:6;31468:15;31461:35;31276:227;:::o;31509:237::-;31649:34;31645:1;31637:6;31633:14;31626:58;31718:20;31713:2;31705:6;31701:15;31694:45;31509:237;:::o;31752:179::-;31892:31;31888:1;31880:6;31876:14;31869:55;31752:179;:::o;31937:227::-;32077:34;32073:1;32065:6;32061:14;32054:58;32146:10;32141:2;32133:6;32129:15;32122:35;31937:227;:::o;32170:182::-;32310:34;32306:1;32298:6;32294:14;32287:58;32170:182;:::o;32358:174::-;32498:26;32494:1;32486:6;32482:14;32475:50;32358:174;:::o;32538:224::-;32678:34;32674:1;32666:6;32662:14;32655:58;32747:7;32742:2;32734:6;32730:15;32723:32;32538:224;:::o;32768:223::-;32908:34;32904:1;32896:6;32892:14;32885:58;32977:6;32972:2;32964:6;32960:15;32953:31;32768:223;:::o;32997:122::-;33070:24;33088:5;33070:24;:::i;:::-;33063:5;33060:35;33050:63;;33109:1;33106;33099:12;33050:63;32997:122;:::o;33125:138::-;33206:32;33232:5;33206:32;:::i;:::-;33199:5;33196:43;33186:71;;33253:1;33250;33243:12;33186:71;33125:138;:::o;33269:116::-;33339:21;33354:5;33339:21;:::i;:::-;33332:5;33329:32;33319:60;;33375:1;33372;33365:12;33319:60;33269:116;:::o;33391:148::-;33477:37;33508:5;33477:37;:::i;:::-;33470:5;33467:48;33457:76;;33529:1;33526;33519:12;33457:76;33391:148;:::o;33545:122::-;33618:24;33636:5;33618:24;:::i;:::-;33611:5;33608:35;33598:63;;33657:1;33654;33647:12;33598:63;33545:122;:::o

Swarm Source

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