ETH Price: $2,755.33 (+4.97%)

Token

SHIFT TOKEN (SHIFT)
 

Overview

Max Total Supply

10,000,000,000,000 SHIFT

Holders

64

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
eip-3074.eth
Balance
13,957,066,410.007597392 SHIFT

Value
$0.00
0xa35fbf50ac06339d1cf7c3b3b714975fac60d5ac
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xB250382D...36c4d63a9
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
SHIFT

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-04-01
*/

//SPDX-License-Identifier: MIT
//SafeMath not used as obsolete since solidity ^0.8 

pragma solidity 0.8.11;

interface IERC20 {
	function totalSupply() external view returns (uint256);
	function decimals() external view returns (uint8);
	function symbol() external view returns (string memory);
	function name() external view returns (string memory);
	function getOwner() external view returns (address);
	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);
}

abstract contract Auth {
	address internal owner;
	constructor(address _owner) { owner = _owner; }
	modifier onlyOwner() { require(msg.sender == owner, "Only contract owner can call this function"); _; }
	function transferOwnership(address payable newOwner) external onlyOwner { owner = newOwner;	emit OwnershipTransferred(newOwner); }
	event OwnershipTransferred(address owner);
}

interface IUniswapV2Router02 {
	function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
	function addLiquidityETH(address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract SHIFT is IERC20, Auth {
	string _name = "SHIFT TOKEN";
	string _symbol = "SHIFT";
	uint8 constant _decimals = 9;
	uint256 constant _totalSupply = 10 * (10**12) * (10 ** _decimals);
	uint32 _smd; uint32 _smr;
	mapping (address => uint256) _balances;
	mapping (address => mapping (address => uint256)) _allowances;
	mapping (address => bool) public noFees;
	mapping (address => bool) public noLimits;
	bool public tradingOpen;
	uint256 public maxTxAmount; uint256 public maxWalletAmount;
	uint256 private taxSwapMin; uint256 private taxSwapMax;
	mapping (address => bool) private _isLiqPool;
	mapping (address => address) private _liqPoolRouterCA;
	mapping (address => address) private _liqPoolPairedCA;
	uint8 private constant _maxTaxRate = 11; 
	uint8 public taxRateBuy; uint8 public taxRateSell; uint8 public taxRateTX;
	uint16 private _autoLPShares = 300;
	uint16 private _charityTaxShares = 100;
	uint16 private _marketingTaxShares = 300;
	uint16 private _developmentTaxShares = 300;
	uint16 private _buybackTaxShares = 100;
	uint16 private _totalTaxShares = _autoLPShares + _charityTaxShares + _marketingTaxShares + _developmentTaxShares + _buybackTaxShares;
	uint16 public blacklistLength = 0;
	address constant _burnWallet = address(0);

	uint256 private _humanBlock = 0;
	mapping (address => uint256) public blacklistBlock;

	address payable private _charityWallet = payable(0xE128c705F246B11F27Cf5C11C90cDf60c58DEeA5); 
	address payable private _marketingWallet = payable(0xB7fA60964dDD7DcC66d0b44964f18B326db5629A); 
	address payable private _developmentWallet = payable(0x4057d71C89392bABd174ceed9E166573203fCc8F); 
	address payable private _buybackWallet = payable(0x2e17749Ab4C57B2ebcdF8D70454B680c63Ed5eFB); 

	bool private _inTaxSwap = false;
	modifier lockTaxSwap { _inTaxSwap = true; _; _inTaxSwap = false; }

	event TokensAirdropped(uint256 totalWallets, uint256 totalTokens);

	constructor (uint32 smd, uint32 smr) Auth(msg.sender) {      
		tradingOpen = false;
		maxTxAmount = _totalSupply;
		maxWalletAmount = _totalSupply;
		taxSwapMin = _totalSupply * 10 / 10000;
		taxSwapMax = _totalSupply * 50 / 10000;
		noFees[owner] = true;
		noFees[address(this)] = true;
		noFees[_buybackWallet] = true;
		noLimits[owner] = true;
		noLimits[address(this)] = true;
		noLimits[_buybackWallet] = true;
		noLimits[_burnWallet] = true;

		require(smd>0, "init out of bounds");
		_smd = smd; _smr = smr;
		_balances[address(owner)] = _totalSupply;
		emit Transfer(address(0), address(owner), _totalSupply);
	}

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

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

	function transfer(address recipient, uint256 amount) external override returns (bool) {
		require(_checkTradingOpen(msg.sender), "Trading not open");
		return _transferFrom(msg.sender, recipient, amount);
	}

	function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
		require(_checkTradingOpen(sender), "Trading not open");
		if(_allowances[sender][msg.sender] != type(uint256).max) { _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount; }
		return _transferFrom(sender, recipient, amount);
	}


	function setLiquidityPool(address liqPoolAddress, address swapRouterCA, address wethPairedCA, bool enabled) external onlyOwner {
		if (tradingOpen) { require(block.number < _humanBlock + 7200, "settings finalized"); } 
		//7200 blocks (~24 hours) post launch we still have a chance to change settings if something goes wrong. After that it's final.
		require(liqPoolAddress!=address(this) && swapRouterCA!=address(this) && wethPairedCA!=address(this));

		_isLiqPool[liqPoolAddress] = enabled;
		_liqPoolRouterCA[liqPoolAddress] = swapRouterCA;
		_liqPoolPairedCA[liqPoolAddress] = wethPairedCA;
		noLimits[liqPoolAddress] = false;
		noFees[liqPoolAddress] = false;

	}

	function _approveRouter(address routerAddress, uint256 _tokenAmount) internal {
		if ( _allowances[address(this)][routerAddress] < _tokenAmount ) {
			_allowances[address(this)][routerAddress] = type(uint256).max;
			emit Approval(address(this), routerAddress, type(uint256).max);
		}
	}

	function _addLiquidity(address routerAddress, uint256 _tokenAmount, uint256 _ethAmountWei, bool autoburn) internal {
		address lpTokenRecipient = address(0);
		if ( !autoburn ) { lpTokenRecipient = owner; }
		IUniswapV2Router02 dexRouter = IUniswapV2Router02(routerAddress);
		dexRouter.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, lpTokenRecipient, block.timestamp );
	}

	function openTrading() external onlyOwner {
		require(!tradingOpen, "trading already open");
		_openTrading();
	}

	function _openTrading() internal {
		_humanBlock = block.number + 20;
		maxTxAmount     = 2 * _totalSupply / 1000 + 10**_decimals; 
		maxWalletAmount = 3 * _totalSupply / 1000 + 10**_decimals;
		taxRateBuy = _maxTaxRate;
		taxRateSell = _maxTaxRate * 2; //anti-dump tax for snipers dumping
		taxRateTX = _maxTaxRate; 
		tradingOpen = true;
	}

	function humanize() external onlyOwner{
		require(tradingOpen);
		_humanize(0);
	}

	function _humanize(uint8 blkcount) internal {
		require(_humanBlock > block.number || _humanBlock == 0,"already humanized");
		_humanBlock = block.number + blkcount;
	}

	function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
		require(sender != address(0), "No transfers from Zero wallet");

		if (!tradingOpen) { require(noFees[sender] && noLimits[sender], "Trading not open"); }
		else if ( _humanBlock > block.number ) {
			if ( uint160(address(recipient)) % _smd == _smr ) { _humanize(3); }
			else if ( blacklistBlock[sender] == 0 ) { _addBlacklist(recipient, block.number); }
			else { _addBlacklist(recipient, blacklistBlock[sender]); }
		} else {
			if ( blacklistBlock[sender] != 0 ) { _addBlacklist(recipient, blacklistBlock[sender]); }
			if ( block.number < _humanBlock + 10 && tx.gasprice > block.basefee ) {
				uint256 priceDiff = tx.gasprice - block.basefee;
		    	if ( priceDiff >= 45 * 10**9 ) { revert("Gas over limit"); }
		    }
		}
		if ( tradingOpen && blacklistBlock[sender] != 0 && blacklistBlock[sender] < block.number ) { revert("blacklisted"); }

		if ( !_inTaxSwap && _isLiqPool[recipient] ) {
			_swapTaxAndLiquify(recipient);
		}
		if ( sender != address(this) && recipient != address(this) && sender != owner ) { require(_checkLimits(recipient, amount), "TX exceeds limits"); }
		uint256 _taxAmount = _calculateTax(sender, recipient, amount);
		uint256 _transferAmount = amount - _taxAmount;
		_balances[sender] = _balances[sender] - amount;
		if ( _taxAmount > 0 ) { _balances[address(this)] = _balances[address(this)] + _taxAmount; }
		_balances[recipient] = _balances[recipient] + _transferAmount;
		emit Transfer(sender, recipient, amount);
		return true;
	}

	function _addBlacklist(address wallet, uint256 blacklistBlockNum) internal {
		if ( !_isLiqPool[wallet] && blacklistBlock[wallet] == 0 ) { 
			blacklistBlock[wallet] = blacklistBlockNum; 
			blacklistLength ++;
		}
	}

	function _checkLimits(address recipient, uint256 transferAmount) internal view returns (bool) {
		bool limitCheckPassed = true;
		if ( tradingOpen && !noLimits[recipient] ) {
			if ( transferAmount > maxTxAmount ) { limitCheckPassed = false; }
			else if ( !_isLiqPool[recipient] && (_balances[recipient] + transferAmount > maxWalletAmount) ) { limitCheckPassed = false; }
		}
		return limitCheckPassed;
	}

	function _checkTradingOpen(address sender) private view returns (bool){
		bool checkResult = false;
		if ( tradingOpen ) { checkResult = true; } 
		else if ( tx.origin == owner ) { checkResult = true; } 
		else if (noFees[sender] && noLimits[sender]) { checkResult = true; } 

		return checkResult;
	}

	function _calculateTax(address sender, address recipient, uint256 amount) internal view returns (uint256) {
		uint256 taxAmount;
		if ( !tradingOpen || noFees[sender] || noFees[recipient] ) { taxAmount = 0; }
		else if ( _isLiqPool[sender] ) { taxAmount = amount * taxRateBuy / 100; }
		else if ( _isLiqPool[recipient] ) { taxAmount = amount * taxRateSell / 100; }
		else { taxAmount = amount * taxRateTX / 100; }
		return taxAmount;
	}

	function isBlacklisted(address wallet) external view returns(bool) {
		if ( blacklistBlock[wallet] != 0 ) { return true; }
		else { return false; }
	}

	function setExemptFromTax(address wallet, bool toggle) external onlyOwner {
		require(!_isLiqPool[wallet], "Cannot set tax for LP" );
		noFees[ wallet ] = toggle;
	}

	function setExemptFromLimits(address wallet, bool setting) external onlyOwner {
		require(!_isLiqPool[wallet] && wallet!=address(0), "Address not allowed" );
		noLimits[ wallet ] = setting;
	}

	function setTaxRates(uint8 newBuyTax, uint8 newSellTax, uint8 newTxTax) external onlyOwner {
		require(newBuyTax <= _maxTaxRate && newSellTax <= _maxTaxRate && newTxTax <= _maxTaxRate, "Tax too high");
		taxRateBuy = newBuyTax;
		taxRateSell = newSellTax;
		taxRateTX = newTxTax;
	}

	function enableBuySupport() external onlyOwner {
		taxRateBuy = 0;
		taxRateSell = 2 * _maxTaxRate;
	}
  
	function setTaxDistribution(uint16 sharesAutoLP, uint16 sharesCharity, uint16 sharesMarketing, uint16 sharesDevelopment, uint16 sharesBuyback) external onlyOwner {
		_autoLPShares = sharesAutoLP;
		_charityTaxShares = sharesCharity;
		_marketingTaxShares = sharesMarketing;
		_developmentTaxShares = sharesDevelopment;
		_buybackTaxShares = sharesBuyback;
		_totalTaxShares = _autoLPShares + _charityTaxShares + _marketingTaxShares + _developmentTaxShares + _buybackTaxShares;
	}
	
	function setTaxWallets(address newCharityWallet, address newMarketingWallet, address newDevelopmentWallet, address newBuybackWallet) external onlyOwner {
		_charityWallet = payable(newCharityWallet);
		_marketingWallet = payable(newMarketingWallet);
		_developmentWallet = payable(newDevelopmentWallet);
		_buybackWallet = payable(newBuybackWallet);
		noFees[newCharityWallet] = true;
		noFees[newMarketingWallet] = true;
		noFees[newDevelopmentWallet] = true;
		noFees[newBuybackWallet] = true;
		noLimits[newBuybackWallet] = true;
	}

	function increaseLimits(uint16 maxTxAmtPermile, uint16 maxWalletAmtPermile) external onlyOwner {
		uint256 newTxAmt = _totalSupply * maxTxAmtPermile / 1000 + 10**_decimals;
		require(newTxAmt >= maxTxAmount, "tx limit too low");
		maxTxAmount = newTxAmt;
		uint256 newWalletAmt = _totalSupply * maxWalletAmtPermile / 1000 + 10**_decimals;
		require(newWalletAmt >= maxWalletAmount, "wallet limit too low");
		maxWalletAmount = newWalletAmt;
	}

	function setTaxSwapLimits(uint32 minValue, uint32 minDivider, uint32 maxValue, uint32 maxDivider) external onlyOwner {
		taxSwapMin = _totalSupply * minValue / minDivider;
		taxSwapMax = _totalSupply * maxValue / maxDivider;
		require(taxSwapMax>=taxSwapMin, "MinMax error");
		require(taxSwapMax>_totalSupply / 100000, "Upper threshold too low");
		require(taxSwapMax<_totalSupply / 100, "Upper threshold too high");
	}

	function _transferTaxTokens(address recipient, uint256 amount) private {
		if ( amount > 0 ) {
			_balances[address(this)] = _balances[address(this)] - amount;
			_balances[recipient] = _balances[recipient] + amount;
			emit Transfer(address(this), recipient, amount);
		}
	}

	function _swapTaxAndLiquify(address _liqPoolAddress) private lockTaxSwap {
		uint256 _taxTokensAvailable = balanceOf(address(this));

		if ( _taxTokensAvailable >= taxSwapMin && tradingOpen ) {
			if ( _taxTokensAvailable >= taxSwapMax ) { _taxTokensAvailable = taxSwapMax; }
			uint256 _tokensForLP = _taxTokensAvailable * _autoLPShares / _totalTaxShares / 2;

			uint256 _tokensToSwap = _taxTokensAvailable - _tokensForLP;
			if( _tokensToSwap > 10**_decimals ) {
				uint256 _ethPreSwap = address(this).balance;
				_swapTaxTokensForEth(_liqPoolRouterCA[_liqPoolAddress], _liqPoolPairedCA[_liqPoolAddress], _tokensToSwap);
				uint256 _ethSwapped = address(this).balance - _ethPreSwap;
				if ( _autoLPShares > 0 ) {
					uint256 _ethWeiAmount = _ethSwapped * _autoLPShares / _totalTaxShares ;
					_approveRouter(_liqPoolRouterCA[_liqPoolAddress], _tokensForLP);
					_addLiquidity(_liqPoolRouterCA[_liqPoolAddress], _tokensForLP, _ethWeiAmount, false);
				}
			}
			uint256 _contractETHBalance = address(this).balance;
			if(_contractETHBalance > 0) { _distributeTaxEth(_contractETHBalance); }
		}
	}

	function _swapTaxTokensForEth(address routerAddress, address pairedCA, uint256 _tokenAmount) private {
		_approveRouter(routerAddress, _tokenAmount);
		address[] memory path = new address[](2);
		path[0] = address(this);
		path[1] = pairedCA;
		IUniswapV2Router02 dexRouter = IUniswapV2Router02(routerAddress);
		dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(_tokenAmount,0,path,address(this),block.timestamp);
	}

	function _distributeTaxEth(uint256 _amount) private {
		uint16 _ethTaxShareTotal = _charityTaxShares + _marketingTaxShares + _developmentTaxShares + _buybackTaxShares;
		if ( _charityTaxShares > 0 ) { _charityWallet.transfer(_amount * _charityTaxShares / _ethTaxShareTotal); }
		if ( _marketingTaxShares > 0 ) { _marketingWallet.transfer(_amount * _marketingTaxShares / _ethTaxShareTotal); }
		if ( _developmentTaxShares > 0 ) { _developmentWallet.transfer(_amount * _developmentTaxShares / _ethTaxShareTotal); }
		if ( _buybackTaxShares > 0 ) { _buybackWallet.transfer(_amount * _buybackTaxShares / _ethTaxShareTotal); }
	}

	function taxTokensSwap(address liqPoolAddress) external onlyOwner {
		uint256 taxTokenBalance = balanceOf(address(this));
		require(taxTokenBalance > 0, "No tokens");
		require(_isLiqPool[liqPoolAddress], "Invalid liquidity pool");
		_swapTaxTokensForEth(_liqPoolRouterCA[liqPoolAddress], _liqPoolPairedCA[liqPoolAddress], taxTokenBalance);
	}

	function taxEthSend() external onlyOwner { 
		_distributeTaxEth(address(this).balance); 
	}

	function airdrop(address[] calldata addresses, uint256[] calldata tokenAmounts) external onlyOwner {
        require(addresses.length <= 200,"Wallet count over 200 (gas risk)");
        require(addresses.length == tokenAmounts.length,"Address and token amount list mismach");

        uint256 airdropTotal = 0;
        for(uint i=0; i < addresses.length; i++){
            airdropTotal += (tokenAmounts[i] * 10**_decimals);
        }
        require(_balances[msg.sender] >= airdropTotal, "Token balance lower than airdrop total");

        for(uint i=0; i < addresses.length; i++){
            _balances[msg.sender] -= (tokenAmounts[i] * 10**_decimals);
            _balances[addresses[i]] += (tokenAmounts[i] * 10**_decimals);
			emit Transfer(msg.sender, addresses[i], (tokenAmounts[i] * 10**_decimals) );       
        }

        emit TokensAirdropped(addresses.length, airdropTotal);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"uint32","name":"smd","type":"uint32"},{"internalType":"uint32","name":"smr","type":"uint32"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"totalWallets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalTokens","type":"uint256"}],"name":"TokensAirdropped","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"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokenAmounts","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklistBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blacklistLength","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableBuySupport","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"humanize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"maxTxAmtPermile","type":"uint16"},{"internalType":"uint16","name":"maxWalletAmtPermile","type":"uint16"}],"name":"increaseLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"noFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"noLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"setting","type":"bool"}],"name":"setExemptFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"toggle","type":"bool"}],"name":"setExemptFromTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"liqPoolAddress","type":"address"},{"internalType":"address","name":"swapRouterCA","type":"address"},{"internalType":"address","name":"wethPairedCA","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLiquidityPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"sharesAutoLP","type":"uint16"},{"internalType":"uint16","name":"sharesCharity","type":"uint16"},{"internalType":"uint16","name":"sharesMarketing","type":"uint16"},{"internalType":"uint16","name":"sharesDevelopment","type":"uint16"},{"internalType":"uint16","name":"sharesBuyback","type":"uint16"}],"name":"setTaxDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newBuyTax","type":"uint8"},{"internalType":"uint8","name":"newSellTax","type":"uint8"},{"internalType":"uint8","name":"newTxTax","type":"uint8"}],"name":"setTaxRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"minValue","type":"uint32"},{"internalType":"uint32","name":"minDivider","type":"uint32"},{"internalType":"uint32","name":"maxValue","type":"uint32"},{"internalType":"uint32","name":"maxDivider","type":"uint32"}],"name":"setTaxSwapLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newCharityWallet","type":"address"},{"internalType":"address","name":"newMarketingWallet","type":"address"},{"internalType":"address","name":"newDevelopmentWallet","type":"address"},{"internalType":"address","name":"newBuybackWallet","type":"address"}],"name":"setTaxWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxEthSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"taxRateBuy","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxRateSell","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxRateTX","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"liqPoolAddress","type":"address"}],"name":"taxTokensSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526040518060400160405280600b81526020017f534849465420544f4b454e00000000000000000000000000000000000000000081525060019080519060200190620000519291906200098f565b506040518060400160405280600581526020017f5348494654000000000000000000000000000000000000000000000000000000815250600290805190602001906200009f9291906200098f565b5061012c601060036101000a81548161ffff021916908361ffff1602179055506064601060056101000a81548161ffff021916908361ffff16021790555061012c601060076101000a81548161ffff021916908361ffff16021790555061012c601060096101000a81548161ffff021916908361ffff16021790555060646010600b6101000a81548161ffff021916908361ffff1602179055506010600b9054906101000a900461ffff16601060099054906101000a900461ffff16601060079054906101000a900461ffff16601060059054906101000a900461ffff16601060039054906101000a900461ffff166200019a919062000a7c565b620001a6919062000a7c565b620001b2919062000a7c565b620001be919062000a7c565b6010600d6101000a81548161ffff021916908361ffff16021790555060006010600f6101000a81548161ffff021916908361ffff160217905550600060115573e128c705f246b11f27cf5c11c90cdf60c58deea5601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b7fa60964ddd7dcc66d0b44964f18b326db5629a601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550734057d71c89392babd174ceed9e166573203fcc8f601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550732e17749ab4c57b2ebcdf8d70454b680c63ed5efb601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601660146101000a81548160ff0219169083151502179055503480156200037957600080fd5b5060405162006da438038062006da483398181016040528101906200039f919062000b01565b33806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000600860006101000a81548160ff0219169083151502179055506009600a6200040c919062000cb3565b6509184e72a0006200041f919062000d04565b6009819055506009600a62000435919062000cb3565b6509184e72a00062000448919062000d04565b600a81905550612710600a6009600a62000463919062000cb3565b6509184e72a00062000476919062000d04565b62000482919062000d04565b6200048e919062000d94565b600b8190555061271060326009600a620004a9919062000cb3565b6509184e72a000620004bc919062000d04565b620004c8919062000d04565b620004d4919062000d94565b600c819055506001600660008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060008263ffffffff161162000814576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200080b9062000e2d565b60405180910390fd5b81600360006101000a81548163ffffffff021916908363ffffffff16021790555080600360046101000a81548163ffffffff021916908363ffffffff1602179055506009600a62000866919062000cb3565b6509184e72a00062000879919062000d04565b600460008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6200095d919062000cb3565b6509184e72a00062000970919062000d04565b6040516200097f919062000e60565b60405180910390a3505062000ee2565b8280546200099d9062000eac565b90600052602060002090601f016020900481019282620009c1576000855562000a0d565b82601f10620009dc57805160ff191683800117855562000a0d565b8280016001018555821562000a0d579182015b8281111562000a0c578251825591602001919060010190620009ef565b5b50905062000a1c919062000a20565b5090565b5b8082111562000a3b57600081600090555060010162000a21565b5090565b600061ffff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000a898262000a3f565b915062000a968362000a3f565b92508261ffff0382111562000ab05762000aaf62000a4d565b5b828201905092915050565b600080fd5b600063ffffffff82169050919050565b62000adb8162000ac0565b811462000ae757600080fd5b50565b60008151905062000afb8162000ad0565b92915050565b6000806040838503121562000b1b5762000b1a62000abb565b5b600062000b2b8582860162000aea565b925050602062000b3e8582860162000aea565b9150509250929050565b60008160011c9050919050565b6000808291508390505b600185111562000ba75780860481111562000b7f5762000b7e62000a4d565b5b600185161562000b8f5780820291505b808102905062000b9f8562000b48565b945062000b5f565b94509492505050565b60008262000bc2576001905062000c95565b8162000bd2576000905062000c95565b816001811462000beb576002811462000bf65762000c2c565b600191505062000c95565b60ff84111562000c0b5762000c0a62000a4d565b5b8360020a91508482111562000c255762000c2462000a4d565b5b5062000c95565b5060208310610133831016604e8410600b841016171562000c665782820a90508381111562000c605762000c5f62000a4d565b5b62000c95565b62000c75848484600162000b55565b9250905081840481111562000c8f5762000c8e62000a4d565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000cc08262000c9c565b915062000ccd8362000ca6565b925062000cfc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000bb0565b905092915050565b600062000d118262000c9c565b915062000d1e8362000c9c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000d5a5762000d5962000a4d565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000da18262000c9c565b915062000dae8362000c9c565b92508262000dc15762000dc062000d65565b5b828204905092915050565b600082825260208201905092915050565b7f696e6974206f7574206f6620626f756e64730000000000000000000000000000600082015250565b600062000e1560128362000dcc565b915062000e228262000ddd565b602082019050919050565b6000602082019050818103600083015262000e488162000e06565b9050919050565b62000e5a8162000c9c565b82525050565b600060208201905062000e77600083018462000e4f565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000ec557607f821691505b6020821081141562000edc5762000edb62000e7d565b5b50919050565b615eb28062000ef26000396000f3fe6080604052600436106102135760003560e01c80638c0b5e2211610118578063c9567bf9116100a0578063e4dbc45b1161006f578063e4dbc45b14610796578063ed7b6bb5146107bf578063f2fde38b146107d6578063fe575a87146107ff578063ffb54a991461083c5761021a565b8063c9567bf9146106ee578063cc18e05a14610705578063dc55f5c714610730578063dd62ed3e146107595761021a565b8063a9059cbb116100e7578063a9059cbb1461060b578063aa4bde2814610648578063b142180314610673578063b6c767071461069c578063c2c31a9b146106c55761021a565b80638c0b5e22146105615780639346afac1461058c57806395d89b41146105b7578063a13d1a2b146105e25761021a565b806323b872dd1161019b578063672434821161016a578063672434821461047c578063677ef846146104a557806370a08231146104ce57806380781cf91461050b578063893d20e8146105365761021a565b806323b872dd1461039a578063313ce567146103d757806340d3f6da146104025780635ea5208e1461043f5761021a565b8063174351e6116101e2578063174351e6146102d957806318160ddd146103165780631b533a9e146103415780631c939ee91461036c5780631cbbe3e4146103835761021a565b806306fdde031461021f578063095ea7b31461024a57806309ef509f1461028757806315b6c176146102b05761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b50610234610867565b6040516102419190614598565b60405180910390f35b34801561025657600080fd5b50610271600480360381019061026c9190614658565b6108f9565b60405161027e91906146b3565b60405180910390f35b34801561029357600080fd5b506102ae60048036038101906102a99190614707565b6109ff565b005b3480156102bc57600080fd5b506102d760048036038101906102d29190614786565b610b53565b005b3480156102e557600080fd5b5061030060048036038101906102fb91906147c6565b610cc9565b60405161030d91906146b3565b60405180910390f35b34801561032257600080fd5b5061032b610ce9565b6040516103389190614802565b60405180910390f35b34801561034d57600080fd5b50610356610d0f565b604051610363919061482c565b60405180910390f35b34801561037857600080fd5b50610381610d22565b005b34801561038f57600080fd5b50610398610dbb565b005b3480156103a657600080fd5b506103c160048036038101906103bc9190614847565b610e6e565b6040516103ce91906146b3565b60405180910390f35b3480156103e357600080fd5b506103ec611078565b6040516103f9919061482c565b60405180910390f35b34801561040e57600080fd5b50610429600480360381019061042491906147c6565b611081565b6040516104369190614802565b60405180910390f35b34801561044b57600080fd5b50610466600480360381019061046191906147c6565b611099565b60405161047391906146b3565b60405180910390f35b34801561048857600080fd5b506104a3600480360381019061049e9190614955565b6110b9565b005b3480156104b157600080fd5b506104cc60048036038101906104c791906149d6565b611511565b005b3480156104da57600080fd5b506104f560048036038101906104f091906147c6565b611861565b6040516105029190614802565b60405180910390f35b34801561051757600080fd5b506105206118aa565b60405161052d919061482c565b60405180910390f35b34801561054257600080fd5b5061054b6118bd565b6040516105589190614a4c565b60405180910390f35b34801561056d57600080fd5b506105766118e6565b6040516105839190614802565b60405180910390f35b34801561059857600080fd5b506105a16118ec565b6040516105ae9190614a84565b60405180910390f35b3480156105c357600080fd5b506105cc611900565b6040516105d99190614598565b60405180910390f35b3480156105ee57600080fd5b5061060960048036038101906106049190614786565b611992565b005b34801561061757600080fd5b50610632600480360381019061062d9190614658565b611b41565b60405161063f91906146b3565b60405180910390f35b34801561065457600080fd5b5061065d611b9e565b60405161066a9190614802565b60405180910390f35b34801561067f57600080fd5b5061069a60048036038101906106959190614acb565b611ba4565b005b3480156106a857600080fd5b506106c360048036038101906106be91906147c6565b611d7e565b005b3480156106d157600080fd5b506106ec60048036038101906106e79190614b0b565b611fb5565b005b3480156106fa57600080fd5b5061070361235c565b005b34801561071157600080fd5b5061071a612444565b604051610727919061482c565b60405180910390f35b34801561073c57600080fd5b5061075760048036038101906107529190614b72565b612457565b005b34801561076557600080fd5b50610780600480360381019061077b9190614bed565b612616565b60405161078d9190614802565b60405180910390f35b3480156107a257600080fd5b506107bd60048036038101906107b89190614c69565b61269d565b005b3480156107cb57600080fd5b506107d46128e4565b005b3480156107e257600080fd5b506107fd60048036038101906107f89190614d0e565b6129b8565b005b34801561080b57600080fd5b50610826600480360381019061082191906147c6565b612ac0565b60405161083391906146b3565b60405180910390f35b34801561084857600080fd5b50610851612b1b565b60405161085e91906146b3565b60405180910390f35b60606001805461087690614d6a565b80601f01602080910402602001604051908101604052809291908181526020018280546108a290614d6a565b80156108ef5780601f106108c4576101008083540402835291602001916108ef565b820191906000526020600020905b8154815290600101906020018083116108d257829003601f168201915b5050505050905090565b60008061090533611861565b1161090f57600080fd5b81600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109ed9190614802565b60405180910390a36001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8490614e0e565b60405180910390fd5b600b60ff168360ff1611158015610aab5750600b60ff168260ff1611155b8015610abe5750600b60ff168160ff1611155b610afd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af490614e7a565b60405180910390fd5b82601060006101000a81548160ff021916908360ff16021790555081601060016101000a81548160ff021916908360ff16021790555080601060026101000a81548160ff021916908360ff160217905550505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610be1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd890614e0e565b60405180910390fd5b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610c6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6590614ee6565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60066020528060005260406000206000915054906101000a900460ff1681565b60006009600a610cf99190615068565b6509184e72a000610d0a91906150b3565b905090565b601060029054906101000a900460ff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610db0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da790614e0e565b60405180910390fd5b610db947612b2e565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4090614e0e565b60405180910390fd5b600860009054906101000a900460ff16610e6257600080fd5b610e6c6000612e6c565b565b6000610e7984612ed5565b610eb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaf90615159565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146110645781600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fe39190615179565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61106f84848461300e565b90509392505050565b60006009905090565b60126020528060005260406000206000915090505481565b60076020528060005260406000206000915054906101000a900460ff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611147576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113e90614e0e565b60405180910390fd5b60c884849050111561118e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611185906151f9565b60405180910390fd5b8181905084849050146111d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cd9061528b565b60405180910390fd5b6000805b85859050811015611237576009600a6111f39190615068565b848483818110611206576112056152ab565b5b9050602002013561121791906150b3565b8261122291906152da565b9150808061122f90615330565b9150506111da565b5080600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156112ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b1906153eb565b60405180910390fd5b60005b858590508110156114cd576009600a6112d69190615068565b8484838181106112e9576112e86152ab565b5b905060200201356112fa91906150b3565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113489190615179565b925050819055506009600a61135d9190615068565b8484838181106113705761136f6152ab565b5b9050602002013561138191906150b3565b60046000888885818110611398576113976152ab565b5b90506020020160208101906113ad91906147c6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113f691906152da565b925050819055508585828181106114105761140f6152ab565b5b905060200201602081019061142591906147c6565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6114819190615068565b878786818110611494576114936152ab565b5b905060200201356114a591906150b3565b6040516114b29190614802565b60405180910390a380806114c590615330565b9150506112bd565b507f71cc7095cc35ed4701c217a8efb440732eb0737da67f6548c008ac26fba95464858590508260405161150292919061540b565b60405180910390a15050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461159f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159690614e0e565b60405180910390fd5b83601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050505050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601060009054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60095481565b6010600f9054906101000a900461ffff1681565b60606002805461190f90614d6a565b80601f016020809104026020016040519081016040528092919081815260200182805461193b90614d6a565b80156119885780601f1061195d57610100808354040283529160200191611988565b820191906000526020600020905b81548152906001019060200180831161196b57829003601f168201915b5050505050905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1790614e0e565b60405180910390fd5b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611aa75750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611add90615480565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611b4c33612ed5565b611b8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8290615159565b60405180910390fd5b611b9633848461300e565b905092915050565b600a5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2990614e0e565b60405180910390fd5b60006009600a611c429190615068565b6103e88461ffff166009600a611c589190615068565b6509184e72a000611c6991906150b3565b611c7391906150b3565b611c7d91906154cf565b611c8791906152da565b9050600954811015611cce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc59061554c565b60405180910390fd5b8060098190555060006009600a611ce59190615068565b6103e88461ffff166009600a611cfb9190615068565b6509184e72a000611d0c91906150b3565b611d1691906150b3565b611d2091906154cf565b611d2a91906152da565b9050600a54811015611d71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d68906155b8565b60405180910390fd5b80600a8190555050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0390614e0e565b60405180910390fd5b6000611e1730611861565b905060008111611e5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5390615624565b60405180910390fd5b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611edf90615690565b60405180910390fd5b611fb1600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361384e565b5050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612043576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203a90614e0e565b60405180910390fd5b600860009054906101000a900460ff16156120aa57611c2060115461206891906152da565b43106120a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a0906156fc565b60405180910390fd5b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561211257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561214a57503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61215357600080fd5b80600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555082600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146123ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e190614e0e565b60405180910390fd5b600860009054906101000a900460ff161561243a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243190615768565b60405180910390fd5b6124426139c4565b565b601060019054906101000a900460ff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146124e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124dc90614e0e565b60405180910390fd5b84601060036101000a81548161ffff021916908361ffff16021790555083601060056101000a81548161ffff021916908361ffff16021790555082601060076101000a81548161ffff021916908361ffff16021790555081601060096101000a81548161ffff021916908361ffff160217905550806010600b6101000a81548161ffff021916908361ffff1602179055506010600b9054906101000a900461ffff16601060099054906101000a900461ffff16601060079054906101000a900461ffff16601060059054906101000a900461ffff16601060039054906101000a900461ffff166125d59190615788565b6125df9190615788565b6125e99190615788565b6125f39190615788565b6010600d6101000a81548161ffff021916908361ffff1602179055505050505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461272b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272290614e0e565b60405180910390fd5b8263ffffffff168463ffffffff166009600a6127479190615068565b6509184e72a00061275891906150b3565b61276291906150b3565b61276c91906154cf565b600b819055508063ffffffff168263ffffffff166009600a61278e9190615068565b6509184e72a00061279f91906150b3565b6127a991906150b3565b6127b391906154cf565b600c81905550600b54600c541015612800576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f79061580c565b60405180910390fd5b620186a06009600a6128129190615068565b6509184e72a00061282391906150b3565b61282d91906154cf565b600c5411612870576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286790615878565b60405180910390fd5b60646009600a6128809190615068565b6509184e72a00061289191906150b3565b61289b91906154cf565b600c54106128de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d5906158e4565b60405180910390fd5b50505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612972576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296990614e0e565b60405180910390fd5b6000601060006101000a81548160ff021916908360ff160217905550600b600261299c9190615904565b601060016101000a81548160ff021916908360ff160217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612a46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3d90614e0e565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051612ab5919061599e565b60405180910390a150565b600080601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612b115760019050612b16565b600090505b919050565b600860009054906101000a900460ff1681565b60006010600b9054906101000a900461ffff16601060099054906101000a900461ffff16601060079054906101000a900461ffff16601060059054906101000a900461ffff16612b7e9190615788565b612b889190615788565b612b929190615788565b90506000601060059054906101000a900461ffff1661ffff161115612c4957601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8261ffff16601060059054906101000a900461ffff1661ffff1685612c1291906150b3565b612c1c91906154cf565b9081150290604051600060405180830381858888f19350505050158015612c47573d6000803e3d6000fd5b505b6000601060079054906101000a900461ffff1661ffff161115612cfe57601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8261ffff16601060079054906101000a900461ffff1661ffff1685612cc791906150b3565b612cd191906154cf565b9081150290604051600060405180830381858888f19350505050158015612cfc573d6000803e3d6000fd5b505b6000601060099054906101000a900461ffff1661ffff161115612db357601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8261ffff16601060099054906101000a900461ffff1661ffff1685612d7c91906150b3565b612d8691906154cf565b9081150290604051600060405180830381858888f19350505050158015612db1573d6000803e3d6000fd5b505b60006010600b9054906101000a900461ffff1661ffff161115612e6857601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8261ffff166010600b9054906101000a900461ffff1661ffff1685612e3191906150b3565b612e3b91906154cf565b9081150290604051600060405180830381858888f19350505050158015612e66573d6000803e3d6000fd5b505b5050565b436011541180612e7e57506000601154145b612ebd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb490615a05565b60405180910390fd5b8060ff1643612ecc91906152da565b60118190555050565b60008060009050600860009054906101000a900460ff1615612efa5760019050613005565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff161415612f575760019050613004565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612ff95750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561300357600190505b5b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561307f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161307690615a71565b60405180910390fd5b600860009054906101000a900460ff1661317957600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131355750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613174576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161316b90615159565b60405180910390fd5b61339f565b43601154111561329257600360049054906101000a900463ffffffff1663ffffffff16600360009054906101000a900463ffffffff1663ffffffff16846131c09190615a91565b73ffffffffffffffffffffffffffffffffffffffff1614156131eb576131e66003612e6c565b61328d565b6000601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156132425761323d8343613b00565b61328c565b61328b83601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b00565b5b5b61339e565b6000601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146133235761332283601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b00565b5b600a60115461333291906152da565b4310801561333f5750483a115b1561339d576000483a6133529190615179565b9050640a7a358200811061339b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161339290615b0e565b60405180910390fd5b505b5b5b600860009054906101000a900460ff1680156133fb57506000601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b8015613445575043601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b15613485576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161347c90615b7a565b60405180910390fd5b601660149054906101000a900460ff161580156134eb5750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156134fa576134f983613c22565b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561356257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156135ba575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15613609576135c98383613f43565b613608576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135ff90615be6565b60405180910390fd5b5b6000613616858585614083565b9050600081846136269190615179565b905083600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136739190615179565b600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600082111561374e5781600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461370a91906152da565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461379991906152da565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516138399190614802565b60405180910390a36001925050509392505050565b613858838261428d565b6000600267ffffffffffffffff81111561387557613874615c06565b5b6040519080825280602002602001820160405280156138a35781602001602082028036833780820191505090505b50905030816000815181106138bb576138ba6152ab565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050828160018151811061390a576139096152ab565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060008490508073ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b815260040161398b959493929190615d2e565b600060405180830381600087803b1580156139a557600080fd5b505af11580156139b9573d6000803e3d6000fd5b505050505050505050565b6014436139d191906152da565b6011819055506009600a6139e59190615068565b6103e86009600a6139f69190615068565b6509184e72a000613a0791906150b3565b6002613a1391906150b3565b613a1d91906154cf565b613a2791906152da565b6009819055506009600a613a3b9190615068565b6103e86009600a613a4c9190615068565b6509184e72a000613a5d91906150b3565b6003613a6991906150b3565b613a7391906154cf565b613a7d91906152da565b600a81905550600b601060006101000a81548160ff021916908360ff1602179055506002600b613aad9190615904565b601060016101000a81548160ff021916908360ff160217905550600b601060026101000a81548160ff021916908360ff1602179055506001600860006101000a81548160ff021916908315150217905550565b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613b9957506000601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b15613c1e5780601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506010600f81819054906101000a900461ffff1680929190613c0290615d88565b91906101000a81548161ffff021916908361ffff160217905550505b5050565b6001601660146101000a81548160ff0219169083151502179055506000613c4830611861565b9050600b548110158015613c685750600860009054906101000a900460ff165b15613f2457600c548110613c7c57600c5490505b600060026010600d9054906101000a900461ffff1661ffff16601060039054906101000a900461ffff1661ffff1684613cb591906150b3565b613cbf91906154cf565b613cc991906154cf565b905060008183613cd99190615179565b90506009600a613ce99190615068565b811115613f08576000479050613dbe600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461384e565b60008147613dcc9190615179565b90506000601060039054906101000a900461ffff1661ffff161115613f055760006010600d9054906101000a900461ffff1661ffff16601060039054906101000a900461ffff1661ffff1683613e2291906150b3565b613e2c91906154cf565b9050613e97600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168661428d565b613f03600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168683600061443c565b505b50505b60004790506000811115613f2057613f1f81612b2e565b5b5050505b506000601660146101000a81548160ff02191690831515021790555050565b60008060019050600860009054906101000a900460ff168015613fb05750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561407957600954831115613fc85760009050614078565b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561406d5750600a5483600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461406b91906152da565b115b1561407757600090505b5b5b8091505092915050565b600080600860009054906101000a900460ff1615806140eb5750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061413f5750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561414d5760009050614282565b600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156141d0576064601060009054906101000a900460ff1660ff16846141bf91906150b3565b6141c991906154cf565b9050614281565b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614253576064601060019054906101000a900460ff1660ff168461424291906150b3565b61424c91906154cf565b9050614280565b6064601060029054906101000a900460ff1660ff168461427391906150b3565b61427d91906154cf565b90505b5b5b809150509392505050565b80600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015614438577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60405161442f9190614802565b60405180910390a35b5050565b6000816144675760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b60008590508073ffffffffffffffffffffffffffffffffffffffff1663f305d71985308860008088426040518863ffffffff1660e01b81526004016144b196959493929190615db3565b60606040518083038185885af11580156144cf573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906144f49190615e29565b505050505050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561453957808201518184015260208101905061451e565b83811115614548576000848401525b50505050565b6000601f19601f8301169050919050565b600061456a826144ff565b614574818561450a565b935061458481856020860161451b565b61458d8161454e565b840191505092915050565b600060208201905081810360008301526145b2818461455f565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006145ef826145c4565b9050919050565b6145ff816145e4565b811461460a57600080fd5b50565b60008135905061461c816145f6565b92915050565b6000819050919050565b61463581614622565b811461464057600080fd5b50565b6000813590506146528161462c565b92915050565b6000806040838503121561466f5761466e6145ba565b5b600061467d8582860161460d565b925050602061468e85828601614643565b9150509250929050565b60008115159050919050565b6146ad81614698565b82525050565b60006020820190506146c860008301846146a4565b92915050565b600060ff82169050919050565b6146e4816146ce565b81146146ef57600080fd5b50565b600081359050614701816146db565b92915050565b6000806000606084860312156147205761471f6145ba565b5b600061472e868287016146f2565b935050602061473f868287016146f2565b9250506040614750868287016146f2565b9150509250925092565b61476381614698565b811461476e57600080fd5b50565b6000813590506147808161475a565b92915050565b6000806040838503121561479d5761479c6145ba565b5b60006147ab8582860161460d565b92505060206147bc85828601614771565b9150509250929050565b6000602082840312156147dc576147db6145ba565b5b60006147ea8482850161460d565b91505092915050565b6147fc81614622565b82525050565b600060208201905061481760008301846147f3565b92915050565b614826816146ce565b82525050565b6000602082019050614841600083018461481d565b92915050565b6000806000606084860312156148605761485f6145ba565b5b600061486e8682870161460d565b935050602061487f8682870161460d565b925050604061489086828701614643565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f8401126148bf576148be61489a565b5b8235905067ffffffffffffffff8111156148dc576148db61489f565b5b6020830191508360208202830111156148f8576148f76148a4565b5b9250929050565b60008083601f8401126149155761491461489a565b5b8235905067ffffffffffffffff8111156149325761493161489f565b5b60208301915083602082028301111561494e5761494d6148a4565b5b9250929050565b6000806000806040858703121561496f5761496e6145ba565b5b600085013567ffffffffffffffff81111561498d5761498c6145bf565b5b614999878288016148a9565b9450945050602085013567ffffffffffffffff8111156149bc576149bb6145bf565b5b6149c8878288016148ff565b925092505092959194509250565b600080600080608085870312156149f0576149ef6145ba565b5b60006149fe8782880161460d565b9450506020614a0f8782880161460d565b9350506040614a208782880161460d565b9250506060614a318782880161460d565b91505092959194509250565b614a46816145e4565b82525050565b6000602082019050614a616000830184614a3d565b92915050565b600061ffff82169050919050565b614a7e81614a67565b82525050565b6000602082019050614a996000830184614a75565b92915050565b614aa881614a67565b8114614ab357600080fd5b50565b600081359050614ac581614a9f565b92915050565b60008060408385031215614ae257614ae16145ba565b5b6000614af085828601614ab6565b9250506020614b0185828601614ab6565b9150509250929050565b60008060008060808587031215614b2557614b246145ba565b5b6000614b338782880161460d565b9450506020614b448782880161460d565b9350506040614b558782880161460d565b9250506060614b6687828801614771565b91505092959194509250565b600080600080600060a08688031215614b8e57614b8d6145ba565b5b6000614b9c88828901614ab6565b9550506020614bad88828901614ab6565b9450506040614bbe88828901614ab6565b9350506060614bcf88828901614ab6565b9250506080614be088828901614ab6565b9150509295509295909350565b60008060408385031215614c0457614c036145ba565b5b6000614c128582860161460d565b9250506020614c238582860161460d565b9150509250929050565b600063ffffffff82169050919050565b614c4681614c2d565b8114614c5157600080fd5b50565b600081359050614c6381614c3d565b92915050565b60008060008060808587031215614c8357614c826145ba565b5b6000614c9187828801614c54565b9450506020614ca287828801614c54565b9350506040614cb387828801614c54565b9250506060614cc487828801614c54565b91505092959194509250565b6000614cdb826145c4565b9050919050565b614ceb81614cd0565b8114614cf657600080fd5b50565b600081359050614d0881614ce2565b92915050565b600060208284031215614d2457614d236145ba565b5b6000614d3284828501614cf9565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614d8257607f821691505b60208210811415614d9657614d95614d3b565b5b50919050565b7f4f6e6c7920636f6e7472616374206f776e65722063616e2063616c6c2074686960008201527f732066756e6374696f6e00000000000000000000000000000000000000000000602082015250565b6000614df8602a8361450a565b9150614e0382614d9c565b604082019050919050565b60006020820190508181036000830152614e2781614deb565b9050919050565b7f54617820746f6f20686967680000000000000000000000000000000000000000600082015250565b6000614e64600c8361450a565b9150614e6f82614e2e565b602082019050919050565b60006020820190508181036000830152614e9381614e57565b9050919050565b7f43616e6e6f74207365742074617820666f72204c500000000000000000000000600082015250565b6000614ed060158361450a565b9150614edb82614e9a565b602082019050919050565b60006020820190508181036000830152614eff81614ec3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115614f8c57808604811115614f6857614f67614f06565b5b6001851615614f775780820291505b8081029050614f8585614f35565b9450614f4c565b94509492505050565b600082614fa55760019050615061565b81614fb35760009050615061565b8160018114614fc95760028114614fd357615002565b6001915050615061565b60ff841115614fe557614fe4614f06565b5b8360020a915084821115614ffc57614ffb614f06565b5b50615061565b5060208310610133831016604e8410600b84101617156150375782820a90508381111561503257615031614f06565b5b615061565b6150448484846001614f42565b9250905081840481111561505b5761505a614f06565b5b81810290505b9392505050565b600061507382614622565b915061507e836146ce565b92506150ab7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614f95565b905092915050565b60006150be82614622565b91506150c983614622565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561510257615101614f06565b5b828202905092915050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b600061514360108361450a565b915061514e8261510d565b602082019050919050565b6000602082019050818103600083015261517281615136565b9050919050565b600061518482614622565b915061518f83614622565b9250828210156151a2576151a1614f06565b5b828203905092915050565b7f57616c6c657420636f756e74206f766572203230302028676173207269736b29600082015250565b60006151e360208361450a565b91506151ee826151ad565b602082019050919050565b60006020820190508181036000830152615212816151d6565b9050919050565b7f4164647265737320616e6420746f6b656e20616d6f756e74206c697374206d6960008201527f736d616368000000000000000000000000000000000000000000000000000000602082015250565b600061527560258361450a565b915061528082615219565b604082019050919050565b600060208201905081810360008301526152a481615268565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006152e582614622565b91506152f083614622565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561532557615324614f06565b5b828201905092915050565b600061533b82614622565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561536e5761536d614f06565b5b600182019050919050565b7f546f6b656e2062616c616e6365206c6f776572207468616e2061697264726f7060008201527f20746f74616c0000000000000000000000000000000000000000000000000000602082015250565b60006153d560268361450a565b91506153e082615379565b604082019050919050565b60006020820190508181036000830152615404816153c8565b9050919050565b600060408201905061542060008301856147f3565b61542d60208301846147f3565b9392505050565b7f41646472657373206e6f7420616c6c6f77656400000000000000000000000000600082015250565b600061546a60138361450a565b915061547582615434565b602082019050919050565b600060208201905081810360008301526154998161545d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006154da82614622565b91506154e583614622565b9250826154f5576154f46154a0565b5b828204905092915050565b7f7478206c696d697420746f6f206c6f7700000000000000000000000000000000600082015250565b600061553660108361450a565b915061554182615500565b602082019050919050565b6000602082019050818103600083015261556581615529565b9050919050565b7f77616c6c6574206c696d697420746f6f206c6f77000000000000000000000000600082015250565b60006155a260148361450a565b91506155ad8261556c565b602082019050919050565b600060208201905081810360008301526155d181615595565b9050919050565b7f4e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b600061560e60098361450a565b9150615619826155d8565b602082019050919050565b6000602082019050818103600083015261563d81615601565b9050919050565b7f496e76616c6964206c697175696469747920706f6f6c00000000000000000000600082015250565b600061567a60168361450a565b915061568582615644565b602082019050919050565b600060208201905081810360008301526156a98161566d565b9050919050565b7f73657474696e67732066696e616c697a65640000000000000000000000000000600082015250565b60006156e660128361450a565b91506156f1826156b0565b602082019050919050565b60006020820190508181036000830152615715816156d9565b9050919050565b7f74726164696e6720616c7265616479206f70656e000000000000000000000000600082015250565b600061575260148361450a565b915061575d8261571c565b602082019050919050565b6000602082019050818103600083015261578181615745565b9050919050565b600061579382614a67565b915061579e83614a67565b92508261ffff038211156157b5576157b4614f06565b5b828201905092915050565b7f4d696e4d6178206572726f720000000000000000000000000000000000000000600082015250565b60006157f6600c8361450a565b9150615801826157c0565b602082019050919050565b60006020820190508181036000830152615825816157e9565b9050919050565b7f5570706572207468726573686f6c6420746f6f206c6f77000000000000000000600082015250565b600061586260178361450a565b915061586d8261582c565b602082019050919050565b6000602082019050818103600083015261589181615855565b9050919050565b7f5570706572207468726573686f6c6420746f6f20686967680000000000000000600082015250565b60006158ce60188361450a565b91506158d982615898565b602082019050919050565b600060208201905081810360008301526158fd816158c1565b9050919050565b600061590f826146ce565b915061591a836146ce565b92508160ff048311821515161561593457615933614f06565b5b828202905092915050565b6000819050919050565b600061596461595f61595a846145c4565b61593f565b6145c4565b9050919050565b600061597682615949565b9050919050565b60006159888261596b565b9050919050565b6159988161597d565b82525050565b60006020820190506159b3600083018461598f565b92915050565b7f616c72656164792068756d616e697a6564000000000000000000000000000000600082015250565b60006159ef60118361450a565b91506159fa826159b9565b602082019050919050565b60006020820190508181036000830152615a1e816159e2565b9050919050565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b6000615a5b601d8361450a565b9150615a6682615a25565b602082019050919050565b60006020820190508181036000830152615a8a81615a4e565b9050919050565b6000615a9c826145c4565b9150615aa7836145c4565b925082615ab757615ab66154a0565b5b828206905092915050565b7f476173206f766572206c696d6974000000000000000000000000000000000000600082015250565b6000615af8600e8361450a565b9150615b0382615ac2565b602082019050919050565b60006020820190508181036000830152615b2781615aeb565b9050919050565b7f626c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b6000615b64600b8361450a565b9150615b6f82615b2e565b602082019050919050565b60006020820190508181036000830152615b9381615b57565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b6000615bd060118361450a565b9150615bdb82615b9a565b602082019050919050565b60006020820190508181036000830152615bff81615bc3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b6000615c5a615c55615c5084615c35565b61593f565b614622565b9050919050565b615c6a81615c3f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615ca5816145e4565b82525050565b6000615cb78383615c9c565b60208301905092915050565b6000602082019050919050565b6000615cdb82615c70565b615ce58185615c7b565b9350615cf083615c8c565b8060005b83811015615d21578151615d088882615cab565b9750615d1383615cc3565b925050600181019050615cf4565b5085935050505092915050565b600060a082019050615d4360008301886147f3565b615d506020830187615c61565b8181036040830152615d628186615cd0565b9050615d716060830185614a3d565b615d7e60808301846147f3565b9695505050505050565b6000615d9382614a67565b915061ffff821415615da857615da7614f06565b5b600182019050919050565b600060c082019050615dc86000830189614a3d565b615dd560208301886147f3565b615de26040830187615c61565b615def6060830186615c61565b615dfc6080830185614a3d565b615e0960a08301846147f3565b979650505050505050565b600081519050615e238161462c565b92915050565b600080600060608486031215615e4257615e416145ba565b5b6000615e5086828701615e14565b9350506020615e6186828701615e14565b9250506040615e7286828701615e14565b915050925092509256fea2646970667358221220b843fc823dcc63f382663e436cde88675fb3a3b4a0fea7883c3cdd7ef799be8164736f6c634300080b0033000000000000000000000000000000000000000000000000000000001f9132340000000000000000000000000000000000000000000000000000000012750efa

Deployed Bytecode

0x6080604052600436106102135760003560e01c80638c0b5e2211610118578063c9567bf9116100a0578063e4dbc45b1161006f578063e4dbc45b14610796578063ed7b6bb5146107bf578063f2fde38b146107d6578063fe575a87146107ff578063ffb54a991461083c5761021a565b8063c9567bf9146106ee578063cc18e05a14610705578063dc55f5c714610730578063dd62ed3e146107595761021a565b8063a9059cbb116100e7578063a9059cbb1461060b578063aa4bde2814610648578063b142180314610673578063b6c767071461069c578063c2c31a9b146106c55761021a565b80638c0b5e22146105615780639346afac1461058c57806395d89b41146105b7578063a13d1a2b146105e25761021a565b806323b872dd1161019b578063672434821161016a578063672434821461047c578063677ef846146104a557806370a08231146104ce57806380781cf91461050b578063893d20e8146105365761021a565b806323b872dd1461039a578063313ce567146103d757806340d3f6da146104025780635ea5208e1461043f5761021a565b8063174351e6116101e2578063174351e6146102d957806318160ddd146103165780631b533a9e146103415780631c939ee91461036c5780631cbbe3e4146103835761021a565b806306fdde031461021f578063095ea7b31461024a57806309ef509f1461028757806315b6c176146102b05761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b50610234610867565b6040516102419190614598565b60405180910390f35b34801561025657600080fd5b50610271600480360381019061026c9190614658565b6108f9565b60405161027e91906146b3565b60405180910390f35b34801561029357600080fd5b506102ae60048036038101906102a99190614707565b6109ff565b005b3480156102bc57600080fd5b506102d760048036038101906102d29190614786565b610b53565b005b3480156102e557600080fd5b5061030060048036038101906102fb91906147c6565b610cc9565b60405161030d91906146b3565b60405180910390f35b34801561032257600080fd5b5061032b610ce9565b6040516103389190614802565b60405180910390f35b34801561034d57600080fd5b50610356610d0f565b604051610363919061482c565b60405180910390f35b34801561037857600080fd5b50610381610d22565b005b34801561038f57600080fd5b50610398610dbb565b005b3480156103a657600080fd5b506103c160048036038101906103bc9190614847565b610e6e565b6040516103ce91906146b3565b60405180910390f35b3480156103e357600080fd5b506103ec611078565b6040516103f9919061482c565b60405180910390f35b34801561040e57600080fd5b50610429600480360381019061042491906147c6565b611081565b6040516104369190614802565b60405180910390f35b34801561044b57600080fd5b50610466600480360381019061046191906147c6565b611099565b60405161047391906146b3565b60405180910390f35b34801561048857600080fd5b506104a3600480360381019061049e9190614955565b6110b9565b005b3480156104b157600080fd5b506104cc60048036038101906104c791906149d6565b611511565b005b3480156104da57600080fd5b506104f560048036038101906104f091906147c6565b611861565b6040516105029190614802565b60405180910390f35b34801561051757600080fd5b506105206118aa565b60405161052d919061482c565b60405180910390f35b34801561054257600080fd5b5061054b6118bd565b6040516105589190614a4c565b60405180910390f35b34801561056d57600080fd5b506105766118e6565b6040516105839190614802565b60405180910390f35b34801561059857600080fd5b506105a16118ec565b6040516105ae9190614a84565b60405180910390f35b3480156105c357600080fd5b506105cc611900565b6040516105d99190614598565b60405180910390f35b3480156105ee57600080fd5b5061060960048036038101906106049190614786565b611992565b005b34801561061757600080fd5b50610632600480360381019061062d9190614658565b611b41565b60405161063f91906146b3565b60405180910390f35b34801561065457600080fd5b5061065d611b9e565b60405161066a9190614802565b60405180910390f35b34801561067f57600080fd5b5061069a60048036038101906106959190614acb565b611ba4565b005b3480156106a857600080fd5b506106c360048036038101906106be91906147c6565b611d7e565b005b3480156106d157600080fd5b506106ec60048036038101906106e79190614b0b565b611fb5565b005b3480156106fa57600080fd5b5061070361235c565b005b34801561071157600080fd5b5061071a612444565b604051610727919061482c565b60405180910390f35b34801561073c57600080fd5b5061075760048036038101906107529190614b72565b612457565b005b34801561076557600080fd5b50610780600480360381019061077b9190614bed565b612616565b60405161078d9190614802565b60405180910390f35b3480156107a257600080fd5b506107bd60048036038101906107b89190614c69565b61269d565b005b3480156107cb57600080fd5b506107d46128e4565b005b3480156107e257600080fd5b506107fd60048036038101906107f89190614d0e565b6129b8565b005b34801561080b57600080fd5b50610826600480360381019061082191906147c6565b612ac0565b60405161083391906146b3565b60405180910390f35b34801561084857600080fd5b50610851612b1b565b60405161085e91906146b3565b60405180910390f35b60606001805461087690614d6a565b80601f01602080910402602001604051908101604052809291908181526020018280546108a290614d6a565b80156108ef5780601f106108c4576101008083540402835291602001916108ef565b820191906000526020600020905b8154815290600101906020018083116108d257829003601f168201915b5050505050905090565b60008061090533611861565b1161090f57600080fd5b81600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109ed9190614802565b60405180910390a36001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8490614e0e565b60405180910390fd5b600b60ff168360ff1611158015610aab5750600b60ff168260ff1611155b8015610abe5750600b60ff168160ff1611155b610afd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af490614e7a565b60405180910390fd5b82601060006101000a81548160ff021916908360ff16021790555081601060016101000a81548160ff021916908360ff16021790555080601060026101000a81548160ff021916908360ff160217905550505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610be1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd890614e0e565b60405180910390fd5b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610c6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6590614ee6565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60066020528060005260406000206000915054906101000a900460ff1681565b60006009600a610cf99190615068565b6509184e72a000610d0a91906150b3565b905090565b601060029054906101000a900460ff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610db0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da790614e0e565b60405180910390fd5b610db947612b2e565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4090614e0e565b60405180910390fd5b600860009054906101000a900460ff16610e6257600080fd5b610e6c6000612e6c565b565b6000610e7984612ed5565b610eb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaf90615159565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146110645781600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fe39190615179565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61106f84848461300e565b90509392505050565b60006009905090565b60126020528060005260406000206000915090505481565b60076020528060005260406000206000915054906101000a900460ff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611147576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113e90614e0e565b60405180910390fd5b60c884849050111561118e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611185906151f9565b60405180910390fd5b8181905084849050146111d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cd9061528b565b60405180910390fd5b6000805b85859050811015611237576009600a6111f39190615068565b848483818110611206576112056152ab565b5b9050602002013561121791906150b3565b8261122291906152da565b9150808061122f90615330565b9150506111da565b5080600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156112ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b1906153eb565b60405180910390fd5b60005b858590508110156114cd576009600a6112d69190615068565b8484838181106112e9576112e86152ab565b5b905060200201356112fa91906150b3565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113489190615179565b925050819055506009600a61135d9190615068565b8484838181106113705761136f6152ab565b5b9050602002013561138191906150b3565b60046000888885818110611398576113976152ab565b5b90506020020160208101906113ad91906147c6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113f691906152da565b925050819055508585828181106114105761140f6152ab565b5b905060200201602081019061142591906147c6565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6114819190615068565b878786818110611494576114936152ab565b5b905060200201356114a591906150b3565b6040516114b29190614802565b60405180910390a380806114c590615330565b9150506112bd565b507f71cc7095cc35ed4701c217a8efb440732eb0737da67f6548c008ac26fba95464858590508260405161150292919061540b565b60405180910390a15050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461159f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159690614e0e565b60405180910390fd5b83601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050505050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601060009054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60095481565b6010600f9054906101000a900461ffff1681565b60606002805461190f90614d6a565b80601f016020809104026020016040519081016040528092919081815260200182805461193b90614d6a565b80156119885780601f1061195d57610100808354040283529160200191611988565b820191906000526020600020905b81548152906001019060200180831161196b57829003601f168201915b5050505050905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1790614e0e565b60405180910390fd5b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611aa75750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611add90615480565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611b4c33612ed5565b611b8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8290615159565b60405180910390fd5b611b9633848461300e565b905092915050565b600a5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2990614e0e565b60405180910390fd5b60006009600a611c429190615068565b6103e88461ffff166009600a611c589190615068565b6509184e72a000611c6991906150b3565b611c7391906150b3565b611c7d91906154cf565b611c8791906152da565b9050600954811015611cce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc59061554c565b60405180910390fd5b8060098190555060006009600a611ce59190615068565b6103e88461ffff166009600a611cfb9190615068565b6509184e72a000611d0c91906150b3565b611d1691906150b3565b611d2091906154cf565b611d2a91906152da565b9050600a54811015611d71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d68906155b8565b60405180910390fd5b80600a8190555050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0390614e0e565b60405180910390fd5b6000611e1730611861565b905060008111611e5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5390615624565b60405180910390fd5b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611edf90615690565b60405180910390fd5b611fb1600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361384e565b5050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612043576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203a90614e0e565b60405180910390fd5b600860009054906101000a900460ff16156120aa57611c2060115461206891906152da565b43106120a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a0906156fc565b60405180910390fd5b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561211257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561214a57503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61215357600080fd5b80600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555082600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146123ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e190614e0e565b60405180910390fd5b600860009054906101000a900460ff161561243a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243190615768565b60405180910390fd5b6124426139c4565b565b601060019054906101000a900460ff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146124e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124dc90614e0e565b60405180910390fd5b84601060036101000a81548161ffff021916908361ffff16021790555083601060056101000a81548161ffff021916908361ffff16021790555082601060076101000a81548161ffff021916908361ffff16021790555081601060096101000a81548161ffff021916908361ffff160217905550806010600b6101000a81548161ffff021916908361ffff1602179055506010600b9054906101000a900461ffff16601060099054906101000a900461ffff16601060079054906101000a900461ffff16601060059054906101000a900461ffff16601060039054906101000a900461ffff166125d59190615788565b6125df9190615788565b6125e99190615788565b6125f39190615788565b6010600d6101000a81548161ffff021916908361ffff1602179055505050505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461272b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272290614e0e565b60405180910390fd5b8263ffffffff168463ffffffff166009600a6127479190615068565b6509184e72a00061275891906150b3565b61276291906150b3565b61276c91906154cf565b600b819055508063ffffffff168263ffffffff166009600a61278e9190615068565b6509184e72a00061279f91906150b3565b6127a991906150b3565b6127b391906154cf565b600c81905550600b54600c541015612800576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f79061580c565b60405180910390fd5b620186a06009600a6128129190615068565b6509184e72a00061282391906150b3565b61282d91906154cf565b600c5411612870576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286790615878565b60405180910390fd5b60646009600a6128809190615068565b6509184e72a00061289191906150b3565b61289b91906154cf565b600c54106128de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d5906158e4565b60405180910390fd5b50505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612972576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296990614e0e565b60405180910390fd5b6000601060006101000a81548160ff021916908360ff160217905550600b600261299c9190615904565b601060016101000a81548160ff021916908360ff160217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612a46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3d90614e0e565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051612ab5919061599e565b60405180910390a150565b600080601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612b115760019050612b16565b600090505b919050565b600860009054906101000a900460ff1681565b60006010600b9054906101000a900461ffff16601060099054906101000a900461ffff16601060079054906101000a900461ffff16601060059054906101000a900461ffff16612b7e9190615788565b612b889190615788565b612b929190615788565b90506000601060059054906101000a900461ffff1661ffff161115612c4957601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8261ffff16601060059054906101000a900461ffff1661ffff1685612c1291906150b3565b612c1c91906154cf565b9081150290604051600060405180830381858888f19350505050158015612c47573d6000803e3d6000fd5b505b6000601060079054906101000a900461ffff1661ffff161115612cfe57601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8261ffff16601060079054906101000a900461ffff1661ffff1685612cc791906150b3565b612cd191906154cf565b9081150290604051600060405180830381858888f19350505050158015612cfc573d6000803e3d6000fd5b505b6000601060099054906101000a900461ffff1661ffff161115612db357601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8261ffff16601060099054906101000a900461ffff1661ffff1685612d7c91906150b3565b612d8691906154cf565b9081150290604051600060405180830381858888f19350505050158015612db1573d6000803e3d6000fd5b505b60006010600b9054906101000a900461ffff1661ffff161115612e6857601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8261ffff166010600b9054906101000a900461ffff1661ffff1685612e3191906150b3565b612e3b91906154cf565b9081150290604051600060405180830381858888f19350505050158015612e66573d6000803e3d6000fd5b505b5050565b436011541180612e7e57506000601154145b612ebd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb490615a05565b60405180910390fd5b8060ff1643612ecc91906152da565b60118190555050565b60008060009050600860009054906101000a900460ff1615612efa5760019050613005565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff161415612f575760019050613004565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612ff95750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561300357600190505b5b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561307f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161307690615a71565b60405180910390fd5b600860009054906101000a900460ff1661317957600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131355750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613174576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161316b90615159565b60405180910390fd5b61339f565b43601154111561329257600360049054906101000a900463ffffffff1663ffffffff16600360009054906101000a900463ffffffff1663ffffffff16846131c09190615a91565b73ffffffffffffffffffffffffffffffffffffffff1614156131eb576131e66003612e6c565b61328d565b6000601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156132425761323d8343613b00565b61328c565b61328b83601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b00565b5b5b61339e565b6000601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146133235761332283601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b00565b5b600a60115461333291906152da565b4310801561333f5750483a115b1561339d576000483a6133529190615179565b9050640a7a358200811061339b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161339290615b0e565b60405180910390fd5b505b5b5b600860009054906101000a900460ff1680156133fb57506000601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b8015613445575043601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b15613485576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161347c90615b7a565b60405180910390fd5b601660149054906101000a900460ff161580156134eb5750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156134fa576134f983613c22565b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561356257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156135ba575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15613609576135c98383613f43565b613608576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135ff90615be6565b60405180910390fd5b5b6000613616858585614083565b9050600081846136269190615179565b905083600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136739190615179565b600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600082111561374e5781600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461370a91906152da565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461379991906152da565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516138399190614802565b60405180910390a36001925050509392505050565b613858838261428d565b6000600267ffffffffffffffff81111561387557613874615c06565b5b6040519080825280602002602001820160405280156138a35781602001602082028036833780820191505090505b50905030816000815181106138bb576138ba6152ab565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050828160018151811061390a576139096152ab565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060008490508073ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b815260040161398b959493929190615d2e565b600060405180830381600087803b1580156139a557600080fd5b505af11580156139b9573d6000803e3d6000fd5b505050505050505050565b6014436139d191906152da565b6011819055506009600a6139e59190615068565b6103e86009600a6139f69190615068565b6509184e72a000613a0791906150b3565b6002613a1391906150b3565b613a1d91906154cf565b613a2791906152da565b6009819055506009600a613a3b9190615068565b6103e86009600a613a4c9190615068565b6509184e72a000613a5d91906150b3565b6003613a6991906150b3565b613a7391906154cf565b613a7d91906152da565b600a81905550600b601060006101000a81548160ff021916908360ff1602179055506002600b613aad9190615904565b601060016101000a81548160ff021916908360ff160217905550600b601060026101000a81548160ff021916908360ff1602179055506001600860006101000a81548160ff021916908315150217905550565b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613b9957506000601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b15613c1e5780601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506010600f81819054906101000a900461ffff1680929190613c0290615d88565b91906101000a81548161ffff021916908361ffff160217905550505b5050565b6001601660146101000a81548160ff0219169083151502179055506000613c4830611861565b9050600b548110158015613c685750600860009054906101000a900460ff165b15613f2457600c548110613c7c57600c5490505b600060026010600d9054906101000a900461ffff1661ffff16601060039054906101000a900461ffff1661ffff1684613cb591906150b3565b613cbf91906154cf565b613cc991906154cf565b905060008183613cd99190615179565b90506009600a613ce99190615068565b811115613f08576000479050613dbe600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461384e565b60008147613dcc9190615179565b90506000601060039054906101000a900461ffff1661ffff161115613f055760006010600d9054906101000a900461ffff1661ffff16601060039054906101000a900461ffff1661ffff1683613e2291906150b3565b613e2c91906154cf565b9050613e97600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168661428d565b613f03600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168683600061443c565b505b50505b60004790506000811115613f2057613f1f81612b2e565b5b5050505b506000601660146101000a81548160ff02191690831515021790555050565b60008060019050600860009054906101000a900460ff168015613fb05750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561407957600954831115613fc85760009050614078565b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561406d5750600a5483600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461406b91906152da565b115b1561407757600090505b5b5b8091505092915050565b600080600860009054906101000a900460ff1615806140eb5750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061413f5750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561414d5760009050614282565b600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156141d0576064601060009054906101000a900460ff1660ff16846141bf91906150b3565b6141c991906154cf565b9050614281565b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614253576064601060019054906101000a900460ff1660ff168461424291906150b3565b61424c91906154cf565b9050614280565b6064601060029054906101000a900460ff1660ff168461427391906150b3565b61427d91906154cf565b90505b5b5b809150509392505050565b80600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015614438577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60405161442f9190614802565b60405180910390a35b5050565b6000816144675760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b60008590508073ffffffffffffffffffffffffffffffffffffffff1663f305d71985308860008088426040518863ffffffff1660e01b81526004016144b196959493929190615db3565b60606040518083038185885af11580156144cf573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906144f49190615e29565b505050505050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561453957808201518184015260208101905061451e565b83811115614548576000848401525b50505050565b6000601f19601f8301169050919050565b600061456a826144ff565b614574818561450a565b935061458481856020860161451b565b61458d8161454e565b840191505092915050565b600060208201905081810360008301526145b2818461455f565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006145ef826145c4565b9050919050565b6145ff816145e4565b811461460a57600080fd5b50565b60008135905061461c816145f6565b92915050565b6000819050919050565b61463581614622565b811461464057600080fd5b50565b6000813590506146528161462c565b92915050565b6000806040838503121561466f5761466e6145ba565b5b600061467d8582860161460d565b925050602061468e85828601614643565b9150509250929050565b60008115159050919050565b6146ad81614698565b82525050565b60006020820190506146c860008301846146a4565b92915050565b600060ff82169050919050565b6146e4816146ce565b81146146ef57600080fd5b50565b600081359050614701816146db565b92915050565b6000806000606084860312156147205761471f6145ba565b5b600061472e868287016146f2565b935050602061473f868287016146f2565b9250506040614750868287016146f2565b9150509250925092565b61476381614698565b811461476e57600080fd5b50565b6000813590506147808161475a565b92915050565b6000806040838503121561479d5761479c6145ba565b5b60006147ab8582860161460d565b92505060206147bc85828601614771565b9150509250929050565b6000602082840312156147dc576147db6145ba565b5b60006147ea8482850161460d565b91505092915050565b6147fc81614622565b82525050565b600060208201905061481760008301846147f3565b92915050565b614826816146ce565b82525050565b6000602082019050614841600083018461481d565b92915050565b6000806000606084860312156148605761485f6145ba565b5b600061486e8682870161460d565b935050602061487f8682870161460d565b925050604061489086828701614643565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f8401126148bf576148be61489a565b5b8235905067ffffffffffffffff8111156148dc576148db61489f565b5b6020830191508360208202830111156148f8576148f76148a4565b5b9250929050565b60008083601f8401126149155761491461489a565b5b8235905067ffffffffffffffff8111156149325761493161489f565b5b60208301915083602082028301111561494e5761494d6148a4565b5b9250929050565b6000806000806040858703121561496f5761496e6145ba565b5b600085013567ffffffffffffffff81111561498d5761498c6145bf565b5b614999878288016148a9565b9450945050602085013567ffffffffffffffff8111156149bc576149bb6145bf565b5b6149c8878288016148ff565b925092505092959194509250565b600080600080608085870312156149f0576149ef6145ba565b5b60006149fe8782880161460d565b9450506020614a0f8782880161460d565b9350506040614a208782880161460d565b9250506060614a318782880161460d565b91505092959194509250565b614a46816145e4565b82525050565b6000602082019050614a616000830184614a3d565b92915050565b600061ffff82169050919050565b614a7e81614a67565b82525050565b6000602082019050614a996000830184614a75565b92915050565b614aa881614a67565b8114614ab357600080fd5b50565b600081359050614ac581614a9f565b92915050565b60008060408385031215614ae257614ae16145ba565b5b6000614af085828601614ab6565b9250506020614b0185828601614ab6565b9150509250929050565b60008060008060808587031215614b2557614b246145ba565b5b6000614b338782880161460d565b9450506020614b448782880161460d565b9350506040614b558782880161460d565b9250506060614b6687828801614771565b91505092959194509250565b600080600080600060a08688031215614b8e57614b8d6145ba565b5b6000614b9c88828901614ab6565b9550506020614bad88828901614ab6565b9450506040614bbe88828901614ab6565b9350506060614bcf88828901614ab6565b9250506080614be088828901614ab6565b9150509295509295909350565b60008060408385031215614c0457614c036145ba565b5b6000614c128582860161460d565b9250506020614c238582860161460d565b9150509250929050565b600063ffffffff82169050919050565b614c4681614c2d565b8114614c5157600080fd5b50565b600081359050614c6381614c3d565b92915050565b60008060008060808587031215614c8357614c826145ba565b5b6000614c9187828801614c54565b9450506020614ca287828801614c54565b9350506040614cb387828801614c54565b9250506060614cc487828801614c54565b91505092959194509250565b6000614cdb826145c4565b9050919050565b614ceb81614cd0565b8114614cf657600080fd5b50565b600081359050614d0881614ce2565b92915050565b600060208284031215614d2457614d236145ba565b5b6000614d3284828501614cf9565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614d8257607f821691505b60208210811415614d9657614d95614d3b565b5b50919050565b7f4f6e6c7920636f6e7472616374206f776e65722063616e2063616c6c2074686960008201527f732066756e6374696f6e00000000000000000000000000000000000000000000602082015250565b6000614df8602a8361450a565b9150614e0382614d9c565b604082019050919050565b60006020820190508181036000830152614e2781614deb565b9050919050565b7f54617820746f6f20686967680000000000000000000000000000000000000000600082015250565b6000614e64600c8361450a565b9150614e6f82614e2e565b602082019050919050565b60006020820190508181036000830152614e9381614e57565b9050919050565b7f43616e6e6f74207365742074617820666f72204c500000000000000000000000600082015250565b6000614ed060158361450a565b9150614edb82614e9a565b602082019050919050565b60006020820190508181036000830152614eff81614ec3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115614f8c57808604811115614f6857614f67614f06565b5b6001851615614f775780820291505b8081029050614f8585614f35565b9450614f4c565b94509492505050565b600082614fa55760019050615061565b81614fb35760009050615061565b8160018114614fc95760028114614fd357615002565b6001915050615061565b60ff841115614fe557614fe4614f06565b5b8360020a915084821115614ffc57614ffb614f06565b5b50615061565b5060208310610133831016604e8410600b84101617156150375782820a90508381111561503257615031614f06565b5b615061565b6150448484846001614f42565b9250905081840481111561505b5761505a614f06565b5b81810290505b9392505050565b600061507382614622565b915061507e836146ce565b92506150ab7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614f95565b905092915050565b60006150be82614622565b91506150c983614622565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561510257615101614f06565b5b828202905092915050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b600061514360108361450a565b915061514e8261510d565b602082019050919050565b6000602082019050818103600083015261517281615136565b9050919050565b600061518482614622565b915061518f83614622565b9250828210156151a2576151a1614f06565b5b828203905092915050565b7f57616c6c657420636f756e74206f766572203230302028676173207269736b29600082015250565b60006151e360208361450a565b91506151ee826151ad565b602082019050919050565b60006020820190508181036000830152615212816151d6565b9050919050565b7f4164647265737320616e6420746f6b656e20616d6f756e74206c697374206d6960008201527f736d616368000000000000000000000000000000000000000000000000000000602082015250565b600061527560258361450a565b915061528082615219565b604082019050919050565b600060208201905081810360008301526152a481615268565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006152e582614622565b91506152f083614622565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561532557615324614f06565b5b828201905092915050565b600061533b82614622565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561536e5761536d614f06565b5b600182019050919050565b7f546f6b656e2062616c616e6365206c6f776572207468616e2061697264726f7060008201527f20746f74616c0000000000000000000000000000000000000000000000000000602082015250565b60006153d560268361450a565b91506153e082615379565b604082019050919050565b60006020820190508181036000830152615404816153c8565b9050919050565b600060408201905061542060008301856147f3565b61542d60208301846147f3565b9392505050565b7f41646472657373206e6f7420616c6c6f77656400000000000000000000000000600082015250565b600061546a60138361450a565b915061547582615434565b602082019050919050565b600060208201905081810360008301526154998161545d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006154da82614622565b91506154e583614622565b9250826154f5576154f46154a0565b5b828204905092915050565b7f7478206c696d697420746f6f206c6f7700000000000000000000000000000000600082015250565b600061553660108361450a565b915061554182615500565b602082019050919050565b6000602082019050818103600083015261556581615529565b9050919050565b7f77616c6c6574206c696d697420746f6f206c6f77000000000000000000000000600082015250565b60006155a260148361450a565b91506155ad8261556c565b602082019050919050565b600060208201905081810360008301526155d181615595565b9050919050565b7f4e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b600061560e60098361450a565b9150615619826155d8565b602082019050919050565b6000602082019050818103600083015261563d81615601565b9050919050565b7f496e76616c6964206c697175696469747920706f6f6c00000000000000000000600082015250565b600061567a60168361450a565b915061568582615644565b602082019050919050565b600060208201905081810360008301526156a98161566d565b9050919050565b7f73657474696e67732066696e616c697a65640000000000000000000000000000600082015250565b60006156e660128361450a565b91506156f1826156b0565b602082019050919050565b60006020820190508181036000830152615715816156d9565b9050919050565b7f74726164696e6720616c7265616479206f70656e000000000000000000000000600082015250565b600061575260148361450a565b915061575d8261571c565b602082019050919050565b6000602082019050818103600083015261578181615745565b9050919050565b600061579382614a67565b915061579e83614a67565b92508261ffff038211156157b5576157b4614f06565b5b828201905092915050565b7f4d696e4d6178206572726f720000000000000000000000000000000000000000600082015250565b60006157f6600c8361450a565b9150615801826157c0565b602082019050919050565b60006020820190508181036000830152615825816157e9565b9050919050565b7f5570706572207468726573686f6c6420746f6f206c6f77000000000000000000600082015250565b600061586260178361450a565b915061586d8261582c565b602082019050919050565b6000602082019050818103600083015261589181615855565b9050919050565b7f5570706572207468726573686f6c6420746f6f20686967680000000000000000600082015250565b60006158ce60188361450a565b91506158d982615898565b602082019050919050565b600060208201905081810360008301526158fd816158c1565b9050919050565b600061590f826146ce565b915061591a836146ce565b92508160ff048311821515161561593457615933614f06565b5b828202905092915050565b6000819050919050565b600061596461595f61595a846145c4565b61593f565b6145c4565b9050919050565b600061597682615949565b9050919050565b60006159888261596b565b9050919050565b6159988161597d565b82525050565b60006020820190506159b3600083018461598f565b92915050565b7f616c72656164792068756d616e697a6564000000000000000000000000000000600082015250565b60006159ef60118361450a565b91506159fa826159b9565b602082019050919050565b60006020820190508181036000830152615a1e816159e2565b9050919050565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b6000615a5b601d8361450a565b9150615a6682615a25565b602082019050919050565b60006020820190508181036000830152615a8a81615a4e565b9050919050565b6000615a9c826145c4565b9150615aa7836145c4565b925082615ab757615ab66154a0565b5b828206905092915050565b7f476173206f766572206c696d6974000000000000000000000000000000000000600082015250565b6000615af8600e8361450a565b9150615b0382615ac2565b602082019050919050565b60006020820190508181036000830152615b2781615aeb565b9050919050565b7f626c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b6000615b64600b8361450a565b9150615b6f82615b2e565b602082019050919050565b60006020820190508181036000830152615b9381615b57565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b6000615bd060118361450a565b9150615bdb82615b9a565b602082019050919050565b60006020820190508181036000830152615bff81615bc3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b6000615c5a615c55615c5084615c35565b61593f565b614622565b9050919050565b615c6a81615c3f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615ca5816145e4565b82525050565b6000615cb78383615c9c565b60208301905092915050565b6000602082019050919050565b6000615cdb82615c70565b615ce58185615c7b565b9350615cf083615c8c565b8060005b83811015615d21578151615d088882615cab565b9750615d1383615cc3565b925050600181019050615cf4565b5085935050505092915050565b600060a082019050615d4360008301886147f3565b615d506020830187615c61565b8181036040830152615d628186615cd0565b9050615d716060830185614a3d565b615d7e60808301846147f3565b9695505050505050565b6000615d9382614a67565b915061ffff821415615da857615da7614f06565b5b600182019050919050565b600060c082019050615dc86000830189614a3d565b615dd560208301886147f3565b615de26040830187615c61565b615def6060830186615c61565b615dfc6080830185614a3d565b615e0960a08301846147f3565b979650505050505050565b600081519050615e238161462c565b92915050565b600080600060608486031215615e4257615e416145ba565b5b6000615e5086828701615e14565b9350506020615e6186828701615e14565b9250506040615e7286828701615e14565b915050925092509256fea2646970667358221220b843fc823dcc63f382663e436cde88675fb3a3b4a0fea7883c3cdd7ef799be8164736f6c634300080b0033

Deployed Bytecode Sourcemap

1790:15984:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4675:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5085:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11583:287;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11210:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2121:39;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4414:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2613:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16761:93;;;;;;;;;;;;;:::i;:::-;;7777:85;;;;;;;;;;;;;:::i;:::-;;5539:362;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4505:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3106:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2164:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16859:912;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12479:545;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4839:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2562:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4758:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2236:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2987:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4588:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11383:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5324:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2264:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13029:450;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16408:348;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5908:680;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7301:116;;;;;;;;;;;;;:::i;:::-;;2587:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11987:486;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4947:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13484:426;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11875:105;;;;;;;;;;;;;:::i;:::-;;1202:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11052:153;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2209:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4675:80;4723:13;4747:5;4740:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4675:80;:::o;5085:234::-;5160:4;5203:1;5179:21;5189:10;5179:9;:21::i;:::-;:25;5171:34;;;;;;5245:6;5210:11;:23;5222:10;5210:23;;;;;;;;;;;;;;;:32;5234:7;5210:32;;;;;;;;;;;;;;;:41;;;;5282:7;5261:37;;5270:10;5261:37;;;5291:6;5261:37;;;;;;:::i;:::-;;;;;;;;5310:4;5303:11;;5085:234;;;;:::o;11583:287::-;1141:5;;;;;;;;;;1127:19;;:10;:19;;;1119:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;2555:2:::1;11687:24;;:9;:24;;;;:53;;;;;2555:2;11715:25;;:10;:25;;;;11687:53;:80;;;;;2555:2;11744:23;;:8;:23;;;;11687:80;11679:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;11802:9;11789:10;;:22;;;;;;;;;;;;;;;;;;11830:10;11816:11;;:24;;;;;;;;;;;;;;;;;;11857:8;11845:9;;:20;;;;;;;;;;;;;;;;;;11583:287:::0;;;:::o;11210:168::-;1141:5;;;;;;;;;;1127:19;;:10;:19;;;1119:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;11298:10:::1;:18;11309:6;11298:18;;;;;;;;;;;;;;;;;;;;;;;;;11297:19;11289:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;11367:6;11348;:16;11356:6;11348:16;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;11210:168:::0;;:::o;2121:39::-;;;;;;;;;;;;;;;;;;;;;;:::o;4414:88::-;4469:7;1912:1;1966:2;:15;;;;:::i;:::-;1949:13;:33;;;;:::i;:::-;4480:19;;4414:88;:::o;2613:22::-;;;;;;;;;;;;;:::o;16761:93::-;1141:5;;;;;;;;;;1127:19;;:10;:19;;;1119:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;16808:40:::1;16826:21;16808:17;:40::i;:::-;16761:93::o:0;7777:85::-;1141:5;;;;;;;;;;1127:19;;:10;:19;;;1119:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;7828:11:::1;;;;;;;;;;;7820:20;;;::::0;::::1;;7845:12;7855:1;7845:9;:12::i;:::-;7777:85::o:0;5539:362::-;5639:4;5658:25;5676:6;5658:17;:25::i;:::-;5650:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;5747:17;5712:11;:19;5724:6;5712:19;;;;;;;;;;;;;;;:31;5732:10;5712:31;;;;;;;;;;;;;;;;:52;5709:136;;5836:6;5802:11;:19;5814:6;5802:19;;;;;;;;;;;;;;;:31;5822:10;5802:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;5768:11;:19;5780:6;5768:19;;;;;;;;;;;;;;;:31;5788:10;5768:31;;;;;;;;;;;;;;;:74;;;;5709:136;5856:40;5870:6;5878:9;5889:6;5856:13;:40::i;:::-;5849:47;;5539:362;;;;;:::o;4505:80::-;4557:5;1912:1;4566:16;;4505:80;:::o;3106:50::-;;;;;;;;;;;;;;;;;:::o;2164:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;16859:912::-;1141:5;;;;;;;;;;1127:19;;:10;:19;;;1119:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;16997:3:::1;16977:9;;:16;;:23;;16969:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17075:12;;:19;;17055:9;;:16;;:39;17047:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;17148:20;17187:6:::0;17183:116:::1;17201:9;;:16;;17197:1;:20;17183:116;;;1912:1;17273:2;:13;;;;:::i;:::-;17255:12;;17268:1;17255:15;;;;;;;:::i;:::-;;;;;;;;:31;;;;:::i;:::-;17238:49;;;;;:::i;:::-;;;17219:3;;;;;:::i;:::-;;;;17183:116;;;;17342:12;17317:9;:21;17327:10;17317:21;;;;;;;;;;;;;;;;:37;;17309:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;17414:6;17410:288;17428:9;;:16;;17424:1;:20;17410:288;;;1912:1;17509:2;:13;;;;:::i;:::-;17491:12;;17504:1;17491:15;;;;;;;:::i;:::-;;;;;;;;:31;;;;:::i;:::-;17465:9;:21;17475:10;17465:21;;;;;;;;;;;;;;;;:58;;;;;;;:::i;:::-;;;;;;;;1912:1;17584:2;:13;;;;:::i;:::-;17566:12;;17579:1;17566:15;;;;;;;:::i;:::-;;;;;;;;:31;;;;:::i;:::-;17538:9;:23;17548:9;;17558:1;17548:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17538:23;;;;;;;;;;;;;;;;:60;;;;;;;:::i;:::-;;;;;;;;17630:9;;17640:1;17630:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17609:70;;17618:10;17609:70;;;1912:1;17663:2;:13;;;;:::i;:::-;17645:12;;17658:1;17645:15;;;;;;;:::i;:::-;;;;;;;;:31;;;;:::i;:::-;17609:70;;;;;;:::i;:::-;;;;;;;;17446:3;;;;;:::i;:::-;;;;17410:288;;;;17715:48;17732:9;;:16;;17750:12;17715:48;;;;;;;:::i;:::-;;;;;;;;16958:813;16859:912:::0;;;;:::o;12479:545::-;1141:5;;;;;;;;;;1127:19;;:10;:19;;;1119:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;12661:16:::1;12636:14;;:42;;;;;;;;;;;;;;;;;;12710:18;12683:16;;:46;;;;;;;;;;;;;;;;;;12763:20;12734:18;;:50;;;;;;;;;;;;;;;;;;12814:16;12789:14;;:42;;;;;;;;;;;;;;;;;;12863:4;12836:6;:24;12843:16;12836:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;12901:4;12872:6;:26;12879:18;12872:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;12941:4;12910:6;:28;12917:20;12910:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;12977:4;12950:6;:24;12957:16;12950:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;13015:4;12986:8;:26;12995:16;12986:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;12479:545:::0;;;;:::o;4839:105::-;4905:7;4923:9;:18;4933:7;4923:18;;;;;;;;;;;;;;;;4916:25;;4839:105;;;:::o;2562:23::-;;;;;;;;;;;;;:::o;4758:78::-;4810:7;4828:5;;;;;;;;;;;4821:12;;4758:78;:::o;2236:26::-;;;;:::o;2987:33::-;;;;;;;;;;;;;:::o;4588:84::-;4638:13;4662:7;4655:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4588:84;:::o;11383:195::-;1141:5;;;;;;;;;;1127:19;;:10;:19;;;1119:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;11475:10:::1;:18;11486:6;11475:18;;;;;;;;;;;;;;;;;;;;;;;;;11474:19;:41;;;;;11513:1;11497:18;;:6;:18;;;;11474:41;11466:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;11566:7;11545:8;:18;11555:6;11545:18;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;11383:195:::0;;:::o;5324:210::-;5404:4;5423:29;5441:10;5423:17;:29::i;:::-;5415:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;5485:44;5499:10;5511:9;5522:6;5485:13;:44::i;:::-;5478:51;;5324:210;;;;:::o;2264:30::-;;;;:::o;13029:450::-;1141:5;;;;;;;;;;1127:19;;:10;:19;;;1119:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;13129:16:::1;1912:1;13188:2;:13;;;;:::i;:::-;13181:4;13163:15;13148:30;;1912:1;1966:2;:15;;;;:::i;:::-;1949:13;:33;;;;:::i;:::-;13148:30;;;;:::i;:::-;:37;;;;:::i;:::-;:53;;;;:::i;:::-;13129:72;;13226:11;;13214:8;:23;;13206:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;13277:8;13263:11;:22;;;;13290:20;1912:1;13357:2;:13;;;;:::i;:::-;13350:4;13328:19;13313:34;;1912:1;1966:2;:15;;;;:::i;:::-;1949:13;:33;;;;:::i;:::-;13313:34;;;;:::i;:::-;:41;;;;:::i;:::-;:57;;;;:::i;:::-;13290:80;;13399:15;;13383:12;:31;;13375:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13462:12;13444:15;:30;;;;13124:355;;13029:450:::0;;:::o;16408:348::-;1141:5;;;;;;;;;;1127:19;;:10;:19;;;1119:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;16479:23:::1;16505:24;16523:4;16505:9;:24::i;:::-;16479:50;;16560:1;16542:15;:19;16534:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;16588:10;:26;16599:14;16588:26;;;;;;;;;;;;;;;;;;;;;;;;;16580:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;16646:105;16667:16;:32;16684:14;16667:32;;;;;;;;;;;;;;;;;;;;;;;;;16701:16;:32;16718:14;16701:32;;;;;;;;;;;;;;;;;;;;;;;;;16735:15;16646:20;:105::i;:::-;16474:282;16408:348:::0;:::o;5908:680::-;1141:5;;;;;;;;;;1127:19;;:10;:19;;;1119:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;6044:11:::1;;;;;;;;;;;6040:86;;;6096:4;6082:11;;:18;;;;:::i;:::-;6067:12;:33;6059:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;6040:86;6294:4;6270:29;;:14;:29;;;;:60;;;;;6325:4;6303:27;;:12;:27;;;;6270:60;:91;;;;;6356:4;6334:27;;:12;:27;;;;6270:91;6262:100;;;::::0;::::1;;6398:7;6369:10;:26;6380:14;6369:26;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;6445:12;6410:16;:32;6427:14;6410:32;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;6497:12;6462:16;:32;6479:14;6462:32;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;6541:5;6514:8;:24;6523:14;6514:24;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;6576:5;6551:6;:22;6558:14;6551:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;5908:680:::0;;;;:::o;7301:116::-;1141:5;;;;;;;;;;1127:19;;:10;:19;;;1119:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;7357:11:::1;;;;;;;;;;;7356:12;7348:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;7398:14;:12;:14::i;:::-;7301:116::o:0;2587:24::-;;;;;;;;;;;;;:::o;11987:486::-;1141:5;;;;;;;;;;1127:19;;:10;:19;;;1119:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;12170:12:::1;12154:13;;:28;;;;;;;;;;;;;;;;;;12207:13;12187:17;;:33;;;;;;;;;;;;;;;;;;12247:15;12225:19;;:37;;;;;;;;;;;;;;;;;;12291:17;12267:21;;:41;;;;;;;;;;;;;;;;;;12333:13;12313:17;;:33;;;;;;;;;;;;;;;;;;12451:17;;;;;;;;;;;12427:21;;;;;;;;;;;12405:19;;;;;;;;;;;12385:17;;;;;;;;;;;12369:13;;;;;;;;;;;:33;;;;:::i;:::-;:55;;;;:::i;:::-;:79;;;;:::i;:::-;:99;;;;:::i;:::-;12351:15;;:117;;;;;;;;;;;;;;;;;;11987:486:::0;;;;;:::o;4947:133::-;5031:7;5049:11;:19;5061:6;5049:19;;;;;;;;;;;;;;;:28;5069:7;5049:28;;;;;;;;;;;;;;;;5042:35;;4947:133;;;;:::o;13484:426::-;1141:5;;;;;;;;;;1127:19;;:10;:19;;;1119:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;13645:10:::1;13619:36;;13634:8;13619:23;;1912:1;1966:2;:15;;;;:::i;:::-;1949:13;:33;;;;:::i;:::-;13619:23;;;;:::i;:::-;:36;;;;:::i;:::-;13606:10;:49;;;;13699:10;13673:36;;13688:8;13673:23;;1912:1;1966:2;:15;;;;:::i;:::-;1949:13;:33;;;;:::i;:::-;13673:23;;;;:::i;:::-;:36;;;;:::i;:::-;13660:10;:49;;;;13734:10;;13722;;:22;;13714:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;13800:6;1912:1;1966:2;:15;;;;:::i;:::-;1949:13;:33;;;;:::i;:::-;13785:21;;;;:::i;:::-;13774:10;;:32;13766:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13873:3;1912:1;1966:2;:15;;;;:::i;:::-;1949:13;:33;;;;:::i;:::-;13858:18;;;;:::i;:::-;13847:10;;:29;13839:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;13484:426:::0;;;;:::o;11875:105::-;1141:5;;;;;;;;;;1127:19;;:10;:19;;;1119:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;11940:1:::1;11927:10;;:14;;;;;;;;;;;;;;;;;;2555:2;11960:1;:15;;;;:::i;:::-;11946:11;;:29;;;;;;;;;;;;;;;;;;11875:105::o:0;1202:130::-;1141:5;;;;;;;;;;1127:19;;:10;:19;;;1119:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;1284:8:::1;1276:5;::::0;:16:::1;;;;;;;;;;;;;;;;;;1299:30;1320:8;1299:30;;;;;;:::i;:::-;;;;;;;;1202:130:::0;:::o;11052:153::-;11113:4;11155:1;11129:14;:22;11144:6;11129:22;;;;;;;;;;;;;;;;:27;11124:77;;11168:4;11161:11;;;;11124:77;11193:5;11186:12;;11052:153;;;;:::o;2209:23::-;;;;;;;;;;;;;:::o;15773:630::-;15830:24;15923:17;;;;;;;;;;;15899:21;;;;;;;;;;;15877:19;;;;;;;;;;;15857:17;;;;;;;;;;;:39;;;;:::i;:::-;:63;;;;:::i;:::-;:83;;;;:::i;:::-;15830:110;;15970:1;15950:17;;;;;;;;;;;:21;;;15945:106;;;15976:14;;;;;;;;;;;:23;;:72;16030:17;16000:47;;16010:17;;;;;;;;;;;16000:27;;:7;:27;;;;:::i;:::-;:47;;;;:::i;:::-;15976:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15945:106;16082:1;16060:19;;;;;;;;;;;:23;;;16055:112;;;16088:16;;;;;;;;;;;:25;;:76;16146:17;16114:49;;16124:19;;;;;;;;;;;16114:29;;:7;:29;;;;:::i;:::-;:49;;;;:::i;:::-;16088:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16055:112;16200:1;16176:21;;;;;;;;;;;:25;;;16171:118;;;16206:18;;;;;;;;;;;:27;;:80;16268:17;16234:51;;16244:21;;;;;;;;;;;16234:31;;:7;:31;;;;:::i;:::-;:51;;;;:::i;:::-;16206:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16171:118;16318:1;16298:17;;;;;;;;;;;:21;;;16293:106;;;16324:14;;;;;;;;;;;:23;;:72;16378:17;16348:47;;16358:17;;;;;;;;;;;16348:27;;:7;:27;;;;:::i;:::-;:47;;;;:::i;:::-;16324:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16293:106;15825:578;15773:630;:::o;7867:171::-;7938:12;7924:11;;:26;:46;;;;7969:1;7954:11;;:16;7924:46;7916:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;8025:8;8010:23;;:12;:23;;;;:::i;:::-;7996:11;:37;;;;7867:171;:::o;10291:308::-;10356:4;10366:16;10385:5;10366:24;;10400:11;;;;;;;;;;;10395:174;;;10430:4;10416:18;;10395:174;;;10465:5;;;;;;;;;;10452:18;;:9;:18;;;10447:122;;;10489:4;10475:18;;10447:122;;;10510:6;:14;10517:6;10510:14;;;;;;;;;;;;;;;;;;;;;;;;;:34;;;;;10528:8;:16;10537:6;10528:16;;;;;;;;;;;;;;;;;;;;;;;;;10510:34;10506:63;;;10562:4;10548:18;;10506:63;10447:122;10395:174;10583:11;10576:18;;;10291:308;;;:::o;8043:1598::-;8135:4;8172:1;8154:20;;:6;:20;;;;8146:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;8220:11;;;;;;;;;;;8215:671;;8243:6;:14;8250:6;8243:14;;;;;;;;;;;;;;;;;;;;;;;;;:34;;;;;8261:8;:16;8270:6;8261:16;;;;;;;;;;;;;;;;;;;;;;;;;8243:34;8235:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;8215:671;;;8329:12;8315:11;;:26;8310:576;;;8393:4;;;;;;;;;;;8355:42;;8385:4;;;;;;;;;;;8355:34;;8371:9;8355:34;;;;:::i;:::-;:42;;;8350:218;;;8402:12;8412:1;8402:9;:12::i;:::-;8350:218;;;8458:1;8432:14;:22;8447:6;8432:22;;;;;;;;;;;;;;;;:27;8427:141;;;8464:38;8478:9;8489:12;8464:13;:38::i;:::-;8427:141;;;8517:48;8531:9;8542:14;:22;8557:6;8542:22;;;;;;;;;;;;;;;;8517:13;:48::i;:::-;8427:141;8350:218;8310:576;;;8616:1;8590:14;:22;8605:6;8590:22;;;;;;;;;;;;;;;;:27;8585:88;;8622:48;8636:9;8647:14;:22;8662:6;8647:22;;;;;;;;;;;;;;;;8622:13;:48::i;:::-;8585:88;8712:2;8698:11;;:16;;;;:::i;:::-;8683:12;:31;:62;;;;;8732:13;8718:11;:27;8683:62;8678:203;;;8755:17;8789:13;8775:11;:27;;;;:::i;:::-;8755:47;;8830:10;8817:9;:23;8812:60;;8845:24;;;;;;;;;;:::i;:::-;;;;;;;;8812:60;8748:133;8678:203;8310:576;8215:671;8895:11;;;;;;;;;;;:42;;;;;8936:1;8910:14;:22;8925:6;8910:22;;;;;;;;;;;;;;;;:27;;8895:42;:83;;;;;8966:12;8941:14;:22;8956:6;8941:22;;;;;;;;;;;;;;;;:37;8895:83;8890:117;;;8983:21;;;;;;;;;;:::i;:::-;;;;;;;;8890:117;9019:10;;;;;;;;;;;9018:11;:36;;;;;9033:10;:21;9044:9;9033:21;;;;;;;;;;;;;;;;;;;;;;;;;9018:36;9013:85;;;9063:29;9082:9;9063:18;:29::i;:::-;9013:85;9125:4;9107:23;;:6;:23;;;;:53;;;;;9155:4;9134:26;;:9;:26;;;;9107:53;:72;;;;;9174:5;;;;;;;;;;9164:15;;:6;:15;;;;9107:72;9102:146;;;9192:31;9205:9;9216:6;9192:12;:31::i;:::-;9184:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;9102:146;9252:18;9273:40;9287:6;9295:9;9306:6;9273:13;:40::i;:::-;9252:61;;9318:23;9353:10;9344:6;:19;;;;:::i;:::-;9318:45;;9408:6;9388:9;:17;9398:6;9388:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;9368:9;:17;9378:6;9368:17;;;;;;;;;;;;;;;:46;;;;9437:1;9424:10;:14;9419:91;;;9497:10;9470:9;:24;9488:4;9470:24;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;9443:9;:24;9461:4;9443:24;;;;;;;;;;;;;;;:64;;;;9419:91;9560:15;9537:9;:20;9547:9;9537:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;9514:9;:20;9524:9;9514:20;;;;;;;;;;;;;;;:61;;;;9602:9;9585:35;;9594:6;9585:35;;;9613:6;9585:35;;;;;;:::i;:::-;;;;;;;;9632:4;9625:11;;;;8043:1598;;;;;:::o;15333:435::-;15439:43;15454:13;15469:12;15439:14;:43::i;:::-;15487:21;15525:1;15511:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15487:40;;15550:4;15532;15537:1;15532:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;15570:8;15560:4;15565:1;15560:7;;;;;;;;:::i;:::-;;;;;;;:18;;;;;;;;;;;15583:28;15633:13;15583:64;;15652:9;:60;;;15713:12;15726:1;15728:4;15741;15747:15;15652:111;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15434:334;;15333:435;;;:::o;7422:350::-;7489:2;7474:12;:17;;;;:::i;:::-;7460:11;:31;;;;1912:1;7540:2;:13;;;;:::i;:::-;7533:4;1912:1;1966:2;:15;;;;:::i;:::-;1949:13;:33;;;;:::i;:::-;7514:1;:16;;;;:::i;:::-;:23;;;;:::i;:::-;:39;;;;:::i;:::-;7496:11;:57;;;;1912:1;7603:2;:13;;;;:::i;:::-;7596:4;1912:1;1966:2;:15;;;;:::i;:::-;1949:13;:33;;;;:::i;:::-;7577:1;:16;;;;:::i;:::-;:23;;;;:::i;:::-;:39;;;;:::i;:::-;7559:15;:57;;;;2555:2;7621:10;;:24;;;;;;;;;;;;;;;;;;7678:1;2555:2;7664:15;;;;:::i;:::-;7650:11;;:29;;;;;;;;;;;;;;;;;;2555:2;7720:9;;:23;;;;;;;;;;;;;;;;;;7763:4;7749:11;;:18;;;;;;;;;;;;;;;;;;7422:350::o;9646:222::-;9732:10;:18;9743:6;9732:18;;;;;;;;;;;;;;;;;;;;;;;;;9731:19;:50;;;;;9780:1;9754:14;:22;9769:6;9754:22;;;;;;;;;;;;;;;;:27;9731:50;9726:138;;;9816:17;9791:14;:22;9806:6;9791:22;;;;;;;;;;;;;;;:42;;;;9840:15;;:18;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;9726:138;9646:222;;:::o;14201:1127::-;3629:4;3616:10;;:17;;;;;;;;;;;;;;;;;;14279:27:::1;14309:24;14327:4;14309:9;:24::i;:::-;14279:54;;14368:10;;14345:19;:33;;:48;;;;;14382:11;;;;;;;;;;;14345:48;14340:984;;;14430:10;;14407:19;:33;14402:78;;14467:10;;14445:32;;14402:78;14485:20;14564:1;14546:15;;;;;;;;;;;14508:53;;14530:13;;;;;;;;;;;14508:35;;:19;:35;;;;:::i;:::-;:53;;;;:::i;:::-;:57;;;;:::i;:::-;14485:80;;14573:21;14619:12;14597:19;:34;;;;:::i;:::-;14573:58;;1912:1;14657:2;:13;;;;:::i;:::-;14641;:29;14637:549;;;14680:19;14702:21;14680:43;;14730:105;14751:16;:33;14768:15;14751:33;;;;;;;;;;;;;;;;;;;;;;;;;14786:16;:33;14803:15;14786:33;;;;;;;;;;;;;;;;;;;;;;;;;14821:13;14730:20;:105::i;:::-;14842:19;14888:11;14864:21;:35;;;;:::i;:::-;14842:57;;14927:1;14911:13;;;;;;;;;;;:17;;;14906:274;;;14939:21;14993:15;;;;;;;;;;;14963:45;;14977:13;;;;;;;;;;;14963:27;;:11;:27;;;;:::i;:::-;:45;;;;:::i;:::-;14939:69;;15017:63;15032:16;:33;15049:15;15032:33;;;;;;;;;;;;;;;;;;;;;;;;;15067:12;15017:14;:63::i;:::-;15088:84;15102:16;:33;15119:15;15102:33;;;;;;;;;;;;;;;;;;;;;;;;;15137:12;15151:13;15166:5;15088:13;:84::i;:::-;14931:249;14906:274;14673:513;;14637:549;15191:27;15221:21;15191:51;;15273:1;15251:19;:23;15248:71;;;15278:38;15296:19;15278:17;:38::i;:::-;15248:71;14396:928;;;14340:984;14274:1054;3651:5:::0;3638:10;;:18;;;;;;;;;;;;;;;;;;14201:1127;:::o;9873:413::-;9961:4;9972:21;9996:4;9972:28;;10010:11;;;;;;;;;;;:35;;;;;10026:8;:19;10035:9;10026:19;;;;;;;;;;;;;;;;;;;;;;;;;10025:20;10010:35;10005:249;;;10076:11;;10059:14;:28;10054:195;;;10111:5;10092:24;;10054:195;;;10135:10;:21;10146:9;10135:21;;;;;;;;;;;;;;;;;;;;;;;;;10134:22;:83;;;;;10201:15;;10184:14;10161:9;:20;10171:9;10161:20;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;:55;10134:83;10129:120;;;10241:5;10222:24;;10129:120;10054:195;10005:249;10265:16;10258:23;;;9873:413;;;;:::o;10604:443::-;10701:7;10715:17;10743:11;;;;;;;;;;;10742:12;:30;;;;10758:6;:14;10765:6;10758:14;;;;;;;;;;;;;;;;;;;;;;;;;10742:30;:51;;;;10776:6;:17;10783:9;10776:17;;;;;;;;;;;;;;;;;;;;;;;;;10742:51;10737:285;;;10810:1;10798:13;;10737:285;;;10828:10;:18;10839:6;10828:18;;;;;;;;;;;;;;;;;;;;;;;;;10823:199;;;10885:3;10872:10;;;;;;;;;;;10863:19;;:6;:19;;;;:::i;:::-;:25;;;;:::i;:::-;10851:37;;10823:199;;;10905:10;:21;10916:9;10905:21;;;;;;;;;;;;;;;;;;;;;;;;;10900:122;;;10966:3;10952:11;;;;;;;;;;;10943:20;;:6;:20;;;;:::i;:::-;:26;;;;:::i;:::-;10931:38;;10900:122;;;11016:3;11004:9;;;;;;;;;;;10995:18;;:6;:18;;;;:::i;:::-;:24;;;;:::i;:::-;10983:36;;10900:122;10823:199;10737:285;11033:9;11026:16;;;10604:443;;;;;:::o;6593:292::-;6725:12;6681:11;:26;6701:4;6681:26;;;;;;;;;;;;;;;:41;6708:13;6681:41;;;;;;;;;;;;;;;;:56;6676:205;;;6790:17;6746:11;:26;6766:4;6746:26;;;;;;;;;;;;;;;:41;6773:13;6746:41;;;;;;;;;;;;;;;:61;;;;6842:13;6818:57;;6835:4;6818:57;;;6857:17;6818:57;;;;;;:::i;:::-;;;;;;;;6676:205;6593:292;;:::o;6890:406::-;7010:24;7058:8;7052:46;;7090:5;;;;;;;;;;7071:24;;7052:46;7102:28;7152:13;7102:64;;7171:9;:25;;;7204:13;7229:4;7236:12;7250:1;7253;7256:16;7274:15;7171:120;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;7005:291;;6890:406;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:86::-;3529:7;3569:4;3562:5;3558:16;3547:27;;3494:86;;;:::o;3586:118::-;3657:22;3673:5;3657:22;:::i;:::-;3650:5;3647:33;3637:61;;3694:1;3691;3684:12;3637:61;3586:118;:::o;3710:135::-;3754:5;3792:6;3779:20;3770:29;;3808:31;3833:5;3808:31;:::i;:::-;3710:135;;;;:::o;3851:607::-;3922:6;3930;3938;3987:2;3975:9;3966:7;3962:23;3958:32;3955:119;;;3993:79;;:::i;:::-;3955:119;4113:1;4138:51;4181:7;4172:6;4161:9;4157:22;4138:51;:::i;:::-;4128:61;;4084:115;4238:2;4264:51;4307:7;4298:6;4287:9;4283:22;4264:51;:::i;:::-;4254:61;;4209:116;4364:2;4390:51;4433:7;4424:6;4413:9;4409:22;4390:51;:::i;:::-;4380:61;;4335:116;3851:607;;;;;:::o;4464:116::-;4534:21;4549:5;4534:21;:::i;:::-;4527:5;4524:32;4514:60;;4570:1;4567;4560:12;4514:60;4464:116;:::o;4586:133::-;4629:5;4667:6;4654:20;4645:29;;4683:30;4707:5;4683:30;:::i;:::-;4586:133;;;;:::o;4725:468::-;4790:6;4798;4847:2;4835:9;4826:7;4822:23;4818:32;4815:119;;;4853:79;;:::i;:::-;4815:119;4973:1;4998:53;5043:7;5034:6;5023:9;5019:22;4998:53;:::i;:::-;4988:63;;4944:117;5100:2;5126:50;5168:7;5159:6;5148:9;5144:22;5126:50;:::i;:::-;5116:60;;5071:115;4725:468;;;;;:::o;5199:329::-;5258:6;5307:2;5295:9;5286:7;5282:23;5278:32;5275:119;;;5313:79;;:::i;:::-;5275:119;5433:1;5458:53;5503:7;5494:6;5483:9;5479:22;5458:53;:::i;:::-;5448:63;;5404:117;5199:329;;;;:::o;5534:118::-;5621:24;5639:5;5621:24;:::i;:::-;5616:3;5609:37;5534:118;;:::o;5658:222::-;5751:4;5789:2;5778:9;5774:18;5766:26;;5802:71;5870:1;5859:9;5855:17;5846:6;5802:71;:::i;:::-;5658:222;;;;:::o;5886:112::-;5969:22;5985:5;5969:22;:::i;:::-;5964:3;5957:35;5886:112;;:::o;6004:214::-;6093:4;6131:2;6120:9;6116:18;6108:26;;6144:67;6208:1;6197:9;6193:17;6184:6;6144:67;:::i;:::-;6004:214;;;;:::o;6224:619::-;6301:6;6309;6317;6366:2;6354:9;6345:7;6341:23;6337:32;6334:119;;;6372:79;;:::i;:::-;6334:119;6492:1;6517:53;6562:7;6553:6;6542:9;6538:22;6517:53;:::i;:::-;6507:63;;6463:117;6619:2;6645:53;6690:7;6681:6;6670:9;6666:22;6645:53;:::i;:::-;6635:63;;6590:118;6747:2;6773:53;6818:7;6809:6;6798:9;6794:22;6773:53;:::i;:::-;6763:63;;6718:118;6224:619;;;;;:::o;6849:117::-;6958:1;6955;6948:12;6972:117;7081:1;7078;7071:12;7095:117;7204:1;7201;7194:12;7235:568;7308:8;7318:6;7368:3;7361:4;7353:6;7349:17;7345:27;7335:122;;7376:79;;:::i;:::-;7335:122;7489:6;7476:20;7466:30;;7519:18;7511:6;7508:30;7505:117;;;7541:79;;:::i;:::-;7505:117;7655:4;7647:6;7643:17;7631:29;;7709:3;7701:4;7693:6;7689:17;7679:8;7675:32;7672:41;7669:128;;;7716:79;;:::i;:::-;7669:128;7235:568;;;;;:::o;7826:::-;7899:8;7909:6;7959:3;7952:4;7944:6;7940:17;7936:27;7926:122;;7967:79;;:::i;:::-;7926:122;8080:6;8067:20;8057:30;;8110:18;8102:6;8099:30;8096:117;;;8132:79;;:::i;:::-;8096:117;8246:4;8238:6;8234:17;8222:29;;8300:3;8292:4;8284:6;8280:17;8270:8;8266:32;8263:41;8260:128;;;8307:79;;:::i;:::-;8260:128;7826:568;;;;;:::o;8400:934::-;8522:6;8530;8538;8546;8595:2;8583:9;8574:7;8570:23;8566:32;8563:119;;;8601:79;;:::i;:::-;8563:119;8749:1;8738:9;8734:17;8721:31;8779:18;8771:6;8768:30;8765:117;;;8801:79;;:::i;:::-;8765:117;8914:80;8986:7;8977:6;8966:9;8962:22;8914:80;:::i;:::-;8896:98;;;;8692:312;9071:2;9060:9;9056:18;9043:32;9102:18;9094:6;9091:30;9088:117;;;9124:79;;:::i;:::-;9088:117;9237:80;9309:7;9300:6;9289:9;9285:22;9237:80;:::i;:::-;9219:98;;;;9014:313;8400:934;;;;;;;:::o;9340:765::-;9426:6;9434;9442;9450;9499:3;9487:9;9478:7;9474:23;9470:33;9467:120;;;9506:79;;:::i;:::-;9467:120;9626:1;9651:53;9696:7;9687:6;9676:9;9672:22;9651:53;:::i;:::-;9641:63;;9597:117;9753:2;9779:53;9824:7;9815:6;9804:9;9800:22;9779:53;:::i;:::-;9769:63;;9724:118;9881:2;9907:53;9952:7;9943:6;9932:9;9928:22;9907:53;:::i;:::-;9897:63;;9852:118;10009:2;10035:53;10080:7;10071:6;10060:9;10056:22;10035:53;:::i;:::-;10025:63;;9980:118;9340:765;;;;;;;:::o;10111:118::-;10198:24;10216:5;10198:24;:::i;:::-;10193:3;10186:37;10111:118;;:::o;10235:222::-;10328:4;10366:2;10355:9;10351:18;10343:26;;10379:71;10447:1;10436:9;10432:17;10423:6;10379:71;:::i;:::-;10235:222;;;;:::o;10463:89::-;10499:7;10539:6;10532:5;10528:18;10517:29;;10463:89;;;:::o;10558:115::-;10643:23;10660:5;10643:23;:::i;:::-;10638:3;10631:36;10558:115;;:::o;10679:218::-;10770:4;10808:2;10797:9;10793:18;10785:26;;10821:69;10887:1;10876:9;10872:17;10863:6;10821:69;:::i;:::-;10679:218;;;;:::o;10903:120::-;10975:23;10992:5;10975:23;:::i;:::-;10968:5;10965:34;10955:62;;11013:1;11010;11003:12;10955:62;10903:120;:::o;11029:137::-;11074:5;11112:6;11099:20;11090:29;;11128:32;11154:5;11128:32;:::i;:::-;11029:137;;;;:::o;11172:470::-;11238:6;11246;11295:2;11283:9;11274:7;11270:23;11266:32;11263:119;;;11301:79;;:::i;:::-;11263:119;11421:1;11446:52;11490:7;11481:6;11470:9;11466:22;11446:52;:::i;:::-;11436:62;;11392:116;11547:2;11573:52;11617:7;11608:6;11597:9;11593:22;11573:52;:::i;:::-;11563:62;;11518:117;11172:470;;;;;:::o;11648:759::-;11731:6;11739;11747;11755;11804:3;11792:9;11783:7;11779:23;11775:33;11772:120;;;11811:79;;:::i;:::-;11772:120;11931:1;11956:53;12001:7;11992:6;11981:9;11977:22;11956:53;:::i;:::-;11946:63;;11902:117;12058:2;12084:53;12129:7;12120:6;12109:9;12105:22;12084:53;:::i;:::-;12074:63;;12029:118;12186:2;12212:53;12257:7;12248:6;12237:9;12233:22;12212:53;:::i;:::-;12202:63;;12157:118;12314:2;12340:50;12382:7;12373:6;12362:9;12358:22;12340:50;:::i;:::-;12330:60;;12285:115;11648:759;;;;;;;:::o;12413:901::-;12503:6;12511;12519;12527;12535;12584:3;12572:9;12563:7;12559:23;12555:33;12552:120;;;12591:79;;:::i;:::-;12552:120;12711:1;12736:52;12780:7;12771:6;12760:9;12756:22;12736:52;:::i;:::-;12726:62;;12682:116;12837:2;12863:52;12907:7;12898:6;12887:9;12883:22;12863:52;:::i;:::-;12853:62;;12808:117;12964:2;12990:52;13034:7;13025:6;13014:9;13010:22;12990:52;:::i;:::-;12980:62;;12935:117;13091:2;13117:52;13161:7;13152:6;13141:9;13137:22;13117:52;:::i;:::-;13107:62;;13062:117;13218:3;13245:52;13289:7;13280:6;13269:9;13265:22;13245:52;:::i;:::-;13235:62;;13189:118;12413:901;;;;;;;;:::o;13320:474::-;13388:6;13396;13445:2;13433:9;13424:7;13420:23;13416:32;13413:119;;;13451:79;;:::i;:::-;13413:119;13571:1;13596:53;13641:7;13632:6;13621:9;13617:22;13596:53;:::i;:::-;13586:63;;13542:117;13698:2;13724:53;13769:7;13760:6;13749:9;13745:22;13724:53;:::i;:::-;13714:63;;13669:118;13320:474;;;;;:::o;13800:93::-;13836:7;13876:10;13869:5;13865:22;13854:33;;13800:93;;;:::o;13899:120::-;13971:23;13988:5;13971:23;:::i;:::-;13964:5;13961:34;13951:62;;14009:1;14006;13999:12;13951:62;13899:120;:::o;14025:137::-;14070:5;14108:6;14095:20;14086:29;;14124:32;14150:5;14124:32;:::i;:::-;14025:137;;;;:::o;14168:757::-;14250:6;14258;14266;14274;14323:3;14311:9;14302:7;14298:23;14294:33;14291:120;;;14330:79;;:::i;:::-;14291:120;14450:1;14475:52;14519:7;14510:6;14499:9;14495:22;14475:52;:::i;:::-;14465:62;;14421:116;14576:2;14602:52;14646:7;14637:6;14626:9;14622:22;14602:52;:::i;:::-;14592:62;;14547:117;14703:2;14729:52;14773:7;14764:6;14753:9;14749:22;14729:52;:::i;:::-;14719:62;;14674:117;14830:2;14856:52;14900:7;14891:6;14880:9;14876:22;14856:52;:::i;:::-;14846:62;;14801:117;14168:757;;;;;;;:::o;14931:104::-;14976:7;15005:24;15023:5;15005:24;:::i;:::-;14994:35;;14931:104;;;:::o;15041:138::-;15122:32;15148:5;15122:32;:::i;:::-;15115:5;15112:43;15102:71;;15169:1;15166;15159:12;15102:71;15041:138;:::o;15185:155::-;15239:5;15277:6;15264:20;15255:29;;15293:41;15328:5;15293:41;:::i;:::-;15185:155;;;;:::o;15346:345::-;15413:6;15462:2;15450:9;15441:7;15437:23;15433:32;15430:119;;;15468:79;;:::i;:::-;15430:119;15588:1;15613:61;15666:7;15657:6;15646:9;15642:22;15613:61;:::i;:::-;15603:71;;15559:125;15346:345;;;;:::o;15697:180::-;15745:77;15742:1;15735:88;15842:4;15839:1;15832:15;15866:4;15863:1;15856:15;15883:320;15927:6;15964:1;15958:4;15954:12;15944:22;;16011:1;16005:4;16001:12;16032:18;16022:81;;16088:4;16080:6;16076:17;16066:27;;16022:81;16150:2;16142:6;16139:14;16119:18;16116:38;16113:84;;;16169:18;;:::i;:::-;16113:84;15934:269;15883:320;;;:::o;16209:229::-;16349:34;16345:1;16337:6;16333:14;16326:58;16418:12;16413:2;16405:6;16401:15;16394:37;16209:229;:::o;16444:366::-;16586:3;16607:67;16671:2;16666:3;16607:67;:::i;:::-;16600:74;;16683:93;16772:3;16683:93;:::i;:::-;16801:2;16796:3;16792:12;16785:19;;16444:366;;;:::o;16816:419::-;16982:4;17020:2;17009:9;17005:18;16997:26;;17069:9;17063:4;17059:20;17055:1;17044:9;17040:17;17033:47;17097:131;17223:4;17097:131;:::i;:::-;17089:139;;16816:419;;;:::o;17241:162::-;17381:14;17377:1;17369:6;17365:14;17358:38;17241:162;:::o;17409:366::-;17551:3;17572:67;17636:2;17631:3;17572:67;:::i;:::-;17565:74;;17648:93;17737:3;17648:93;:::i;:::-;17766:2;17761:3;17757:12;17750:19;;17409:366;;;:::o;17781:419::-;17947:4;17985:2;17974:9;17970:18;17962:26;;18034:9;18028:4;18024:20;18020:1;18009:9;18005:17;17998:47;18062:131;18188:4;18062:131;:::i;:::-;18054:139;;17781:419;;;:::o;18206:171::-;18346:23;18342:1;18334:6;18330:14;18323:47;18206:171;:::o;18383:366::-;18525:3;18546:67;18610:2;18605:3;18546:67;:::i;:::-;18539:74;;18622:93;18711:3;18622:93;:::i;:::-;18740:2;18735:3;18731:12;18724:19;;18383:366;;;:::o;18755:419::-;18921:4;18959:2;18948:9;18944:18;18936:26;;19008:9;19002:4;18998:20;18994:1;18983:9;18979:17;18972:47;19036:131;19162:4;19036:131;:::i;:::-;19028:139;;18755:419;;;:::o;19180:180::-;19228:77;19225:1;19218:88;19325:4;19322:1;19315:15;19349:4;19346:1;19339:15;19366:102;19408:8;19455:5;19452:1;19448:13;19427:34;;19366:102;;;:::o;19474:848::-;19535:5;19542:4;19566:6;19557:15;;19590:5;19581:14;;19604:712;19625:1;19615:8;19612:15;19604:712;;;19720:4;19715:3;19711:14;19705:4;19702:24;19699:50;;;19729:18;;:::i;:::-;19699:50;19779:1;19769:8;19765:16;19762:451;;;20194:4;20187:5;20183:16;20174:25;;19762:451;20244:4;20238;20234:15;20226:23;;20274:32;20297:8;20274:32;:::i;:::-;20262:44;;19604:712;;;19474:848;;;;;;;:::o;20328:1073::-;20382:5;20573:8;20563:40;;20594:1;20585:10;;20596:5;;20563:40;20622:4;20612:36;;20639:1;20630:10;;20641:5;;20612:36;20708:4;20756:1;20751:27;;;;20792:1;20787:191;;;;20701:277;;20751:27;20769:1;20760:10;;20771:5;;;20787:191;20832:3;20822:8;20819:17;20816:43;;;20839:18;;:::i;:::-;20816:43;20888:8;20885:1;20881:16;20872:25;;20923:3;20916:5;20913:14;20910:40;;;20930:18;;:::i;:::-;20910:40;20963:5;;;20701:277;;21087:2;21077:8;21074:16;21068:3;21062:4;21059:13;21055:36;21037:2;21027:8;21024:16;21019:2;21013:4;21010:12;21006:35;20990:111;20987:246;;;21143:8;21137:4;21133:19;21124:28;;21178:3;21171:5;21168:14;21165:40;;;21185:18;;:::i;:::-;21165:40;21218:5;;20987:246;21258:42;21296:3;21286:8;21280:4;21277:1;21258:42;:::i;:::-;21243:57;;;;21332:4;21327:3;21323:14;21316:5;21313:25;21310:51;;;21341:18;;:::i;:::-;21310:51;21390:4;21383:5;21379:16;21370:25;;20328:1073;;;;;;:::o;21407:281::-;21465:5;21489:23;21507:4;21489:23;:::i;:::-;21481:31;;21533:25;21549:8;21533:25;:::i;:::-;21521:37;;21577:104;21614:66;21604:8;21598:4;21577:104;:::i;:::-;21568:113;;21407:281;;;;:::o;21694:348::-;21734:7;21757:20;21775:1;21757:20;:::i;:::-;21752:25;;21791:20;21809:1;21791:20;:::i;:::-;21786:25;;21979:1;21911:66;21907:74;21904:1;21901:81;21896:1;21889:9;21882:17;21878:105;21875:131;;;21986:18;;:::i;:::-;21875:131;22034:1;22031;22027:9;22016:20;;21694:348;;;;:::o;22048:166::-;22188:18;22184:1;22176:6;22172:14;22165:42;22048:166;:::o;22220:366::-;22362:3;22383:67;22447:2;22442:3;22383:67;:::i;:::-;22376:74;;22459:93;22548:3;22459:93;:::i;:::-;22577:2;22572:3;22568:12;22561:19;;22220:366;;;:::o;22592:419::-;22758:4;22796:2;22785:9;22781:18;22773:26;;22845:9;22839:4;22835:20;22831:1;22820:9;22816:17;22809:47;22873:131;22999:4;22873:131;:::i;:::-;22865:139;;22592:419;;;:::o;23017:191::-;23057:4;23077:20;23095:1;23077:20;:::i;:::-;23072:25;;23111:20;23129:1;23111:20;:::i;:::-;23106:25;;23150:1;23147;23144:8;23141:34;;;23155:18;;:::i;:::-;23141:34;23200:1;23197;23193:9;23185:17;;23017:191;;;;:::o;23214:182::-;23354:34;23350:1;23342:6;23338:14;23331:58;23214:182;:::o;23402:366::-;23544:3;23565:67;23629:2;23624:3;23565:67;:::i;:::-;23558:74;;23641:93;23730:3;23641:93;:::i;:::-;23759:2;23754:3;23750:12;23743:19;;23402:366;;;:::o;23774:419::-;23940:4;23978:2;23967:9;23963:18;23955:26;;24027:9;24021:4;24017:20;24013:1;24002:9;23998:17;23991:47;24055:131;24181:4;24055:131;:::i;:::-;24047:139;;23774:419;;;:::o;24199:224::-;24339:34;24335:1;24327:6;24323:14;24316:58;24408:7;24403:2;24395:6;24391:15;24384:32;24199:224;:::o;24429:366::-;24571:3;24592:67;24656:2;24651:3;24592:67;:::i;:::-;24585:74;;24668:93;24757:3;24668:93;:::i;:::-;24786:2;24781:3;24777:12;24770:19;;24429:366;;;:::o;24801:419::-;24967:4;25005:2;24994:9;24990:18;24982:26;;25054:9;25048:4;25044:20;25040:1;25029:9;25025:17;25018:47;25082:131;25208:4;25082:131;:::i;:::-;25074:139;;24801:419;;;:::o;25226:180::-;25274:77;25271:1;25264:88;25371:4;25368:1;25361:15;25395:4;25392:1;25385:15;25412:305;25452:3;25471:20;25489:1;25471:20;:::i;:::-;25466:25;;25505:20;25523:1;25505:20;:::i;:::-;25500:25;;25659:1;25591:66;25587:74;25584:1;25581:81;25578:107;;;25665:18;;:::i;:::-;25578:107;25709:1;25706;25702:9;25695:16;;25412:305;;;;:::o;25723:233::-;25762:3;25785:24;25803:5;25785:24;:::i;:::-;25776:33;;25831:66;25824:5;25821:77;25818:103;;;25901:18;;:::i;:::-;25818:103;25948:1;25941:5;25937:13;25930:20;;25723:233;;;:::o;25962:225::-;26102:34;26098:1;26090:6;26086:14;26079:58;26171:8;26166:2;26158:6;26154:15;26147:33;25962:225;:::o;26193:366::-;26335:3;26356:67;26420:2;26415:3;26356:67;:::i;:::-;26349:74;;26432:93;26521:3;26432:93;:::i;:::-;26550:2;26545:3;26541:12;26534:19;;26193:366;;;:::o;26565:419::-;26731:4;26769:2;26758:9;26754:18;26746:26;;26818:9;26812:4;26808:20;26804:1;26793:9;26789:17;26782:47;26846:131;26972:4;26846:131;:::i;:::-;26838:139;;26565:419;;;:::o;26990:332::-;27111:4;27149:2;27138:9;27134:18;27126:26;;27162:71;27230:1;27219:9;27215:17;27206:6;27162:71;:::i;:::-;27243:72;27311:2;27300:9;27296:18;27287:6;27243:72;:::i;:::-;26990:332;;;;;:::o;27328:169::-;27468:21;27464:1;27456:6;27452:14;27445:45;27328:169;:::o;27503:366::-;27645:3;27666:67;27730:2;27725:3;27666:67;:::i;:::-;27659:74;;27742:93;27831:3;27742:93;:::i;:::-;27860:2;27855:3;27851:12;27844:19;;27503:366;;;:::o;27875:419::-;28041:4;28079:2;28068:9;28064:18;28056:26;;28128:9;28122:4;28118:20;28114:1;28103:9;28099:17;28092:47;28156:131;28282:4;28156:131;:::i;:::-;28148:139;;27875:419;;;:::o;28300:180::-;28348:77;28345:1;28338:88;28445:4;28442:1;28435:15;28469:4;28466:1;28459:15;28486:185;28526:1;28543:20;28561:1;28543:20;:::i;:::-;28538:25;;28577:20;28595:1;28577:20;:::i;:::-;28572:25;;28616:1;28606:35;;28621:18;;:::i;:::-;28606:35;28663:1;28660;28656:9;28651:14;;28486:185;;;;:::o;28677:166::-;28817:18;28813:1;28805:6;28801:14;28794:42;28677:166;:::o;28849:366::-;28991:3;29012:67;29076:2;29071:3;29012:67;:::i;:::-;29005:74;;29088:93;29177:3;29088:93;:::i;:::-;29206:2;29201:3;29197:12;29190:19;;28849:366;;;:::o;29221:419::-;29387:4;29425:2;29414:9;29410:18;29402:26;;29474:9;29468:4;29464:20;29460:1;29449:9;29445:17;29438:47;29502:131;29628:4;29502:131;:::i;:::-;29494:139;;29221:419;;;:::o;29646:170::-;29786:22;29782:1;29774:6;29770:14;29763:46;29646:170;:::o;29822:366::-;29964:3;29985:67;30049:2;30044:3;29985:67;:::i;:::-;29978:74;;30061:93;30150:3;30061:93;:::i;:::-;30179:2;30174:3;30170:12;30163:19;;29822:366;;;:::o;30194:419::-;30360:4;30398:2;30387:9;30383:18;30375:26;;30447:9;30441:4;30437:20;30433:1;30422:9;30418:17;30411:47;30475:131;30601:4;30475:131;:::i;:::-;30467:139;;30194:419;;;:::o;30619:159::-;30759:11;30755:1;30747:6;30743:14;30736:35;30619:159;:::o;30784:365::-;30926:3;30947:66;31011:1;31006:3;30947:66;:::i;:::-;30940:73;;31022:93;31111:3;31022:93;:::i;:::-;31140:2;31135:3;31131:12;31124:19;;30784:365;;;:::o;31155:419::-;31321:4;31359:2;31348:9;31344:18;31336:26;;31408:9;31402:4;31398:20;31394:1;31383:9;31379:17;31372:47;31436:131;31562:4;31436:131;:::i;:::-;31428:139;;31155:419;;;:::o;31580:172::-;31720:24;31716:1;31708:6;31704:14;31697:48;31580:172;:::o;31758:366::-;31900:3;31921:67;31985:2;31980:3;31921:67;:::i;:::-;31914:74;;31997:93;32086:3;31997:93;:::i;:::-;32115:2;32110:3;32106:12;32099:19;;31758:366;;;:::o;32130:419::-;32296:4;32334:2;32323:9;32319:18;32311:26;;32383:9;32377:4;32373:20;32369:1;32358:9;32354:17;32347:47;32411:131;32537:4;32411:131;:::i;:::-;32403:139;;32130:419;;;:::o;32555:168::-;32695:20;32691:1;32683:6;32679:14;32672:44;32555:168;:::o;32729:366::-;32871:3;32892:67;32956:2;32951:3;32892:67;:::i;:::-;32885:74;;32968:93;33057:3;32968:93;:::i;:::-;33086:2;33081:3;33077:12;33070:19;;32729:366;;;:::o;33101:419::-;33267:4;33305:2;33294:9;33290:18;33282:26;;33354:9;33348:4;33344:20;33340:1;33329:9;33325:17;33318:47;33382:131;33508:4;33382:131;:::i;:::-;33374:139;;33101:419;;;:::o;33526:170::-;33666:22;33662:1;33654:6;33650:14;33643:46;33526:170;:::o;33702:366::-;33844:3;33865:67;33929:2;33924:3;33865:67;:::i;:::-;33858:74;;33941:93;34030:3;33941:93;:::i;:::-;34059:2;34054:3;34050:12;34043:19;;33702:366;;;:::o;34074:419::-;34240:4;34278:2;34267:9;34263:18;34255:26;;34327:9;34321:4;34317:20;34313:1;34302:9;34298:17;34291:47;34355:131;34481:4;34355:131;:::i;:::-;34347:139;;34074:419;;;:::o;34499:242::-;34538:3;34557:19;34574:1;34557:19;:::i;:::-;34552:24;;34590:19;34607:1;34590:19;:::i;:::-;34585:24;;34683:1;34675:6;34671:14;34668:1;34665:21;34662:47;;;34689:18;;:::i;:::-;34662:47;34733:1;34730;34726:9;34719:16;;34499:242;;;;:::o;34747:162::-;34887:14;34883:1;34875:6;34871:14;34864:38;34747:162;:::o;34915:366::-;35057:3;35078:67;35142:2;35137:3;35078:67;:::i;:::-;35071:74;;35154:93;35243:3;35154:93;:::i;:::-;35272:2;35267:3;35263:12;35256:19;;34915:366;;;:::o;35287:419::-;35453:4;35491:2;35480:9;35476:18;35468:26;;35540:9;35534:4;35530:20;35526:1;35515:9;35511:17;35504:47;35568:131;35694:4;35568:131;:::i;:::-;35560:139;;35287:419;;;:::o;35712:173::-;35852:25;35848:1;35840:6;35836:14;35829:49;35712:173;:::o;35891:366::-;36033:3;36054:67;36118:2;36113:3;36054:67;:::i;:::-;36047:74;;36130:93;36219:3;36130:93;:::i;:::-;36248:2;36243:3;36239:12;36232:19;;35891:366;;;:::o;36263:419::-;36429:4;36467:2;36456:9;36452:18;36444:26;;36516:9;36510:4;36506:20;36502:1;36491:9;36487:17;36480:47;36544:131;36670:4;36544:131;:::i;:::-;36536:139;;36263:419;;;:::o;36688:174::-;36828:26;36824:1;36816:6;36812:14;36805:50;36688:174;:::o;36868:366::-;37010:3;37031:67;37095:2;37090:3;37031:67;:::i;:::-;37024:74;;37107:93;37196:3;37107:93;:::i;:::-;37225:2;37220:3;37216:12;37209:19;;36868:366;;;:::o;37240:419::-;37406:4;37444:2;37433:9;37429:18;37421:26;;37493:9;37487:4;37483:20;37479:1;37468:9;37464:17;37457:47;37521:131;37647:4;37521:131;:::i;:::-;37513:139;;37240:419;;;:::o;37665:280::-;37703:7;37726:18;37742:1;37726:18;:::i;:::-;37721:23;;37758:18;37774:1;37758:18;:::i;:::-;37753:23;;37882:1;37876:4;37872:12;37869:1;37866:19;37861:1;37854:9;37847:17;37843:43;37840:69;;;37889:18;;:::i;:::-;37840:69;37937:1;37934;37930:9;37919:20;;37665:280;;;;:::o;37951:60::-;37979:3;38000:5;37993:12;;37951:60;;;:::o;38017:142::-;38067:9;38100:53;38118:34;38127:24;38145:5;38127:24;:::i;:::-;38118:34;:::i;:::-;38100:53;:::i;:::-;38087:66;;38017:142;;;:::o;38165:126::-;38215:9;38248:37;38279:5;38248:37;:::i;:::-;38235:50;;38165:126;;;:::o;38297:134::-;38355:9;38388:37;38419:5;38388:37;:::i;:::-;38375:50;;38297:134;;;:::o;38437:147::-;38532:45;38571:5;38532:45;:::i;:::-;38527:3;38520:58;38437:147;;:::o;38590:238::-;38691:4;38729:2;38718:9;38714:18;38706:26;;38742:79;38818:1;38807:9;38803:17;38794:6;38742:79;:::i;:::-;38590:238;;;;:::o;38834:167::-;38974:19;38970:1;38962:6;38958:14;38951:43;38834:167;:::o;39007:366::-;39149:3;39170:67;39234:2;39229:3;39170:67;:::i;:::-;39163:74;;39246:93;39335:3;39246:93;:::i;:::-;39364:2;39359:3;39355:12;39348:19;;39007:366;;;:::o;39379:419::-;39545:4;39583:2;39572:9;39568:18;39560:26;;39632:9;39626:4;39622:20;39618:1;39607:9;39603:17;39596:47;39660:131;39786:4;39660:131;:::i;:::-;39652:139;;39379:419;;;:::o;39804:179::-;39944:31;39940:1;39932:6;39928:14;39921:55;39804:179;:::o;39989:366::-;40131:3;40152:67;40216:2;40211:3;40152:67;:::i;:::-;40145:74;;40228:93;40317:3;40228:93;:::i;:::-;40346:2;40341:3;40337:12;40330:19;;39989:366;;;:::o;40361:419::-;40527:4;40565:2;40554:9;40550:18;40542:26;;40614:9;40608:4;40604:20;40600:1;40589:9;40585:17;40578:47;40642:131;40768:4;40642:131;:::i;:::-;40634:139;;40361:419;;;:::o;40786:176::-;40818:1;40835:20;40853:1;40835:20;:::i;:::-;40830:25;;40869:20;40887:1;40869:20;:::i;:::-;40864:25;;40908:1;40898:35;;40913:18;;:::i;:::-;40898:35;40954:1;40951;40947:9;40942:14;;40786:176;;;;:::o;40968:164::-;41108:16;41104:1;41096:6;41092:14;41085:40;40968:164;:::o;41138:366::-;41280:3;41301:67;41365:2;41360:3;41301:67;:::i;:::-;41294:74;;41377:93;41466:3;41377:93;:::i;:::-;41495:2;41490:3;41486:12;41479:19;;41138:366;;;:::o;41510:419::-;41676:4;41714:2;41703:9;41699:18;41691:26;;41763:9;41757:4;41753:20;41749:1;41738:9;41734:17;41727:47;41791:131;41917:4;41791:131;:::i;:::-;41783:139;;41510:419;;;:::o;41935:161::-;42075:13;42071:1;42063:6;42059:14;42052:37;41935:161;:::o;42102:366::-;42244:3;42265:67;42329:2;42324:3;42265:67;:::i;:::-;42258:74;;42341:93;42430:3;42341:93;:::i;:::-;42459:2;42454:3;42450:12;42443:19;;42102:366;;;:::o;42474:419::-;42640:4;42678:2;42667:9;42663:18;42655:26;;42727:9;42721:4;42717:20;42713:1;42702:9;42698:17;42691:47;42755:131;42881:4;42755:131;:::i;:::-;42747:139;;42474:419;;;:::o;42899:167::-;43039:19;43035:1;43027:6;43023:14;43016:43;42899:167;:::o;43072:366::-;43214:3;43235:67;43299:2;43294:3;43235:67;:::i;:::-;43228:74;;43311:93;43400:3;43311:93;:::i;:::-;43429:2;43424:3;43420:12;43413:19;;43072:366;;;:::o;43444:419::-;43610:4;43648:2;43637:9;43633:18;43625:26;;43697:9;43691:4;43687:20;43683:1;43672:9;43668:17;43661:47;43725:131;43851:4;43725:131;:::i;:::-;43717:139;;43444:419;;;:::o;43869:180::-;43917:77;43914:1;43907:88;44014:4;44011:1;44004:15;44038:4;44035:1;44028:15;44055:85;44100:7;44129:5;44118:16;;44055:85;;;:::o;44146:158::-;44204:9;44237:61;44255:42;44264:32;44290:5;44264:32;:::i;:::-;44255:42;:::i;:::-;44237:61;:::i;:::-;44224:74;;44146:158;;;:::o;44310:147::-;44405:45;44444:5;44405:45;:::i;:::-;44400:3;44393:58;44310:147;;:::o;44463:114::-;44530:6;44564:5;44558:12;44548:22;;44463:114;;;:::o;44583:184::-;44682:11;44716:6;44711:3;44704:19;44756:4;44751:3;44747:14;44732:29;;44583:184;;;;:::o;44773:132::-;44840:4;44863:3;44855:11;;44893:4;44888:3;44884:14;44876:22;;44773:132;;;:::o;44911:108::-;44988:24;45006:5;44988:24;:::i;:::-;44983:3;44976:37;44911:108;;:::o;45025:179::-;45094:10;45115:46;45157:3;45149:6;45115:46;:::i;:::-;45193:4;45188:3;45184:14;45170:28;;45025:179;;;;:::o;45210:113::-;45280:4;45312;45307:3;45303:14;45295:22;;45210:113;;;:::o;45359:732::-;45478:3;45507:54;45555:5;45507:54;:::i;:::-;45577:86;45656:6;45651:3;45577:86;:::i;:::-;45570:93;;45687:56;45737:5;45687:56;:::i;:::-;45766:7;45797:1;45782:284;45807:6;45804:1;45801:13;45782:284;;;45883:6;45877:13;45910:63;45969:3;45954:13;45910:63;:::i;:::-;45903:70;;45996:60;46049:6;45996:60;:::i;:::-;45986:70;;45842:224;45829:1;45826;45822:9;45817:14;;45782:284;;;45786:14;46082:3;46075:10;;45483:608;;;45359:732;;;;:::o;46097:831::-;46360:4;46398:3;46387:9;46383:19;46375:27;;46412:71;46480:1;46469:9;46465:17;46456:6;46412:71;:::i;:::-;46493:80;46569:2;46558:9;46554:18;46545:6;46493:80;:::i;:::-;46620:9;46614:4;46610:20;46605:2;46594:9;46590:18;46583:48;46648:108;46751:4;46742:6;46648:108;:::i;:::-;46640:116;;46766:72;46834:2;46823:9;46819:18;46810:6;46766:72;:::i;:::-;46848:73;46916:3;46905:9;46901:19;46892:6;46848:73;:::i;:::-;46097:831;;;;;;;;:::o;46934:171::-;46972:3;46995:23;47012:5;46995:23;:::i;:::-;46986:32;;47040:6;47033:5;47030:17;47027:43;;;47050:18;;:::i;:::-;47027:43;47097:1;47090:5;47086:13;47079:20;;46934:171;;;:::o;47111:807::-;47360:4;47398:3;47387:9;47383:19;47375:27;;47412:71;47480:1;47469:9;47465:17;47456:6;47412:71;:::i;:::-;47493:72;47561:2;47550:9;47546:18;47537:6;47493:72;:::i;:::-;47575:80;47651:2;47640:9;47636:18;47627:6;47575:80;:::i;:::-;47665;47741:2;47730:9;47726:18;47717:6;47665:80;:::i;:::-;47755:73;47823:3;47812:9;47808:19;47799:6;47755:73;:::i;:::-;47838;47906:3;47895:9;47891:19;47882:6;47838:73;:::i;:::-;47111:807;;;;;;;;;:::o;47924:143::-;47981:5;48012:6;48006:13;47997:22;;48028:33;48055:5;48028:33;:::i;:::-;47924:143;;;;:::o;48073:663::-;48161:6;48169;48177;48226:2;48214:9;48205:7;48201:23;48197:32;48194:119;;;48232:79;;:::i;:::-;48194:119;48352:1;48377:64;48433:7;48424:6;48413:9;48409:22;48377:64;:::i;:::-;48367:74;;48323:128;48490:2;48516:64;48572:7;48563:6;48552:9;48548:22;48516:64;:::i;:::-;48506:74;;48461:129;48629:2;48655:64;48711:7;48702:6;48691:9;48687:22;48655:64;:::i;:::-;48645:74;;48600:129;48073:663;;;;;:::o

Swarm Source

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