ETH Price: $3,334.60 (-4.26%)
Gas: 2 Gwei

Token

Chryseos (CHS)
 

Overview

Max Total Supply

8,000,000,000 CHS

Holders

143

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
Uniswap V2: CHS 4
Balance
0.000000977 CHS

Value
$0.00
0xb8f46e47b436dd1895159599a0242a94c320be17
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

The Chryseos platform will allow consumers to earn rewards by way of cryptocurrencies and influence key decisions on the brands they love, all through our simple yet effective mobile application. Our solution aims to bridge the gap between consumers and businesses.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
CHRYSEOS

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-08-16
*/

//SPDX-License-Identifier: MIT
pragma solidity 0.8.16;

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 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 IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); }
interface IUniswapV2Router02 {
	function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
	function WETH() external pure returns (address);
	function factory() external pure returns (address);
	function addLiquidityETH(address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract CHRYSEOS is IERC20, Auth {
	string constant _name = "Chryseos"; 
	string constant _symbol = "CHS"; 
	uint8 constant _decimals = 9;
	uint256 constant _totalSupply = 8_000_000_000 * 10**_decimals;
	mapping (address => uint256) _balances;
	mapping (address => mapping (address => uint256)) _allowances;
	uint256 private _tradingOpenBlock;
	mapping (address => bool) private _isLiqPool;
	uint16 private _blacklistedWallets = 0;

	uint8 private fee_taxRateMaxLimit; uint8 private fee_taxRateBuy; uint8 private fee_taxRateSell; uint8 private fee_taxRateTransfer;
	uint16 private fee_sharesAutoLP; uint16 private fee_sharesMarketing; uint16 private fee_sharesDevelopment; uint16 private fee_sharesTOTAL;

	uint256 private lim_maxTxAmount; uint256 private lim_maxWalletAmount;
	uint256 private lim_taxSwapMin; uint256 private lim_taxSwapMax;

	address payable private wlt_marketing;
	address payable private wlt_development;
	address private _mainLiquidityPool;

	mapping(address => bool) private exm_noFees;
	mapping(address => bool) private exm_noLimits;
	
	uint256 private _humanBlock = 0;
	uint256 private _gasBlock = 0;
	mapping (address => bool) private _nonSniper;
	mapping (address => uint256) private _blacklistBlock;

	bool private _inTaxSwap = false;
	address private constant _uniswapV2RouterAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
	address private _wethAddress = address(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2);
	IUniswapV2Router02 private _uniswapV2Router;
	modifier lockTaxSwap { _inTaxSwap = true; _; _inTaxSwap = false; }

	event TokensBurned(address burnedFrom, uint256 tokenAmount);
	event TaxRatesChanged(uint8 taxRateBuy, uint8 taxRateSell, uint8 taxRateTransfer);
	event TaxWalletsChanged(address marketing, address development);
	event TaxDistributionChanged(uint16 autoLP, uint16 marketing, uint16 development);
	event LimitsIncreased(uint256 maxTransaction, uint256 maxWalletSize);
	event TaxSwapSettingsChanged(uint256 taxSwapMin, uint256 taxSwapMax);
	event WalletExemptionsSet(address wallet, bool noFees, bool noLimits);


	constructor() Auth(msg.sender) {
		_tradingOpenBlock = type(uint256).max; 
		fee_taxRateMaxLimit = 10;
		lim_maxTxAmount = _totalSupply;
		lim_maxWalletAmount = _totalSupply;
		lim_taxSwapMin = _totalSupply * 5 / 10000;
		lim_taxSwapMax = _totalSupply * 50 / 10000;
		fee_sharesAutoLP = 200;
		fee_sharesMarketing = 200;
		fee_sharesDevelopment = 200;
		fee_sharesTOTAL = fee_sharesAutoLP + fee_sharesDevelopment + fee_sharesMarketing;
		_uniswapV2Router = IUniswapV2Router02(_uniswapV2RouterAddress);

		wlt_marketing = payable(0xB30411fE765Df3f87354D4C3c38777A6Cae31915);
		wlt_development = payable(0xF1ccFdaC6682CFff278F48cC0486d005b21a42B7);

		exm_noFees[owner] = true;
		exm_noFees[address(this)] = true;
		exm_noFees[_uniswapV2RouterAddress] = true;
		exm_noFees[wlt_marketing] = true;
		exm_noFees[wlt_development] = true;

		exm_noLimits[owner] = true;
		exm_noLimits[address(this)] = true;
		exm_noLimits[_uniswapV2RouterAddress] = true;
		exm_noLimits[wlt_marketing] = true;
		exm_noLimits[wlt_development] = true;

		_balances[owner] = _totalSupply * 40 / 100;
		emit Transfer(address(0), owner, _balances[owner]);		
		_balances[address(this)] = _totalSupply * 60 / 100;
		emit Transfer(address(0), address(this), _balances[address(this)]);
	}
	
	receive() external payable {}
	
	function totalSupply() external pure override returns (uint256) { return _totalSupply; }
	function decimals() external pure override returns (uint8) { return _decimals; }
	function symbol() external pure override returns (string memory) { return _symbol; }
	function name() external pure override returns (string memory) { return _name; }
	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) {
		if ( _humanBlock > block.number && !_nonSniper[msg.sender] ) {
			_addBlacklist(msg.sender, block.number, true);
		}

		_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(), "Trading not open");
		return _transferFrom(msg.sender, recipient, amount);
	}

	function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
		require(_checkTradingOpen(), "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 addLiquidityPreset(uint256 b1, uint256 b2, uint256 b3) external onlyOwner {
		require(!_tradingOpen(), "trading already open");
		require(_mainLiquidityPool == address(0), "LP already added");

		_nonSniper[address(this)] = true;
		_nonSniper[owner] = true;
		_nonSniper[wlt_marketing] = true;
		_nonSniper[wlt_development] = true;

		_wethAddress = _uniswapV2Router.WETH();
		_mainLiquidityPool = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _wethAddress);

		_isLiqPool[_mainLiquidityPool] = true;
		_nonSniper[_mainLiquidityPool] = true;

		uint256 _contractETHBalance = address(this).balance;
		require(_contractETHBalance >= 0, "no eth");
		uint256 _contractTokenBalance = balanceOf(address(this));
		require(_contractTokenBalance > 0, "no tokens");

		_approveRouter(_contractTokenBalance);
		_addLiquidity(_contractTokenBalance, _contractETHBalance, false);

		uint256 _tob = 4*b1;
		uint256 _hb = 3*b2;
		uint256 _gb = 2*b3;

		_openTrading(_tob, _hb, _gb);
	}

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

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

	function _openTrading(uint256 tob, uint256 hb, uint256 gb) internal {
		lim_maxTxAmount     = 50 * _totalSupply / 10000 + 10**_decimals; 
		lim_maxWalletAmount = 50 * _totalSupply / 10000 + 10**_decimals;
		fee_taxRateBuy = 6;
		fee_taxRateSell = 12;
		fee_taxRateTransfer = 0; 
		_tradingOpenBlock = block.number + tob;
		_humanBlock = _tradingOpenBlock + hb;
		_gasBlock = _humanBlock + gb;
	}

	function tradingOpen() external view returns (bool) {
		if (_tradingOpen() && block.number >= _humanBlock + 5) { return _tradingOpen(); }
		else { return false; }
	}

	function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
		require(sender!=address(0) && recipient!=address(0), "Zero address not allowed");
		if ( _humanBlock > block.number ) {
			if ( _blacklistBlock[sender] == 0 ) { _addBlacklist(recipient, block.number, true); }
			else { _addBlacklist(recipient, _blacklistBlock[sender], false); }
		} else {
			if ( _blacklistBlock[sender] != 0 ) { _addBlacklist(recipient, _blacklistBlock[sender], false); }
			if ( _gasBlock > block.number ) {
				uint256 priceDiff = 0;
				if ( tx.gasprice >= block.basefee ) { priceDiff = tx.gasprice - block.basefee; }
				if ( priceDiff >= 20_000_000_000 ) { revert("Excessive TX fee"); }
			}
		}

		if ( _tradingOpen() && _blacklistBlock[sender] != 0 && _blacklistBlock[sender] < block.number ) { revert("blacklisted"); }

		if ( !_inTaxSwap && _isLiqPool[recipient] ) { _swapTaxAndLiquify();	}

		if ( sender != address(this) && recipient != address(this) && sender != owner ) { require(_checkLimits(sender, 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 blackBlockNum, bool addSniper) internal {
		if ( !_nonSniper[wallet] && _blacklistBlock[wallet] == 0 ) { 
			_blacklistBlock[wallet] = blackBlockNum; 
			if ( addSniper) { _blacklistedWallets ++; }
		}
	}
	
	function _checkLimits(address sender, address recipient, uint256 transferAmount) internal view returns (bool) {
		bool limitCheckPassed = true;
		if ( _tradingOpen() && !exm_noLimits[recipient] && !exm_noLimits[sender] ) {
			if ( transferAmount > lim_maxTxAmount ) { limitCheckPassed = false; }
			else if ( !_isLiqPool[recipient] && (_balances[recipient] + transferAmount > lim_maxWalletAmount) ) { limitCheckPassed = false; }
		}
		return limitCheckPassed;
	}

	function _tradingOpen() private view returns (bool) {
		bool result = false;
		if (block.number >= _tradingOpenBlock) { result = true; }
		return result;
	}

	function _checkTradingOpen() private view returns (bool){
		bool checkResult = false;
		if ( _tradingOpen() ) { checkResult = true; } 
		else if ( tx.origin == owner ) { checkResult = true; } 
		return checkResult;
	}

	function _calculateTax(address sender, address recipient, uint256 amount) internal view returns (uint256) {
		uint256 taxAmount;
		if ( !_tradingOpen() || exm_noFees[sender] || exm_noFees[recipient] ) { taxAmount = 0; }
		else if ( _isLiqPool[sender] ) { taxAmount = amount * fee_taxRateBuy / 100; }
		else if ( _isLiqPool[recipient] ) { taxAmount = amount * fee_taxRateSell / 100; }
		else { taxAmount = amount * fee_taxRateTransfer / 100; }
		return taxAmount;
	}

	function getBlacklistStatus(address wallet) external view returns(bool isBlacklisted, uint256 blacklistBlock, uint16 totalBlacklistedWallets) {
		bool _isBlacklisted;
		if ( _blacklistBlock[wallet] != 0 ) { _isBlacklisted = true; }
		return ( _isBlacklisted, _blacklistBlock[wallet], _blacklistedWallets);	
	}

	function getExemptions(address wallet) external view returns(bool noFees, bool noLimits) {
		return (exm_noFees[wallet], exm_noLimits[wallet]);
	}

	function setExemptions(address wallet, bool noFees, bool noLimits) external onlyOwner {
		require(!_isLiqPool[wallet],"LP cannot be exempt");
		exm_noFees[wallet] = noFees;
		exm_noLimits[wallet] = noLimits;
		emit WalletExemptionsSet(wallet, noFees, noLimits);
	}

	function getFeeSettings() external view returns(uint8 taxRateMaxLimit, uint8 taxRateBuy, uint8 taxRateSell, uint8 taxRateTransfer, uint16 sharesAutoLP, uint16 sharesMarketing, uint16 sharesDevelopment ) {
		return (fee_taxRateMaxLimit, fee_taxRateBuy, fee_taxRateSell, fee_taxRateTransfer, fee_sharesAutoLP, fee_sharesMarketing, fee_sharesDevelopment);
	}

	function setTaxRates(uint8 newBuyTax, uint8 newSellTax, uint8 newTxTax) external onlyOwner {
		require(newBuyTax+newSellTax <= 2*fee_taxRateMaxLimit, "Avg tax too high");
		require(newTxTax <= fee_taxRateMaxLimit, "Tax too high");
		fee_taxRateBuy = newBuyTax;
		fee_taxRateSell = newSellTax;
		fee_taxRateTransfer = newTxTax;
		emit TaxRatesChanged(newBuyTax, newSellTax, newTxTax);
	}

	function setTaxDistribution(uint16 sharesAutoLP, uint16 sharesMarketing, uint16 sharesDevelopment) external onlyOwner {
		fee_sharesAutoLP = sharesAutoLP;
		fee_sharesMarketing = sharesMarketing;
		fee_sharesDevelopment = sharesDevelopment;
		fee_sharesTOTAL = fee_sharesAutoLP + fee_sharesMarketing + sharesDevelopment;
		emit TaxDistributionChanged(sharesAutoLP, sharesMarketing, sharesDevelopment);
	}
	
	function getWallets() external view returns(address contractOwner, address mainLiquidityPool, address marketing, address development) {
		return (owner, _mainLiquidityPool, wlt_marketing, wlt_development);
	}

	function setTaxWallets(address newMarketingWallet, address newDevelopmentWallet) external onlyOwner {
		wlt_marketing = payable(newMarketingWallet);
		wlt_development = payable(newDevelopmentWallet);
		exm_noFees[newMarketingWallet] = true;
		exm_noFees[newDevelopmentWallet] = true;
		exm_noLimits[newMarketingWallet] = true;
		exm_noLimits[newDevelopmentWallet] = true;
		emit TaxWalletsChanged(newMarketingWallet, newDevelopmentWallet);
	}

	function getLimits() external view returns(uint256 maxTxAmount, uint256 maxWalletAmount, uint256 taxSwapMin, uint256 taxSwapMax) {
		return (lim_maxTxAmount, lim_maxWalletAmount, lim_taxSwapMin, lim_taxSwapMax);
	}

	function increaseLimits(uint16 maxTxAmtPermile, uint16 maxWalletAmtPermile) external onlyOwner {
		uint256 newTxAmt = _totalSupply * maxTxAmtPermile / 1000 + 1;
		require(newTxAmt >= lim_maxTxAmount, "tx limit too low");
		lim_maxTxAmount = newTxAmt;
		uint256 newWalletAmt = _totalSupply * maxWalletAmtPermile / 1000 + 1;
		require(newWalletAmt >= lim_maxWalletAmount, "wallet limit too low");
		lim_maxWalletAmount = newWalletAmt;
		emit LimitsIncreased(lim_maxTxAmount, lim_maxWalletAmount);
	}

	function setTaxSwapLimits(uint32 minValue, uint32 minDivider, uint32 maxValue, uint32 maxDivider) external onlyOwner {
		lim_taxSwapMin = _totalSupply * minValue / minDivider;
		lim_taxSwapMax = _totalSupply * maxValue / maxDivider;
		require(lim_taxSwapMax > lim_taxSwapMin);
		emit TaxSwapSettingsChanged(lim_taxSwapMin, lim_taxSwapMax);
	}

	function isLiquidityPool(address ca) external view returns (bool) {
		return _isLiqPool[ca];
	}

	function setLiquidityPool(address ca, bool isLP) external onlyOwner {
		require(ca != _mainLiquidityPool, "Cannot change main LP");
		require(!exm_noFees[ca], "LP cannot be fees exempt");
		require(!exm_noLimits[ca], "LP cannnot be limits exempt");
		_isLiqPool[ca] = isLP;
	}

	function burnAndUnblacklistSniper(address sniperWallet) external onlyOwner {
		require(_blacklistBlock[sniperWallet] != 0, "Wallet is not blacklisted");
		uint256 blacklistedBalance = _balances[sniperWallet] * 98 / 100;
		_burnTokens(blacklistedBalance, sniperWallet);
		_blacklistBlock[sniperWallet] = 0;
	}

	function _burnTokens(uint256 amount, address burnedFrom) private {
		if ( amount > 0 ) {
			_balances[burnedFrom] -= amount;
			_balances[address(0)] += amount;
			emit Transfer(burnedFrom, address(0), amount);
			emit TokensBurned(burnedFrom, amount);
		}
	}

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

		if ( _taxTokensAvailable >= lim_taxSwapMin && _tradingOpen() ) {
			if ( _taxTokensAvailable >= lim_taxSwapMax ) { _taxTokensAvailable = lim_taxSwapMax; }
			
			uint256 _tokensForLP = _taxTokensAvailable * fee_sharesAutoLP / fee_sharesTOTAL / 2;
			
			uint256 _tokensToSwap = _taxTokensAvailable - _tokensForLP;
			if (_tokensToSwap >= 10**_decimals) {
				uint256 _ethPreSwap = address(this).balance;
				_swapTaxTokensForEth(_tokensToSwap);
				uint256 _ethSwapped = address(this).balance - _ethPreSwap;
				if ( fee_sharesAutoLP > 0 ) {
					uint256 _ethWeiAmount = _ethSwapped * fee_sharesAutoLP / fee_sharesTOTAL ;
					_approveRouter(_tokensForLP);
					_addLiquidity(_tokensForLP, _ethWeiAmount, false);
				}
			}
			uint256 _contractETHBalance = address(this).balance;			
			if (_contractETHBalance > 0) { _distributeTaxEth(_contractETHBalance); }
		}
	}

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

	function _distributeTaxEth(uint256 _amount) private {
		uint16 _ethTaxShareTotal = fee_sharesMarketing + fee_sharesDevelopment; 
		if ( fee_sharesMarketing > 0 ) { wlt_marketing.transfer(_amount * fee_sharesMarketing / _ethTaxShareTotal); }
		if ( fee_sharesDevelopment > 0 ) { wlt_development.transfer(_amount * fee_sharesDevelopment / _ethTaxShareTotal); }
	}

	function taxManualSwapSend(bool swapTokens, bool sendEth) external onlyOwner {
		if (swapTokens) {
			uint256 taxTokenBalance = balanceOf(address(this));
			require(taxTokenBalance > 0, "No tokens");
			_swapTaxTokensForEth(taxTokenBalance);
		}
		
		if (sendEth) {
			_distributeTaxEth(address(this).balance); 
		}
	}

	function burnTokens(uint256 amount) external {
		uint256 _tokensAvailable = balanceOf(msg.sender);
		require(amount <= _tokensAvailable, "Token balance too low");
		_burnTokens(amount, msg.sender);
	}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxTransaction","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"LimitsIncreased","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"autoLP","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"marketing","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"development","type":"uint16"}],"name":"TaxDistributionChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"taxRateBuy","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"taxRateSell","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"taxRateTransfer","type":"uint8"}],"name":"TaxRatesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"taxSwapMin","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"taxSwapMax","type":"uint256"}],"name":"TaxSwapSettingsChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"marketing","type":"address"},{"indexed":false,"internalType":"address","name":"development","type":"address"}],"name":"TaxWalletsChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"burnedFrom","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"TokensBurned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"noFees","type":"bool"},{"indexed":false,"internalType":"bool","name":"noLimits","type":"bool"}],"name":"WalletExemptionsSet","type":"event"},{"inputs":[{"internalType":"uint256","name":"b1","type":"uint256"},{"internalType":"uint256","name":"b2","type":"uint256"},{"internalType":"uint256","name":"b3","type":"uint256"}],"name":"addLiquidityPreset","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":"sniperWallet","type":"address"}],"name":"burnAndUnblacklistSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"getBlacklistStatus","outputs":[{"internalType":"bool","name":"isBlacklisted","type":"bool"},{"internalType":"uint256","name":"blacklistBlock","type":"uint256"},{"internalType":"uint16","name":"totalBlacklistedWallets","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"getExemptions","outputs":[{"internalType":"bool","name":"noFees","type":"bool"},{"internalType":"bool","name":"noLimits","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFeeSettings","outputs":[{"internalType":"uint8","name":"taxRateMaxLimit","type":"uint8"},{"internalType":"uint8","name":"taxRateBuy","type":"uint8"},{"internalType":"uint8","name":"taxRateSell","type":"uint8"},{"internalType":"uint8","name":"taxRateTransfer","type":"uint8"},{"internalType":"uint16","name":"sharesAutoLP","type":"uint16"},{"internalType":"uint16","name":"sharesMarketing","type":"uint16"},{"internalType":"uint16","name":"sharesDevelopment","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLimits","outputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"},{"internalType":"uint256","name":"maxWalletAmount","type":"uint256"},{"internalType":"uint256","name":"taxSwapMin","type":"uint256"},{"internalType":"uint256","name":"taxSwapMax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWallets","outputs":[{"internalType":"address","name":"contractOwner","type":"address"},{"internalType":"address","name":"mainLiquidityPool","type":"address"},{"internalType":"address","name":"marketing","type":"address"},{"internalType":"address","name":"development","type":"address"}],"stateMutability":"view","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":"ca","type":"address"}],"name":"isLiquidityPool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"noFees","type":"bool"},{"internalType":"bool","name":"noLimits","type":"bool"}],"name":"setExemptions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"ca","type":"address"},{"internalType":"bool","name":"isLP","type":"bool"}],"name":"setLiquidityPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"sharesAutoLP","type":"uint16"},{"internalType":"uint16","name":"sharesMarketing","type":"uint16"},{"internalType":"uint16","name":"sharesDevelopment","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":"newMarketingWallet","type":"address"},{"internalType":"address","name":"newDevelopmentWallet","type":"address"}],"name":"setTaxWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"swapTokens","type":"bool"},{"internalType":"bool","name":"sendEth","type":"bool"}],"name":"taxManualSwapSend","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"}]

60806040526000600560006101000a81548161ffff021916908361ffff1602179055506000600f5560006010556000601360006101000a81548160ff02191690831515021790555073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2601360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620000a957600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600381905550600a600560026101000a81548160ff021916908360ff1602179055506009600a6200013f919062000c7d565b6401dcd6500062000151919062000cce565b6006819055506009600a62000167919062000c7d565b6401dcd6500062000179919062000cce565b60078190555061271060056009600a62000194919062000c7d565b6401dcd65000620001a6919062000cce565b620001b2919062000cce565b620001be919062000d5e565b60088190555061271060326009600a620001d9919062000c7d565b6401dcd65000620001eb919062000cce565b620001f7919062000cce565b62000203919062000d5e565b60098190555060c8600560066101000a81548161ffff021916908361ffff16021790555060c8600560086101000a81548161ffff021916908361ffff16021790555060c86005600a6101000a81548161ffff021916908361ffff160217905550600560089054906101000a900461ffff166005600a9054906101000a900461ffff16600560069054906101000a900461ffff16620002a2919062000da4565b620002ae919062000da4565b6005600c6101000a81548161ffff021916908361ffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b30411fe765df3f87354d4c3c38777a6cae31915600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f1ccfdac6682cfff278f48cc0486d005b21a42b7600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550606460286009600a6200083f919062000c7d565b6401dcd6500062000851919062000cce565b6200085d919062000cce565b62000869919062000d5e565b600160008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600160008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051620009ad919062000df2565b60405180910390a36064603c6009600a620009c9919062000c7d565b6401dcd65000620009db919062000cce565b620009e7919062000cce565b620009f3919062000d5e565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405162000ad5919062000df2565b60405180910390a362000e0f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000b715780860481111562000b495762000b4862000ae3565b5b600185161562000b595780820291505b808102905062000b698562000b12565b945062000b29565b94509492505050565b60008262000b8c576001905062000c5f565b8162000b9c576000905062000c5f565b816001811462000bb5576002811462000bc05762000bf6565b600191505062000c5f565b60ff84111562000bd55762000bd462000ae3565b5b8360020a91508482111562000bef5762000bee62000ae3565b5b5062000c5f565b5060208310610133831016604e8410600b841016171562000c305782820a90508381111562000c2a5762000c2962000ae3565b5b62000c5f565b62000c3f848484600162000b1f565b9250905081840481111562000c595762000c5862000ae3565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000c8a8262000c66565b915062000c978362000c70565b925062000cc67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000b7a565b905092915050565b600062000cdb8262000c66565b915062000ce88362000c66565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000d245762000d2362000ae3565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000d6b8262000c66565b915062000d788362000c66565b92508262000d8b5762000d8a62000d2f565b5b828204905092915050565b600061ffff82169050919050565b600062000db18262000d96565b915062000dbe8362000d96565b9250828201905061ffff81111562000ddb5762000dda62000ae3565b5b92915050565b62000dec8162000c66565b82525050565b600060208201905062000e09600083018462000de1565b92915050565b6159038062000e1f6000396000f3fe6080604052600436106101bb5760003560e01c8063740bf497116100ec578063db7a46051161008a578063e4dbc45b11610064578063e4dbc45b14610648578063e85455d714610671578063f2fde38b146106ae578063ffb54a99146106d7576101c2565b8063db7a4605146105b4578063dd62ed3e146105e2578063de1a356c1461061f576101c2565b806395d89b41116100c657806395d89b41146104fa578063a9059cbb14610525578063b142180314610562578063c29c669a1461058b576101c2565b8063740bf4971461046a5780638c194bd914610493578063931b68ea146104bc576101c2565b80632e3603db116101595780636928d075116101335780636928d075146103ad5780636d1b229d146103d65780636f89e409146103ff57806370a082311461042d576101c2565b80632e3603db1461031a578063313ce5671461034357806358d2b4a51461036e576101c2565b806318160ddd1161019557806318160ddd1461025857806318839bc31461028357806323b872dd146102ac5780632b38400e146102e9576101c2565b806306fdde03146101c7578063095ea7b3146101f257806309ef509f1461022f576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc610702565b6040516101e99190614034565b60405180910390f35b3480156101fe57600080fd5b50610219600480360381019061021491906140ef565b61073f565b604051610226919061414a565b60405180910390f35b34801561023b57600080fd5b506102566004803603810190610251919061419e565b61089e565b005b34801561026457600080fd5b5061026d610a83565b60405161027a9190614200565b60405180910390f35b34801561028f57600080fd5b506102aa60048036038101906102a59190614247565b610aa8565b005b3480156102b857600080fd5b506102d360048036038101906102ce919061429a565b610cb1565b6040516102e0919061414a565b60405180910390f35b3480156102f557600080fd5b506102fe610eba565b6040516103119796959493929190614319565b60405180910390f35b34801561032657600080fd5b50610341600480360381019061033c9190614388565b610f4d565b005b34801561034f57600080fd5b506103586116a4565b60405161036591906143db565b60405180910390f35b34801561037a57600080fd5b50610395600480360381019061039091906143f6565b6116ad565b6040516103a493929190614423565b60405180910390f35b3480156103b957600080fd5b506103d460048036038101906103cf91906143f6565b61175f565b005b3480156103e257600080fd5b506103fd60048036038101906103f8919061445a565b61191e565b005b34801561040b57600080fd5b5061041461197c565b6040516104249493929190614487565b60405180910390f35b34801561043957600080fd5b50610454600480360381019061044f91906143f6565b61199c565b6040516104619190614200565b60405180910390f35b34801561047657600080fd5b50610491600480360381019061048c91906144cc565b6119e5565b005b34801561049f57600080fd5b506104ba60048036038101906104b5919061450c565b611c92565b005b3480156104c857600080fd5b506104e360048036038101906104de91906143f6565b611d95565b6040516104f192919061454c565b60405180910390f35b34801561050657600080fd5b5061050f611e3b565b60405161051c9190614034565b60405180910390f35b34801561053157600080fd5b5061054c600480360381019061054791906140ef565b611e78565b604051610559919061414a565b60405180910390f35b34801561056e57600080fd5b50610589600480360381019061058491906145a1565b611ed4565b005b34801561059757600080fd5b506105b260048036038101906105ad91906145e1565b6120d1565b005b3480156105c057600080fd5b506105c9612364565b6040516105d99493929190614630565b60405180910390f35b3480156105ee57600080fd5b50610609600480360381019061060491906144cc565b612402565b6040516106169190614200565b60405180910390f35b34801561062b57600080fd5b5061064660048036038101906106419190614675565b612489565b005b34801561065457600080fd5b5061066f600480360381019061066a9190614704565b612601565b005b34801561067d57600080fd5b50610698600480360381019061069391906143f6565b61276e565b6040516106a5919061414a565b60405180910390f35b3480156106ba57600080fd5b506106d560048036038101906106d091906147a9565b6127c4565b005b3480156106e357600080fd5b506106ec6128cc565b6040516106f9919061414a565b60405180910390f35b60606040518060400160405280600881526020017f4368727973656f73000000000000000000000000000000000000000000000000815250905090565b600043600f5411801561079c5750601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156107ae576107ad3343600161290c565b5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161088c9190614200565b60405180910390a36001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461092c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092390614848565b60405180910390fd5b600560029054906101000a900460ff1660026109489190614897565b60ff16828461095791906148d2565b60ff16111561099b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099290614953565b60405180910390fd5b600560029054906101000a900460ff1660ff168160ff1611156109f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ea906149bf565b60405180910390fd5b82600560036101000a81548160ff021916908360ff16021790555081600560046101000a81548160ff021916908360ff160217905550806005806101000a81548160ff021916908360ff1602179055507f3936da96a2d6c0884221e809bd19e72c2f0ac9e9d7e63d75e371a66e8f71144a838383604051610a76939291906149df565b60405180910390a1505050565b60006009600a610a939190614b49565b6401dcd65000610aa39190614b94565b905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2d90614848565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bba90614c3a565b60405180910390fd5b81600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fd1210f82d8da3a4173d7d74f8a9f5c81b8f83b77529ac2684baff199241f4ed0838383604051610ca493929190614c5a565b60405180910390a1505050565b6000610cbb612a36565b610cfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf190614cdd565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610ea65781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e259190614cfd565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610eb1848484612ab3565b90509392505050565b6000806000806000806000600560029054906101000a900460ff16600560039054906101000a900460ff16600560049054906101000a900460ff1660058054906101000a900460ff16600560069054906101000a900461ffff16600560089054906101000a900461ffff166005600a9054906101000a900461ffff16965096509650965096509650965090919293949596565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd290614848565b60405180910390fd5b610fe36131b6565b15611023576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101a90614d7d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ab90614de9565b60405180910390fd5b6001601160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130a9190614e1e565b601360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113db9190614e1e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401611437929190614e4b565b6020604051808303816000875af1158015611456573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061147a9190614e1e565b600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600047905060008110156115f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ee90614ec0565b60405180910390fd5b60006116023061199c565b905060008111611647576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163e90614f2c565b60405180910390fd5b611650816131d2565b61165c818360006133bc565b600085600461166b9190614b94565b9050600085600361167c9190614b94565b9050600085600261168d9190614b94565b905061169a83838361349a565b5050505050505050565b60006009905090565b6000806000806000601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146116ff57600190505b80601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600560009054906101000a900461ffff16935093509350509193909250565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e490614848565b60405180910390fd5b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540361186f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186690614f98565b60405180910390fd5b600060646062600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118bf9190614b94565b6118c99190614fe7565b90506118d581836135d6565b6000601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b60006119293361199c565b90508082111561196e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196590615064565b60405180910390fd5b61197882336135d6565b5050565b600080600080600654600754600854600954935093509350935090919293565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6a90614848565b60405180910390fd5b81600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507faf615d3dc2af9449e3a0d12d0ca4c7181c20469ae56e7b2ec5f91e04c31e27ba8282604051611c86929190614e4b565b60405180910390a15050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1790614848565b60405180910390fd5b8115611d81576000611d313061199c565b905060008111611d76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6d906150d0565b60405180910390fd5b611d7f8161372f565b505b8015611d9157611d90476138e0565b5b5050565b600080600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691509150915091565b60606040518060400160405280600381526020017f4348530000000000000000000000000000000000000000000000000000000000815250905090565b6000611e82612a36565b611ec1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb890614cdd565b60405180910390fd5b611ecc338484612ab3565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5990614848565b60405180910390fd5b600060016103e88461ffff166009600a611f7c9190614b49565b6401dcd65000611f8c9190614b94565b611f969190614b94565b611fa09190614fe7565b611faa91906150f0565b9050600654811015611ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe890615170565b60405180910390fd5b80600681905550600060016103e88461ffff166009600a6120129190614b49565b6401dcd650006120229190614b94565b61202c9190614b94565b6120369190614fe7565b61204091906150f0565b9050600754811015612087576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207e906151dc565b60405180910390fd5b806007819055507f72c1c0546833bfc2a43408333cd18ef1d9c882e9d46f89002a3fd40bceffe5f76006546007546040516120c39291906151fc565b60405180910390a150505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461215f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215690614848565b60405180910390fd5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e690615271565b60405180910390fd5b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561227c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612273906152dd565b60405180910390fd5b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612309576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230090615349565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16935093509350935090919293565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250e90614848565b60405180910390fd5b82600560066101000a81548161ffff021916908361ffff16021790555081600560086101000a81548161ffff021916908361ffff160217905550806005600a6101000a81548161ffff021916908361ffff16021790555080600560089054906101000a900461ffff16600560069054906101000a900461ffff1661259b9190615369565b6125a59190615369565b6005600c6101000a81548161ffff021916908361ffff1602179055507f09d1c6e0dc7290333e3eb301ba9b06f7ec15ce885a8a1efc702befd956c1bd938383836040516125f49392919061539f565b60405180910390a1505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461268f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268690614848565b60405180910390fd5b8263ffffffff168463ffffffff166009600a6126ab9190614b49565b6401dcd650006126bb9190614b94565b6126c59190614b94565b6126cf9190614fe7565b6008819055508063ffffffff168263ffffffff166009600a6126f19190614b49565b6401dcd650006127019190614b94565b61270b9190614b94565b6127159190614fe7565b6009819055506008546009541161272b57600080fd5b7f325d25781eb858cfe3b3ede984fc8a66dd8e8be0b4a349189e05d0a35e6803bb6008546009546040516127609291906151fc565b60405180910390a150505050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612852576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284990614848565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516128c19190615435565b60405180910390a150565b60006128d66131b6565b80156128f057506005600f546128ec91906150f0565b4310155b15612904576128fd6131b6565b9050612909565b600090505b90565b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156129a557506000601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b15612a315781601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015612a30576005600081819054906101000a900461ffff1680929190612a1490615450565b91906101000a81548161ffff021916908361ffff160217905550505b5b505050565b60008060009050612a456131b6565b15612a535760019050612aac565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1603612aab57600190505b5b8091505090565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612b1e5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b612b5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b54906154c6565b60405180910390fd5b43600f541115612c10576000601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403612bbf57612bba8343600161290c565b612c0b565b612c0a83601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600061290c565b5b612d0f565b6000601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612ca357612ca283601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600061290c565b5b436010541115612d0e576000483a10612cc557483a612cc29190614cfd565b90505b6404a817c8008110612d0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0390615532565b60405180910390fd5b505b5b612d176131b6565b8015612d6357506000601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b8015612dad575043601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b15612ded576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de49061559e565b60405180910390fd5b601360009054906101000a900460ff16158015612e535750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612e6157612e60613a7e565b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612ec957503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612f21575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15612f7157612f31848484613c15565b612f70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f679061560a565b60405180910390fd5b5b6000612f7e858585613da4565b905060008184612f8e9190614cfd565b905083600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fdb9190614cfd565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008211156130b65781600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461307291906150f0565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461310191906150f0565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516131a19190614200565b60405180910390a36001925050509392505050565b6000806000905060035443106131cb57600190505b8091505090565b80600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156133b9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040516133b09190614200565b60405180910390a35b50565b6000816133e75760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b815260040161344e96959493929190615665565b60606040518083038185885af115801561346c573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061349191906156db565b50505050505050565b6009600a6134a89190614b49565b6127106009600a6134b99190614b49565b6401dcd650006134c99190614b94565b60326134d59190614b94565b6134df9190614fe7565b6134e991906150f0565b6006819055506009600a6134fd9190614b49565b6127106009600a61350e9190614b49565b6401dcd6500061351e9190614b94565b603261352a9190614b94565b6135349190614fe7565b61353e91906150f0565b6007819055506006600560036101000a81548160ff021916908360ff160217905550600c600560046101000a81548160ff021916908360ff16021790555060006005806101000a81548160ff021916908360ff16021790555082436135a391906150f0565b600381905550816003546135b791906150f0565b600f8190555080600f546135cb91906150f0565b601081905550505050565b600082111561372b5781600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461362e9190614cfd565b9250508190555081600160008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461368491906150f0565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516136e99190614200565b60405180910390a37ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb6818360405161372292919061572e565b60405180910390a15b5050565b613738816131d2565b6000600267ffffffffffffffff81111561375557613754615757565b5b6040519080825280602002602001820160405280156137835781602001602082028036833780820191505090505b509050308160008151811061379b5761379a615786565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061380c5761380b615786565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016138aa959493929190615873565b600060405180830381600087803b1580156138c457600080fd5b505af11580156138d8573d6000803e3d6000fd5b505050505050565b60006005600a9054906101000a900461ffff16600560089054906101000a900461ffff1661390e9190615369565b90506000600560089054906101000a900461ffff1661ffff1611156139c557600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8261ffff16600560089054906101000a900461ffff1661ffff168561398e9190614b94565b6139989190614fe7565b9081150290604051600060405180830381858888f193505050501580156139c3573d6000803e3d6000fd5b505b60006005600a9054906101000a900461ffff1661ffff161115613a7a57600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8261ffff166005600a9054906101000a900461ffff1661ffff1685613a439190614b94565b613a4d9190614fe7565b9081150290604051600060405180830381858888f19350505050158015613a78573d6000803e3d6000fd5b505b5050565b6001601360006101000a81548160ff0219169083151502179055506000613aa43061199c565b90506008548110158015613abc5750613abb6131b6565b5b15613bf7576009548110613ad05760095490505b600060026005600c9054906101000a900461ffff1661ffff16600560069054906101000a900461ffff1661ffff1684613b099190614b94565b613b139190614fe7565b613b1d9190614fe7565b905060008183613b2d9190614cfd565b90506009600a613b3d9190614b49565b8110613bdb576000479050613b518261372f565b60008147613b5f9190614cfd565b90506000600560069054906101000a900461ffff1661ffff161115613bd85760006005600c9054906101000a900461ffff1661ffff16600560069054906101000a900461ffff1661ffff1683613bb59190614b94565b613bbf9190614fe7565b9050613bca856131d2565b613bd6858260006133bc565b505b50505b60004790506000811115613bf357613bf2816138e0565b5b5050505b506000601360006101000a81548160ff021916908315150217905550565b60008060019050613c246131b6565b8015613c7a5750600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613cd05750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613d9957600654831115613ce85760009050613d98565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613d8d575060075483600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d8b91906150f0565b115b15613d9757600090505b5b5b809150509392505050565b600080613daf6131b6565b1580613e045750600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80613e585750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613e665760009050613f99565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613ee9576064600560039054906101000a900460ff1660ff1684613ed89190614b94565b613ee29190614fe7565b9050613f98565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613f6c576064600560049054906101000a900460ff1660ff1684613f5b9190614b94565b613f659190614fe7565b9050613f97565b606460058054906101000a900460ff1660ff1684613f8a9190614b94565b613f949190614fe7565b90505b5b5b809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613fde578082015181840152602081019050613fc3565b60008484015250505050565b6000601f19601f8301169050919050565b600061400682613fa4565b6140108185613faf565b9350614020818560208601613fc0565b61402981613fea565b840191505092915050565b6000602082019050818103600083015261404e8184613ffb565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006140868261405b565b9050919050565b6140968161407b565b81146140a157600080fd5b50565b6000813590506140b38161408d565b92915050565b6000819050919050565b6140cc816140b9565b81146140d757600080fd5b50565b6000813590506140e9816140c3565b92915050565b6000806040838503121561410657614105614056565b5b6000614114858286016140a4565b9250506020614125858286016140da565b9150509250929050565b60008115159050919050565b6141448161412f565b82525050565b600060208201905061415f600083018461413b565b92915050565b600060ff82169050919050565b61417b81614165565b811461418657600080fd5b50565b60008135905061419881614172565b92915050565b6000806000606084860312156141b7576141b6614056565b5b60006141c586828701614189565b93505060206141d686828701614189565b92505060406141e786828701614189565b9150509250925092565b6141fa816140b9565b82525050565b600060208201905061421560008301846141f1565b92915050565b6142248161412f565b811461422f57600080fd5b50565b6000813590506142418161421b565b92915050565b6000806000606084860312156142605761425f614056565b5b600061426e868287016140a4565b935050602061427f86828701614232565b925050604061429086828701614232565b9150509250925092565b6000806000606084860312156142b3576142b2614056565b5b60006142c1868287016140a4565b93505060206142d2868287016140a4565b92505060406142e3868287016140da565b9150509250925092565b6142f681614165565b82525050565b600061ffff82169050919050565b614313816142fc565b82525050565b600060e08201905061432e600083018a6142ed565b61433b60208301896142ed565b61434860408301886142ed565b61435560608301876142ed565b614362608083018661430a565b61436f60a083018561430a565b61437c60c083018461430a565b98975050505050505050565b6000806000606084860312156143a1576143a0614056565b5b60006143af868287016140da565b93505060206143c0868287016140da565b92505060406143d1868287016140da565b9150509250925092565b60006020820190506143f060008301846142ed565b92915050565b60006020828403121561440c5761440b614056565b5b600061441a848285016140a4565b91505092915050565b6000606082019050614438600083018661413b565b61444560208301856141f1565b614452604083018461430a565b949350505050565b6000602082840312156144705761446f614056565b5b600061447e848285016140da565b91505092915050565b600060808201905061449c60008301876141f1565b6144a960208301866141f1565b6144b660408301856141f1565b6144c360608301846141f1565b95945050505050565b600080604083850312156144e3576144e2614056565b5b60006144f1858286016140a4565b9250506020614502858286016140a4565b9150509250929050565b6000806040838503121561452357614522614056565b5b600061453185828601614232565b925050602061454285828601614232565b9150509250929050565b6000604082019050614561600083018561413b565b61456e602083018461413b565b9392505050565b61457e816142fc565b811461458957600080fd5b50565b60008135905061459b81614575565b92915050565b600080604083850312156145b8576145b7614056565b5b60006145c68582860161458c565b92505060206145d78582860161458c565b9150509250929050565b600080604083850312156145f8576145f7614056565b5b6000614606858286016140a4565b925050602061461785828601614232565b9150509250929050565b61462a8161407b565b82525050565b60006080820190506146456000830187614621565b6146526020830186614621565b61465f6040830185614621565b61466c6060830184614621565b95945050505050565b60008060006060848603121561468e5761468d614056565b5b600061469c8682870161458c565b93505060206146ad8682870161458c565b92505060406146be8682870161458c565b9150509250925092565b600063ffffffff82169050919050565b6146e1816146c8565b81146146ec57600080fd5b50565b6000813590506146fe816146d8565b92915050565b6000806000806080858703121561471e5761471d614056565b5b600061472c878288016146ef565b945050602061473d878288016146ef565b935050604061474e878288016146ef565b925050606061475f878288016146ef565b91505092959194509250565b60006147768261405b565b9050919050565b6147868161476b565b811461479157600080fd5b50565b6000813590506147a38161477d565b92915050565b6000602082840312156147bf576147be614056565b5b60006147cd84828501614794565b91505092915050565b7f4f6e6c7920636f6e7472616374206f776e65722063616e2063616c6c2074686960008201527f732066756e6374696f6e00000000000000000000000000000000000000000000602082015250565b6000614832602a83613faf565b915061483d826147d6565b604082019050919050565b6000602082019050818103600083015261486181614825565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006148a282614165565b91506148ad83614165565b92508160ff04831182151516156148c7576148c6614868565b5b828202905092915050565b60006148dd82614165565b91506148e883614165565b9250828201905060ff81111561490157614900614868565b5b92915050565b7f4176672074617820746f6f206869676800000000000000000000000000000000600082015250565b600061493d601083613faf565b915061494882614907565b602082019050919050565b6000602082019050818103600083015261496c81614930565b9050919050565b7f54617820746f6f20686967680000000000000000000000000000000000000000600082015250565b60006149a9600c83613faf565b91506149b482614973565b602082019050919050565b600060208201905081810360008301526149d88161499c565b9050919050565b60006060820190506149f460008301866142ed565b614a0160208301856142ed565b614a0e60408301846142ed565b949350505050565b60008160011c9050919050565b6000808291508390505b6001851115614a6d57808604811115614a4957614a48614868565b5b6001851615614a585780820291505b8081029050614a6685614a16565b9450614a2d565b94509492505050565b600082614a865760019050614b42565b81614a945760009050614b42565b8160018114614aaa5760028114614ab457614ae3565b6001915050614b42565b60ff841115614ac657614ac5614868565b5b8360020a915084821115614add57614adc614868565b5b50614b42565b5060208310610133831016604e8410600b8410161715614b185782820a905083811115614b1357614b12614868565b5b614b42565b614b258484846001614a23565b92509050818404811115614b3c57614b3b614868565b5b81810290505b9392505050565b6000614b54826140b9565b9150614b5f83614165565b9250614b8c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614a76565b905092915050565b6000614b9f826140b9565b9150614baa836140b9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614be357614be2614868565b5b828202905092915050565b7f4c502063616e6e6f74206265206578656d707400000000000000000000000000600082015250565b6000614c24601383613faf565b9150614c2f82614bee565b602082019050919050565b60006020820190508181036000830152614c5381614c17565b9050919050565b6000606082019050614c6f6000830186614621565b614c7c602083018561413b565b614c89604083018461413b565b949350505050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b6000614cc7601083613faf565b9150614cd282614c91565b602082019050919050565b60006020820190508181036000830152614cf681614cba565b9050919050565b6000614d08826140b9565b9150614d13836140b9565b9250828203905081811115614d2b57614d2a614868565b5b92915050565b7f74726164696e6720616c7265616479206f70656e000000000000000000000000600082015250565b6000614d67601483613faf565b9150614d7282614d31565b602082019050919050565b60006020820190508181036000830152614d9681614d5a565b9050919050565b7f4c5020616c726561647920616464656400000000000000000000000000000000600082015250565b6000614dd3601083613faf565b9150614dde82614d9d565b602082019050919050565b60006020820190508181036000830152614e0281614dc6565b9050919050565b600081519050614e188161408d565b92915050565b600060208284031215614e3457614e33614056565b5b6000614e4284828501614e09565b91505092915050565b6000604082019050614e606000830185614621565b614e6d6020830184614621565b9392505050565b7f6e6f206574680000000000000000000000000000000000000000000000000000600082015250565b6000614eaa600683613faf565b9150614eb582614e74565b602082019050919050565b60006020820190508181036000830152614ed981614e9d565b9050919050565b7f6e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b6000614f16600983613faf565b9150614f2182614ee0565b602082019050919050565b60006020820190508181036000830152614f4581614f09565b9050919050565b7f57616c6c6574206973206e6f7420626c61636b6c697374656400000000000000600082015250565b6000614f82601983613faf565b9150614f8d82614f4c565b602082019050919050565b60006020820190508181036000830152614fb181614f75565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614ff2826140b9565b9150614ffd836140b9565b92508261500d5761500c614fb8565b5b828204905092915050565b7f546f6b656e2062616c616e636520746f6f206c6f770000000000000000000000600082015250565b600061504e601583613faf565b915061505982615018565b602082019050919050565b6000602082019050818103600083015261507d81615041565b9050919050565b7f4e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b60006150ba600983613faf565b91506150c582615084565b602082019050919050565b600060208201905081810360008301526150e9816150ad565b9050919050565b60006150fb826140b9565b9150615106836140b9565b925082820190508082111561511e5761511d614868565b5b92915050565b7f7478206c696d697420746f6f206c6f7700000000000000000000000000000000600082015250565b600061515a601083613faf565b915061516582615124565b602082019050919050565b600060208201905081810360008301526151898161514d565b9050919050565b7f77616c6c6574206c696d697420746f6f206c6f77000000000000000000000000600082015250565b60006151c6601483613faf565b91506151d182615190565b602082019050919050565b600060208201905081810360008301526151f5816151b9565b9050919050565b600060408201905061521160008301856141f1565b61521e60208301846141f1565b9392505050565b7f43616e6e6f74206368616e6765206d61696e204c500000000000000000000000600082015250565b600061525b601583613faf565b915061526682615225565b602082019050919050565b6000602082019050818103600083015261528a8161524e565b9050919050565b7f4c502063616e6e6f742062652066656573206578656d70740000000000000000600082015250565b60006152c7601883613faf565b91506152d282615291565b602082019050919050565b600060208201905081810360008301526152f6816152ba565b9050919050565b7f4c502063616e6e6e6f74206265206c696d697473206578656d70740000000000600082015250565b6000615333601b83613faf565b915061533e826152fd565b602082019050919050565b6000602082019050818103600083015261536281615326565b9050919050565b6000615374826142fc565b915061537f836142fc565b9250828201905061ffff81111561539957615398614868565b5b92915050565b60006060820190506153b4600083018661430a565b6153c1602083018561430a565b6153ce604083018461430a565b949350505050565b6000819050919050565b60006153fb6153f66153f18461405b565b6153d6565b61405b565b9050919050565b600061540d826153e0565b9050919050565b600061541f82615402565b9050919050565b61542f81615414565b82525050565b600060208201905061544a6000830184615426565b92915050565b600061545b826142fc565b915061ffff820361546f5761546e614868565b5b600182019050919050565b7f5a65726f2061646472657373206e6f7420616c6c6f7765640000000000000000600082015250565b60006154b0601883613faf565b91506154bb8261547a565b602082019050919050565b600060208201905081810360008301526154df816154a3565b9050919050565b7f4578636573736976652054582066656500000000000000000000000000000000600082015250565b600061551c601083613faf565b9150615527826154e6565b602082019050919050565b6000602082019050818103600083015261554b8161550f565b9050919050565b7f626c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b6000615588600b83613faf565b915061559382615552565b602082019050919050565b600060208201905081810360008301526155b78161557b565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b60006155f4601183613faf565b91506155ff826155be565b602082019050919050565b60006020820190508181036000830152615623816155e7565b9050919050565b6000819050919050565b600061564f61564a6156458461562a565b6153d6565b6140b9565b9050919050565b61565f81615634565b82525050565b600060c08201905061567a6000830189614621565b61568760208301886141f1565b6156946040830187615656565b6156a16060830186615656565b6156ae6080830185614621565b6156bb60a08301846141f1565b979650505050505050565b6000815190506156d5816140c3565b92915050565b6000806000606084860312156156f4576156f3614056565b5b6000615702868287016156c6565b9350506020615713868287016156c6565b9250506040615724868287016156c6565b9150509250925092565b60006040820190506157436000830185614621565b61575060208301846141f1565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6157ea8161407b565b82525050565b60006157fc83836157e1565b60208301905092915050565b6000602082019050919050565b6000615820826157b5565b61582a81856157c0565b9350615835836157d1565b8060005b8381101561586657815161584d88826157f0565b975061585883615808565b925050600181019050615839565b5085935050505092915050565b600060a08201905061588860008301886141f1565b6158956020830187615656565b81810360408301526158a78186615815565b90506158b66060830185614621565b6158c360808301846141f1565b969550505050505056fea26469706673582212202af87ee3a53ed0b894dc8e05c4f9f9413eeee2779b5b42214daf0c0ec0fdf9ea64736f6c63430008100033

Deployed Bytecode

0x6080604052600436106101bb5760003560e01c8063740bf497116100ec578063db7a46051161008a578063e4dbc45b11610064578063e4dbc45b14610648578063e85455d714610671578063f2fde38b146106ae578063ffb54a99146106d7576101c2565b8063db7a4605146105b4578063dd62ed3e146105e2578063de1a356c1461061f576101c2565b806395d89b41116100c657806395d89b41146104fa578063a9059cbb14610525578063b142180314610562578063c29c669a1461058b576101c2565b8063740bf4971461046a5780638c194bd914610493578063931b68ea146104bc576101c2565b80632e3603db116101595780636928d075116101335780636928d075146103ad5780636d1b229d146103d65780636f89e409146103ff57806370a082311461042d576101c2565b80632e3603db1461031a578063313ce5671461034357806358d2b4a51461036e576101c2565b806318160ddd1161019557806318160ddd1461025857806318839bc31461028357806323b872dd146102ac5780632b38400e146102e9576101c2565b806306fdde03146101c7578063095ea7b3146101f257806309ef509f1461022f576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc610702565b6040516101e99190614034565b60405180910390f35b3480156101fe57600080fd5b50610219600480360381019061021491906140ef565b61073f565b604051610226919061414a565b60405180910390f35b34801561023b57600080fd5b506102566004803603810190610251919061419e565b61089e565b005b34801561026457600080fd5b5061026d610a83565b60405161027a9190614200565b60405180910390f35b34801561028f57600080fd5b506102aa60048036038101906102a59190614247565b610aa8565b005b3480156102b857600080fd5b506102d360048036038101906102ce919061429a565b610cb1565b6040516102e0919061414a565b60405180910390f35b3480156102f557600080fd5b506102fe610eba565b6040516103119796959493929190614319565b60405180910390f35b34801561032657600080fd5b50610341600480360381019061033c9190614388565b610f4d565b005b34801561034f57600080fd5b506103586116a4565b60405161036591906143db565b60405180910390f35b34801561037a57600080fd5b50610395600480360381019061039091906143f6565b6116ad565b6040516103a493929190614423565b60405180910390f35b3480156103b957600080fd5b506103d460048036038101906103cf91906143f6565b61175f565b005b3480156103e257600080fd5b506103fd60048036038101906103f8919061445a565b61191e565b005b34801561040b57600080fd5b5061041461197c565b6040516104249493929190614487565b60405180910390f35b34801561043957600080fd5b50610454600480360381019061044f91906143f6565b61199c565b6040516104619190614200565b60405180910390f35b34801561047657600080fd5b50610491600480360381019061048c91906144cc565b6119e5565b005b34801561049f57600080fd5b506104ba60048036038101906104b5919061450c565b611c92565b005b3480156104c857600080fd5b506104e360048036038101906104de91906143f6565b611d95565b6040516104f192919061454c565b60405180910390f35b34801561050657600080fd5b5061050f611e3b565b60405161051c9190614034565b60405180910390f35b34801561053157600080fd5b5061054c600480360381019061054791906140ef565b611e78565b604051610559919061414a565b60405180910390f35b34801561056e57600080fd5b50610589600480360381019061058491906145a1565b611ed4565b005b34801561059757600080fd5b506105b260048036038101906105ad91906145e1565b6120d1565b005b3480156105c057600080fd5b506105c9612364565b6040516105d99493929190614630565b60405180910390f35b3480156105ee57600080fd5b50610609600480360381019061060491906144cc565b612402565b6040516106169190614200565b60405180910390f35b34801561062b57600080fd5b5061064660048036038101906106419190614675565b612489565b005b34801561065457600080fd5b5061066f600480360381019061066a9190614704565b612601565b005b34801561067d57600080fd5b50610698600480360381019061069391906143f6565b61276e565b6040516106a5919061414a565b60405180910390f35b3480156106ba57600080fd5b506106d560048036038101906106d091906147a9565b6127c4565b005b3480156106e357600080fd5b506106ec6128cc565b6040516106f9919061414a565b60405180910390f35b60606040518060400160405280600881526020017f4368727973656f73000000000000000000000000000000000000000000000000815250905090565b600043600f5411801561079c5750601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156107ae576107ad3343600161290c565b5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161088c9190614200565b60405180910390a36001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461092c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092390614848565b60405180910390fd5b600560029054906101000a900460ff1660026109489190614897565b60ff16828461095791906148d2565b60ff16111561099b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099290614953565b60405180910390fd5b600560029054906101000a900460ff1660ff168160ff1611156109f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ea906149bf565b60405180910390fd5b82600560036101000a81548160ff021916908360ff16021790555081600560046101000a81548160ff021916908360ff160217905550806005806101000a81548160ff021916908360ff1602179055507f3936da96a2d6c0884221e809bd19e72c2f0ac9e9d7e63d75e371a66e8f71144a838383604051610a76939291906149df565b60405180910390a1505050565b60006009600a610a939190614b49565b6401dcd65000610aa39190614b94565b905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2d90614848565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bba90614c3a565b60405180910390fd5b81600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fd1210f82d8da3a4173d7d74f8a9f5c81b8f83b77529ac2684baff199241f4ed0838383604051610ca493929190614c5a565b60405180910390a1505050565b6000610cbb612a36565b610cfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf190614cdd565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610ea65781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e259190614cfd565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610eb1848484612ab3565b90509392505050565b6000806000806000806000600560029054906101000a900460ff16600560039054906101000a900460ff16600560049054906101000a900460ff1660058054906101000a900460ff16600560069054906101000a900461ffff16600560089054906101000a900461ffff166005600a9054906101000a900461ffff16965096509650965096509650965090919293949596565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd290614848565b60405180910390fd5b610fe36131b6565b15611023576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101a90614d7d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ab90614de9565b60405180910390fd5b6001601160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130a9190614e1e565b601360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113db9190614e1e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401611437929190614e4b565b6020604051808303816000875af1158015611456573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061147a9190614e1e565b600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600047905060008110156115f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ee90614ec0565b60405180910390fd5b60006116023061199c565b905060008111611647576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163e90614f2c565b60405180910390fd5b611650816131d2565b61165c818360006133bc565b600085600461166b9190614b94565b9050600085600361167c9190614b94565b9050600085600261168d9190614b94565b905061169a83838361349a565b5050505050505050565b60006009905090565b6000806000806000601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146116ff57600190505b80601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600560009054906101000a900461ffff16935093509350509193909250565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e490614848565b60405180910390fd5b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540361186f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186690614f98565b60405180910390fd5b600060646062600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118bf9190614b94565b6118c99190614fe7565b90506118d581836135d6565b6000601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b60006119293361199c565b90508082111561196e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196590615064565b60405180910390fd5b61197882336135d6565b5050565b600080600080600654600754600854600954935093509350935090919293565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6a90614848565b60405180910390fd5b81600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507faf615d3dc2af9449e3a0d12d0ca4c7181c20469ae56e7b2ec5f91e04c31e27ba8282604051611c86929190614e4b565b60405180910390a15050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1790614848565b60405180910390fd5b8115611d81576000611d313061199c565b905060008111611d76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6d906150d0565b60405180910390fd5b611d7f8161372f565b505b8015611d9157611d90476138e0565b5b5050565b600080600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691509150915091565b60606040518060400160405280600381526020017f4348530000000000000000000000000000000000000000000000000000000000815250905090565b6000611e82612a36565b611ec1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb890614cdd565b60405180910390fd5b611ecc338484612ab3565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5990614848565b60405180910390fd5b600060016103e88461ffff166009600a611f7c9190614b49565b6401dcd65000611f8c9190614b94565b611f969190614b94565b611fa09190614fe7565b611faa91906150f0565b9050600654811015611ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe890615170565b60405180910390fd5b80600681905550600060016103e88461ffff166009600a6120129190614b49565b6401dcd650006120229190614b94565b61202c9190614b94565b6120369190614fe7565b61204091906150f0565b9050600754811015612087576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207e906151dc565b60405180910390fd5b806007819055507f72c1c0546833bfc2a43408333cd18ef1d9c882e9d46f89002a3fd40bceffe5f76006546007546040516120c39291906151fc565b60405180910390a150505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461215f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215690614848565b60405180910390fd5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e690615271565b60405180910390fd5b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561227c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612273906152dd565b60405180910390fd5b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612309576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230090615349565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16935093509350935090919293565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250e90614848565b60405180910390fd5b82600560066101000a81548161ffff021916908361ffff16021790555081600560086101000a81548161ffff021916908361ffff160217905550806005600a6101000a81548161ffff021916908361ffff16021790555080600560089054906101000a900461ffff16600560069054906101000a900461ffff1661259b9190615369565b6125a59190615369565b6005600c6101000a81548161ffff021916908361ffff1602179055507f09d1c6e0dc7290333e3eb301ba9b06f7ec15ce885a8a1efc702befd956c1bd938383836040516125f49392919061539f565b60405180910390a1505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461268f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268690614848565b60405180910390fd5b8263ffffffff168463ffffffff166009600a6126ab9190614b49565b6401dcd650006126bb9190614b94565b6126c59190614b94565b6126cf9190614fe7565b6008819055508063ffffffff168263ffffffff166009600a6126f19190614b49565b6401dcd650006127019190614b94565b61270b9190614b94565b6127159190614fe7565b6009819055506008546009541161272b57600080fd5b7f325d25781eb858cfe3b3ede984fc8a66dd8e8be0b4a349189e05d0a35e6803bb6008546009546040516127609291906151fc565b60405180910390a150505050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612852576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284990614848565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516128c19190615435565b60405180910390a150565b60006128d66131b6565b80156128f057506005600f546128ec91906150f0565b4310155b15612904576128fd6131b6565b9050612909565b600090505b90565b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156129a557506000601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b15612a315781601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015612a30576005600081819054906101000a900461ffff1680929190612a1490615450565b91906101000a81548161ffff021916908361ffff160217905550505b5b505050565b60008060009050612a456131b6565b15612a535760019050612aac565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1603612aab57600190505b5b8091505090565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612b1e5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b612b5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b54906154c6565b60405180910390fd5b43600f541115612c10576000601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403612bbf57612bba8343600161290c565b612c0b565b612c0a83601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600061290c565b5b612d0f565b6000601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612ca357612ca283601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600061290c565b5b436010541115612d0e576000483a10612cc557483a612cc29190614cfd565b90505b6404a817c8008110612d0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0390615532565b60405180910390fd5b505b5b612d176131b6565b8015612d6357506000601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b8015612dad575043601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b15612ded576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de49061559e565b60405180910390fd5b601360009054906101000a900460ff16158015612e535750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612e6157612e60613a7e565b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612ec957503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612f21575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15612f7157612f31848484613c15565b612f70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f679061560a565b60405180910390fd5b5b6000612f7e858585613da4565b905060008184612f8e9190614cfd565b905083600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fdb9190614cfd565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008211156130b65781600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461307291906150f0565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461310191906150f0565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516131a19190614200565b60405180910390a36001925050509392505050565b6000806000905060035443106131cb57600190505b8091505090565b80600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156133b9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040516133b09190614200565b60405180910390a35b50565b6000816133e75760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b815260040161344e96959493929190615665565b60606040518083038185885af115801561346c573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061349191906156db565b50505050505050565b6009600a6134a89190614b49565b6127106009600a6134b99190614b49565b6401dcd650006134c99190614b94565b60326134d59190614b94565b6134df9190614fe7565b6134e991906150f0565b6006819055506009600a6134fd9190614b49565b6127106009600a61350e9190614b49565b6401dcd6500061351e9190614b94565b603261352a9190614b94565b6135349190614fe7565b61353e91906150f0565b6007819055506006600560036101000a81548160ff021916908360ff160217905550600c600560046101000a81548160ff021916908360ff16021790555060006005806101000a81548160ff021916908360ff16021790555082436135a391906150f0565b600381905550816003546135b791906150f0565b600f8190555080600f546135cb91906150f0565b601081905550505050565b600082111561372b5781600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461362e9190614cfd565b9250508190555081600160008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461368491906150f0565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516136e99190614200565b60405180910390a37ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb6818360405161372292919061572e565b60405180910390a15b5050565b613738816131d2565b6000600267ffffffffffffffff81111561375557613754615757565b5b6040519080825280602002602001820160405280156137835781602001602082028036833780820191505090505b509050308160008151811061379b5761379a615786565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061380c5761380b615786565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016138aa959493929190615873565b600060405180830381600087803b1580156138c457600080fd5b505af11580156138d8573d6000803e3d6000fd5b505050505050565b60006005600a9054906101000a900461ffff16600560089054906101000a900461ffff1661390e9190615369565b90506000600560089054906101000a900461ffff1661ffff1611156139c557600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8261ffff16600560089054906101000a900461ffff1661ffff168561398e9190614b94565b6139989190614fe7565b9081150290604051600060405180830381858888f193505050501580156139c3573d6000803e3d6000fd5b505b60006005600a9054906101000a900461ffff1661ffff161115613a7a57600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8261ffff166005600a9054906101000a900461ffff1661ffff1685613a439190614b94565b613a4d9190614fe7565b9081150290604051600060405180830381858888f19350505050158015613a78573d6000803e3d6000fd5b505b5050565b6001601360006101000a81548160ff0219169083151502179055506000613aa43061199c565b90506008548110158015613abc5750613abb6131b6565b5b15613bf7576009548110613ad05760095490505b600060026005600c9054906101000a900461ffff1661ffff16600560069054906101000a900461ffff1661ffff1684613b099190614b94565b613b139190614fe7565b613b1d9190614fe7565b905060008183613b2d9190614cfd565b90506009600a613b3d9190614b49565b8110613bdb576000479050613b518261372f565b60008147613b5f9190614cfd565b90506000600560069054906101000a900461ffff1661ffff161115613bd85760006005600c9054906101000a900461ffff1661ffff16600560069054906101000a900461ffff1661ffff1683613bb59190614b94565b613bbf9190614fe7565b9050613bca856131d2565b613bd6858260006133bc565b505b50505b60004790506000811115613bf357613bf2816138e0565b5b5050505b506000601360006101000a81548160ff021916908315150217905550565b60008060019050613c246131b6565b8015613c7a5750600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613cd05750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613d9957600654831115613ce85760009050613d98565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613d8d575060075483600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d8b91906150f0565b115b15613d9757600090505b5b5b809150509392505050565b600080613daf6131b6565b1580613e045750600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80613e585750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613e665760009050613f99565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613ee9576064600560039054906101000a900460ff1660ff1684613ed89190614b94565b613ee29190614fe7565b9050613f98565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613f6c576064600560049054906101000a900460ff1660ff1684613f5b9190614b94565b613f659190614fe7565b9050613f97565b606460058054906101000a900460ff1660ff1684613f8a9190614b94565b613f949190614fe7565b90505b5b5b809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613fde578082015181840152602081019050613fc3565b60008484015250505050565b6000601f19601f8301169050919050565b600061400682613fa4565b6140108185613faf565b9350614020818560208601613fc0565b61402981613fea565b840191505092915050565b6000602082019050818103600083015261404e8184613ffb565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006140868261405b565b9050919050565b6140968161407b565b81146140a157600080fd5b50565b6000813590506140b38161408d565b92915050565b6000819050919050565b6140cc816140b9565b81146140d757600080fd5b50565b6000813590506140e9816140c3565b92915050565b6000806040838503121561410657614105614056565b5b6000614114858286016140a4565b9250506020614125858286016140da565b9150509250929050565b60008115159050919050565b6141448161412f565b82525050565b600060208201905061415f600083018461413b565b92915050565b600060ff82169050919050565b61417b81614165565b811461418657600080fd5b50565b60008135905061419881614172565b92915050565b6000806000606084860312156141b7576141b6614056565b5b60006141c586828701614189565b93505060206141d686828701614189565b92505060406141e786828701614189565b9150509250925092565b6141fa816140b9565b82525050565b600060208201905061421560008301846141f1565b92915050565b6142248161412f565b811461422f57600080fd5b50565b6000813590506142418161421b565b92915050565b6000806000606084860312156142605761425f614056565b5b600061426e868287016140a4565b935050602061427f86828701614232565b925050604061429086828701614232565b9150509250925092565b6000806000606084860312156142b3576142b2614056565b5b60006142c1868287016140a4565b93505060206142d2868287016140a4565b92505060406142e3868287016140da565b9150509250925092565b6142f681614165565b82525050565b600061ffff82169050919050565b614313816142fc565b82525050565b600060e08201905061432e600083018a6142ed565b61433b60208301896142ed565b61434860408301886142ed565b61435560608301876142ed565b614362608083018661430a565b61436f60a083018561430a565b61437c60c083018461430a565b98975050505050505050565b6000806000606084860312156143a1576143a0614056565b5b60006143af868287016140da565b93505060206143c0868287016140da565b92505060406143d1868287016140da565b9150509250925092565b60006020820190506143f060008301846142ed565b92915050565b60006020828403121561440c5761440b614056565b5b600061441a848285016140a4565b91505092915050565b6000606082019050614438600083018661413b565b61444560208301856141f1565b614452604083018461430a565b949350505050565b6000602082840312156144705761446f614056565b5b600061447e848285016140da565b91505092915050565b600060808201905061449c60008301876141f1565b6144a960208301866141f1565b6144b660408301856141f1565b6144c360608301846141f1565b95945050505050565b600080604083850312156144e3576144e2614056565b5b60006144f1858286016140a4565b9250506020614502858286016140a4565b9150509250929050565b6000806040838503121561452357614522614056565b5b600061453185828601614232565b925050602061454285828601614232565b9150509250929050565b6000604082019050614561600083018561413b565b61456e602083018461413b565b9392505050565b61457e816142fc565b811461458957600080fd5b50565b60008135905061459b81614575565b92915050565b600080604083850312156145b8576145b7614056565b5b60006145c68582860161458c565b92505060206145d78582860161458c565b9150509250929050565b600080604083850312156145f8576145f7614056565b5b6000614606858286016140a4565b925050602061461785828601614232565b9150509250929050565b61462a8161407b565b82525050565b60006080820190506146456000830187614621565b6146526020830186614621565b61465f6040830185614621565b61466c6060830184614621565b95945050505050565b60008060006060848603121561468e5761468d614056565b5b600061469c8682870161458c565b93505060206146ad8682870161458c565b92505060406146be8682870161458c565b9150509250925092565b600063ffffffff82169050919050565b6146e1816146c8565b81146146ec57600080fd5b50565b6000813590506146fe816146d8565b92915050565b6000806000806080858703121561471e5761471d614056565b5b600061472c878288016146ef565b945050602061473d878288016146ef565b935050604061474e878288016146ef565b925050606061475f878288016146ef565b91505092959194509250565b60006147768261405b565b9050919050565b6147868161476b565b811461479157600080fd5b50565b6000813590506147a38161477d565b92915050565b6000602082840312156147bf576147be614056565b5b60006147cd84828501614794565b91505092915050565b7f4f6e6c7920636f6e7472616374206f776e65722063616e2063616c6c2074686960008201527f732066756e6374696f6e00000000000000000000000000000000000000000000602082015250565b6000614832602a83613faf565b915061483d826147d6565b604082019050919050565b6000602082019050818103600083015261486181614825565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006148a282614165565b91506148ad83614165565b92508160ff04831182151516156148c7576148c6614868565b5b828202905092915050565b60006148dd82614165565b91506148e883614165565b9250828201905060ff81111561490157614900614868565b5b92915050565b7f4176672074617820746f6f206869676800000000000000000000000000000000600082015250565b600061493d601083613faf565b915061494882614907565b602082019050919050565b6000602082019050818103600083015261496c81614930565b9050919050565b7f54617820746f6f20686967680000000000000000000000000000000000000000600082015250565b60006149a9600c83613faf565b91506149b482614973565b602082019050919050565b600060208201905081810360008301526149d88161499c565b9050919050565b60006060820190506149f460008301866142ed565b614a0160208301856142ed565b614a0e60408301846142ed565b949350505050565b60008160011c9050919050565b6000808291508390505b6001851115614a6d57808604811115614a4957614a48614868565b5b6001851615614a585780820291505b8081029050614a6685614a16565b9450614a2d565b94509492505050565b600082614a865760019050614b42565b81614a945760009050614b42565b8160018114614aaa5760028114614ab457614ae3565b6001915050614b42565b60ff841115614ac657614ac5614868565b5b8360020a915084821115614add57614adc614868565b5b50614b42565b5060208310610133831016604e8410600b8410161715614b185782820a905083811115614b1357614b12614868565b5b614b42565b614b258484846001614a23565b92509050818404811115614b3c57614b3b614868565b5b81810290505b9392505050565b6000614b54826140b9565b9150614b5f83614165565b9250614b8c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614a76565b905092915050565b6000614b9f826140b9565b9150614baa836140b9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614be357614be2614868565b5b828202905092915050565b7f4c502063616e6e6f74206265206578656d707400000000000000000000000000600082015250565b6000614c24601383613faf565b9150614c2f82614bee565b602082019050919050565b60006020820190508181036000830152614c5381614c17565b9050919050565b6000606082019050614c6f6000830186614621565b614c7c602083018561413b565b614c89604083018461413b565b949350505050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b6000614cc7601083613faf565b9150614cd282614c91565b602082019050919050565b60006020820190508181036000830152614cf681614cba565b9050919050565b6000614d08826140b9565b9150614d13836140b9565b9250828203905081811115614d2b57614d2a614868565b5b92915050565b7f74726164696e6720616c7265616479206f70656e000000000000000000000000600082015250565b6000614d67601483613faf565b9150614d7282614d31565b602082019050919050565b60006020820190508181036000830152614d9681614d5a565b9050919050565b7f4c5020616c726561647920616464656400000000000000000000000000000000600082015250565b6000614dd3601083613faf565b9150614dde82614d9d565b602082019050919050565b60006020820190508181036000830152614e0281614dc6565b9050919050565b600081519050614e188161408d565b92915050565b600060208284031215614e3457614e33614056565b5b6000614e4284828501614e09565b91505092915050565b6000604082019050614e606000830185614621565b614e6d6020830184614621565b9392505050565b7f6e6f206574680000000000000000000000000000000000000000000000000000600082015250565b6000614eaa600683613faf565b9150614eb582614e74565b602082019050919050565b60006020820190508181036000830152614ed981614e9d565b9050919050565b7f6e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b6000614f16600983613faf565b9150614f2182614ee0565b602082019050919050565b60006020820190508181036000830152614f4581614f09565b9050919050565b7f57616c6c6574206973206e6f7420626c61636b6c697374656400000000000000600082015250565b6000614f82601983613faf565b9150614f8d82614f4c565b602082019050919050565b60006020820190508181036000830152614fb181614f75565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614ff2826140b9565b9150614ffd836140b9565b92508261500d5761500c614fb8565b5b828204905092915050565b7f546f6b656e2062616c616e636520746f6f206c6f770000000000000000000000600082015250565b600061504e601583613faf565b915061505982615018565b602082019050919050565b6000602082019050818103600083015261507d81615041565b9050919050565b7f4e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b60006150ba600983613faf565b91506150c582615084565b602082019050919050565b600060208201905081810360008301526150e9816150ad565b9050919050565b60006150fb826140b9565b9150615106836140b9565b925082820190508082111561511e5761511d614868565b5b92915050565b7f7478206c696d697420746f6f206c6f7700000000000000000000000000000000600082015250565b600061515a601083613faf565b915061516582615124565b602082019050919050565b600060208201905081810360008301526151898161514d565b9050919050565b7f77616c6c6574206c696d697420746f6f206c6f77000000000000000000000000600082015250565b60006151c6601483613faf565b91506151d182615190565b602082019050919050565b600060208201905081810360008301526151f5816151b9565b9050919050565b600060408201905061521160008301856141f1565b61521e60208301846141f1565b9392505050565b7f43616e6e6f74206368616e6765206d61696e204c500000000000000000000000600082015250565b600061525b601583613faf565b915061526682615225565b602082019050919050565b6000602082019050818103600083015261528a8161524e565b9050919050565b7f4c502063616e6e6f742062652066656573206578656d70740000000000000000600082015250565b60006152c7601883613faf565b91506152d282615291565b602082019050919050565b600060208201905081810360008301526152f6816152ba565b9050919050565b7f4c502063616e6e6e6f74206265206c696d697473206578656d70740000000000600082015250565b6000615333601b83613faf565b915061533e826152fd565b602082019050919050565b6000602082019050818103600083015261536281615326565b9050919050565b6000615374826142fc565b915061537f836142fc565b9250828201905061ffff81111561539957615398614868565b5b92915050565b60006060820190506153b4600083018661430a565b6153c1602083018561430a565b6153ce604083018461430a565b949350505050565b6000819050919050565b60006153fb6153f66153f18461405b565b6153d6565b61405b565b9050919050565b600061540d826153e0565b9050919050565b600061541f82615402565b9050919050565b61542f81615414565b82525050565b600060208201905061544a6000830184615426565b92915050565b600061545b826142fc565b915061ffff820361546f5761546e614868565b5b600182019050919050565b7f5a65726f2061646472657373206e6f7420616c6c6f7765640000000000000000600082015250565b60006154b0601883613faf565b91506154bb8261547a565b602082019050919050565b600060208201905081810360008301526154df816154a3565b9050919050565b7f4578636573736976652054582066656500000000000000000000000000000000600082015250565b600061551c601083613faf565b9150615527826154e6565b602082019050919050565b6000602082019050818103600083015261554b8161550f565b9050919050565b7f626c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b6000615588600b83613faf565b915061559382615552565b602082019050919050565b600060208201905081810360008301526155b78161557b565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b60006155f4601183613faf565b91506155ff826155be565b602082019050919050565b60006020820190508181036000830152615623816155e7565b9050919050565b6000819050919050565b600061564f61564a6156458461562a565b6153d6565b6140b9565b9050919050565b61565f81615634565b82525050565b600060c08201905061567a6000830189614621565b61568760208301886141f1565b6156946040830187615656565b6156a16060830186615656565b6156ae6080830185614621565b6156bb60a08301846141f1565b979650505050505050565b6000815190506156d5816140c3565b92915050565b6000806000606084860312156156f4576156f3614056565b5b6000615702868287016156c6565b9350506020615713868287016156c6565b9250506040615724868287016156c6565b9150509250925092565b60006040820190506157436000830185614621565b61575060208301846141f1565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6157ea8161407b565b82525050565b60006157fc83836157e1565b60208301905092915050565b6000602082019050919050565b6000615820826157b5565b61582a81856157c0565b9350615835836157d1565b8060005b8381101561586657815161584d88826157f0565b975061585883615808565b925050600181019050615839565b5085935050505092915050565b600060a08201905061588860008301886141f1565b6158956020830187615656565b81810360408301526158a78186615815565b90506158b66060830185614621565b6158c360808301846141f1565b969550505050505056fea26469706673582212202af87ee3a53ed0b894dc8e05c4f9f9413eeee2779b5b42214daf0c0ec0fdf9ea64736f6c63430008100033

Deployed Bytecode Sourcemap

1902:17181:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5617:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5946:319;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13298:393;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5356:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12662:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6475:363;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12936:357;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;6843:1032;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5447:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12191:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;16253;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18876:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14782:216;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;5700:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14327:450;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18543:328;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12509:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;5530:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6270:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15003:505;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15967:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14112:210;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;5808:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13696:410;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15513:347;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15865:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1091:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8919:168;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5617:80;5665:13;5689:5;;;;;;;;;;;;;;;;;5682:12;;5617:80;:::o;5946:319::-;6021:4;6051:12;6037:11;;:26;:53;;;;;6068:10;:22;6079:10;6068:22;;;;;;;;;;;;;;;;;;;;;;;;;6067:23;6037:53;6032:118;;;6099:45;6113:10;6125:12;6139:4;6099:13;:45::i;:::-;6032:118;6191:6;6156:11;:23;6168:10;6156:23;;;;;;;;;;;;;;;:32;6180:7;6156:32;;;;;;;;;;;;;;;:41;;;;6228:7;6207:37;;6216:10;6207:37;;;6237:6;6207:37;;;;;;:::i;:::-;;;;;;;;6256:4;6249:11;;5946:319;;;;:::o;13298:393::-;1030:5;;;;;;;;;;1016:19;;:10;:19;;;1008:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;13428:19:::1;;;;;;;;;;;13426:1;:21;;;;:::i;:::-;13402:45;;13412:10;13402:9;:20;;;;:::i;:::-;:45;;;;13394:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;13493:19;;;;;;;;;;;13481:31;;:8;:31;;;;13473:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;13551:9;13534:14;;:26;;;;;;;;;;;;;;;;;;13583:10;13565:15;;:28;;;;;;;;;;;;;;;;;;13620:8;13598:19;::::0;:30:::1;;;;;;;;;;;;;;;;;;13638:48;13654:9;13665:10;13677:8;13638:48;;;;;;;;:::i;:::-;;;;;;;;13298:393:::0;;;:::o;5356:88::-;5411:7;2042:1;2095:2;:13;;;;:::i;:::-;2079;:29;;;;:::i;:::-;5422:19;;5356:88;:::o;12662:269::-;1030:5;;;;;;;;;;1016:19;;:10;:19;;;1008:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;12762:10:::1;:18;12773:6;12762:18;;;;;;;;;;;;;;;;;;;;;;;;;12761:19;12753:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;12829:6;12808:10;:18;12819:6;12808:18;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;12863:8;12840:12;:20;12853:6;12840:20;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;12881:45;12901:6;12909;12917:8;12881:45;;;;;;;;:::i;:::-;;;;;;;;12662:269:::0;;;:::o;6475:363::-;6575:4;6594:19;:17;:19::i;:::-;6586:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;6678:17;6643:11;:19;6655:6;6643:19;;;;;;;;;;;;;;;:31;6663:10;6643:31;;;;;;;;;;;;;;;;:52;6639:143;;6770:6;6736:11;:19;6748:6;6736:19;;;;;;;;;;;;;;;:31;6756:10;6736:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;6702:11;:19;6714:6;6702:19;;;;;;;;;;;;;;;:31;6722:10;6702:31;;;;;;;;;;;;;;;:74;;;;6639:143;6793:40;6807:6;6815:9;6826:6;6793:13;:40::i;:::-;6786:47;;6475:363;;;;;:::o;12936:357::-;12984:21;13007:16;13025:17;13044:21;13067:19;13088:22;13112:24;13152:19;;;;;;;;;;;13173:14;;;;;;;;;;;13189:15;;;;;;;;;;;13206:19;;;;;;;;;;13227:16;;;;;;;;;;;13245:19;;;;;;;;;;;13266:21;;;;;;;;;;;13144:144;;;;;;;;;;;;;;12936:357;;;;;;;:::o;6843:1032::-;1030:5;;;;;;;;;;1016:19;;:10;:19;;;1008:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;6940:14:::1;:12;:14::i;:::-;6939:15;6931:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;7022:1;6992:32;;:18;;;;;;;;;;;:32;;;6984:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;7080:4;7052:10;:25;7071:4;7052:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;7109:4;7089:10;:17;7100:5:::0;::::1;;;;;;;;;;7089:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;7146:4;7118:10;:25;7129:13;;;;;;;;;;;7118:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;7185:4;7155:10;:27;7166:15;;;;;;;;;;;7155:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;7211:16;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7196:12;;:38;;;;;;;;;;;;;;;;;;7278:16;;;;;;;;;;;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7260:56;;;7325:4;7332:12;;;;;;;;;;;7260:85;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7239:18;;:106;;;;;;;;;;;;;;;;;;7385:4;7352:10;:30;7363:18;;;;;;;;;;;7352:30;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;7427:4;7394:10;:30;7405:18;;;;;;;;;;;7394:30;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;7438:27;7468:21;7438:51;;7525:1;7502:19;:24;;7494:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;7542:29;7574:24;7592:4;7574:9;:24::i;:::-;7542:56;;7635:1;7611:21;:25;7603:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;7657:37;7672:21;7657:14;:37::i;:::-;7699:64;7713:21;7736:19;7757:5;7699:13;:64::i;:::-;7770:12;7787:2;7785:1;:4;;;;:::i;:::-;7770:19;;7794:11;7810:2;7808:1;:4;;;;:::i;:::-;7794:18;;7817:11;7833:2;7831:1;:4;;;;:::i;:::-;7817:18;;7842:28;7855:4;7861:3;7866;7842:12;:28::i;:::-;6926:949;;;;;6843:1032:::0;;;:::o;5447:80::-;5499:5;2042:1;5508:16;;5447:80;:::o;12191:313::-;12257:18;12277:22;12301:30;12338:19;12394:1;12367:15;:23;12383:6;12367:23;;;;;;;;;;;;;;;;:28;12362:62;;12417:4;12400:21;;12362:62;12437:14;12453:15;:23;12469:6;12453:23;;;;;;;;;;;;;;;;12478:19;;;;;;;;;;;12428:70;;;;;;;12191:313;;;;;:::o;16253:::-;1030:5;;;;;;;;;;1016:19;;:10;:19;;;1008:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;16374:1:::1;16341:15;:29;16357:12;16341:29;;;;;;;;;;;;;;;;:34:::0;16333:72:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;16410:26;16470:3;16465:2;16439:9;:23;16449:12;16439:23;;;;;;;;;;;;;;;;:28;;;;:::i;:::-;:34;;;;:::i;:::-;16410:63;;16478:45;16490:18;16510:12;16478:11;:45::i;:::-;16560:1;16528:15;:29;16544:12;16528:29;;;;;;;;;;;;;;;:33;;;;16328:238;16253:313:::0;:::o;18876:204::-;18926:24;18953:21;18963:10;18953:9;:21::i;:::-;18926:48;;18997:16;18987:6;:26;;18979:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;19044:31;19056:6;19064:10;19044:11;:31::i;:::-;18921:159;18876:204;:::o;14782:216::-;14825:19;14846:23;14871:18;14891;14924:15;;14941:19;;14962:14;;14978;;14916:77;;;;;;;;14782:216;;;;:::o;5700:105::-;5766:7;5784:9;:18;5794:7;5784:18;;;;;;;;;;;;;;;;5777:25;;5700:105;;;:::o;14327:450::-;1030:5;;;;;;;;;;1016:19;;:10;:19;;;1008:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;14456:18:::1;14432:13;;:43;;;;;;;;;;;;;;;;;;14506:20;14480:15;;:47;;;;;;;;;;;;;;;;;;14565:4;14532:10;:30;14543:18;14532:30;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;14609:4;14574:10;:32;14585:20;14574:32;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;14653:4;14618:12;:32;14631:18;14618:32;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;14699:4;14662:12;:34;14675:20;14662:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;14713:59;14731:18;14751:20;14713:59;;;;;;;:::i;:::-;;;;;;;;14327:450:::0;;:::o;18543:328::-;1030:5;;;;;;;;;;1016:19;;:10;:19;;;1008:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;18629:10:::1;18625:168;;;18647:23;18673:24;18691:4;18673:9;:24::i;:::-;18647:50;;18729:1;18711:15;:19;18703:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;18750:37;18771:15;18750:20;:37::i;:::-;18641:152;18625:168;18805:7;18801:66;;;18820:40;18838:21;18820:17;:40::i;:::-;18801:66;18543:328:::0;;:::o;12509:148::-;12570:11;12583:13;12611:10;:18;12622:6;12611:18;;;;;;;;;;;;;;;;;;;;;;;;;12631:12;:20;12644:6;12631:20;;;;;;;;;;;;;;;;;;;;;;;;;12603:49;;;;12509:148;;;:::o;5530:84::-;5580:13;5604:7;;;;;;;;;;;;;;;;;5597:14;;5530:84;:::o;6270:200::-;6350:4;6369:19;:17;:19::i;:::-;6361:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;6421:44;6435:10;6447:9;6458:6;6421:13;:44::i;:::-;6414:51;;6270:200;;;;:::o;15003:505::-;1030:5;;;;;;;;;;1016:19;;:10;:19;;;1008:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;15103:16:::1;15162:1;15155:4;15137:15;15122:30;;2042:1;2095:2;:13;;;;:::i;:::-;2079;:29;;;;:::i;:::-;15122:30;;;;:::i;:::-;:37;;;;:::i;:::-;:41;;;;:::i;:::-;15103:60;;15188:15;;15176:8;:27;;15168:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;15247:8;15229:15;:26;;;;15260:20;15327:1;15320:4;15298:19;15283:34;;2042:1;2095:2;:13;;;;:::i;:::-;2079;:29;;;;:::i;:::-;15283:34;;;;:::i;:::-;:41;;;;:::i;:::-;:45;;;;:::i;:::-;15260:68;;15357:19;;15341:12;:35;;15333:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15428:12;15406:19;:34;;;;15450:53;15466:15;;15483:19;;15450:53;;;;;;;:::i;:::-;;;;;;;;15098:410;;15003:505:::0;;:::o;15967:281::-;1030:5;;;;;;;;;;1016:19;;:10;:19;;;1008:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;16054:18:::1;;;;;;;;;;;16048:24;;:2;:24;;::::0;16040:58:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;16112:10;:14;16123:2;16112:14;;;;;;;;;;;;;;;;;;;;;;;;;16111:15;16103:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;16169:12;:16;16182:2;16169:16;;;;;;;;;;;;;;;;;;;;;;;;;16168:17;16160:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;16239:4;16222:10;:14;16233:2;16222:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;15967:281:::0;;:::o;14112:210::-;14156:21;14179:25;14206:17;14225:19;14259:5;;;;;;;;;;14266:18;;;;;;;;;;;14286:13;;;;;;;;;;;14301:15;;;;;;;;;;;14251:66;;;;;;;;14112:210;;;;:::o;5808:133::-;5892:7;5910:11;:19;5922:6;5910:19;;;;;;;;;;;;;;;:28;5930:7;5910:28;;;;;;;;;;;;;;;;5903:35;;5808:133;;;;:::o;13696:410::-;1030:5;;;;;;;;;;1016:19;;:10;:19;;;1008:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;13838:12:::1;13819:16;;:31;;;;;;;;;;;;;;;;;;13877:15;13855:19;;:37;;;;;;;;;;;;;;;;;;13921:17;13897:21;;:41;;;;;;;;;;;;;;;;;;14002:17;13980:19;;;;;;;;;;;13961:16;;;;;;;;;;;:38;;;;:::i;:::-;:58;;;;:::i;:::-;13943:15;;:76;;;;;;;;;;;;;;;;;;14029:72;14052:12;14066:15;14083:17;14029:72;;;;;;;;:::i;:::-;;;;;;;;13696:410:::0;;;:::o;15513:347::-;1030:5;;;;;;;;;;1016:19;;:10;:19;;;1008:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;15678:10:::1;15652:36;;15667:8;15652:23;;2042:1;2095:2;:13;;;;:::i;:::-;2079;:29;;;;:::i;:::-;15652:23;;;;:::i;:::-;:36;;;;:::i;:::-;15635:14;:53;;;;15736:10;15710:36;;15725:8;15710:23;;2042:1;2095:2;:13;;;;:::i;:::-;2079;:29;;;;:::i;:::-;15710:23;;;;:::i;:::-;:36;;;;:::i;:::-;15693:14;:53;;;;15776:14;;15759;;:31;15751:40;;;::::0;::::1;;15801:54;15824:14;;15840;;15801:54;;;;;;;:::i;:::-;;;;;;;;15513:347:::0;;;;:::o;15865:97::-;15925:4;15943:10;:14;15954:2;15943:14;;;;;;;;;;;;;;;;;;;;;;;;;15936:21;;15865:97;;;:::o;1091:130::-;1030:5;;;;;;;;;;1016:19;;:10;:19;;;1008:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;1173:8:::1;1165:5;::::0;:16:::1;;;;;;;;;;;;;;;;;;1188:30;1209:8;1188:30;;;;;;:::i;:::-;;;;;;;;1091:130:::0;:::o;8919:168::-;8965:4;8980:14;:12;:14::i;:::-;:49;;;;;9028:1;9014:11;;:15;;;;:::i;:::-;8998:12;:31;;8980:49;8976:107;;;9040:14;:12;:14::i;:::-;9033:21;;;;8976:107;9075:5;9068:12;;8919:168;;:::o;10586:256::-;10684:10;:18;10695:6;10684:18;;;;;;;;;;;;;;;;;;;;;;;;;10683:19;:51;;;;;10733:1;10706:15;:23;10722:6;10706:23;;;;;;;;;;;;;;;;:28;10683:51;10678:160;;;10770:13;10744:15;:23;10760:6;10744:23;;;;;;;;;;;;;;;:39;;;;10795:9;10790:43;;;10808:19;;:22;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;10790:43;10678:160;10586:256;;;:::o;11487:222::-;11538:4;11548:16;11567:5;11548:24;;11582:14;:12;:14::i;:::-;11577:104;;;11615:4;11601:18;;11577:104;;;11650:5;;;;;;;;;;11637:18;;:9;:18;;;11632:49;;11674:4;11660:18;;11632:49;11577:104;11693:11;11686:18;;;11487:222;:::o;9092:1489::-;9184:4;9219:1;9203:18;;:6;:18;;;;:43;;;;;9244:1;9225:21;;:9;:21;;;;9203:43;9195:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;9299:12;9285:11;;:26;9280:545;;;9352:1;9325:15;:23;9341:6;9325:23;;;;;;;;;;;;;;;;:28;9320:156;;9358:44;9372:9;9383:12;9397:4;9358:13;:44::i;:::-;9320:156;;;9417:56;9431:9;9442:15;:23;9458:6;9442:23;;;;;;;;;;;;;;;;9467:5;9417:13;:56::i;:::-;9320:156;9280:545;;;9525:1;9498:15;:23;9514:6;9498:23;;;;;;;;;;;;;;;;:28;9493:97;;9531:56;9545:9;9556:15;:23;9572:6;9556:23;;;;;;;;;;;;;;;;9581:5;9531:13;:56::i;:::-;9493:97;9612:12;9600:9;;:24;9595:225;;;9634:17;9682:13;9667:11;:28;9662:80;;9726:13;9712:11;:27;;;;:::i;:::-;9700:39;;9662:80;9766:14;9753:9;:27;9748:66;;9785:26;;;;;;;;;;:::i;:::-;;;;;;;;9748:66;9627:193;9595:225;9280:545;9836:14;:12;:14::i;:::-;:46;;;;;9881:1;9854:15;:23;9870:6;9854:23;;;;;;;;;;;;;;;;:28;;9836:46;:88;;;;;9912:12;9886:15;:23;9902:6;9886:23;;;;;;;;;;;;;;;;:38;9836:88;9831:122;;;9929:21;;;;;;;;;;:::i;:::-;;;;;;;;9831:122;9965:10;;;;;;;;;;;9964:11;:36;;;;;9979:10;:21;9990:9;9979:21;;;;;;;;;;;;;;;;;;;;;;;;;9964:36;9959:69;;;10005:20;:18;:20::i;:::-;9959:69;10057:4;10039:23;;:6;:23;;;;:53;;;;;10087:4;10066:26;;:9;:26;;;;10039:53;:72;;;;;10106:5;;;;;;;;;;10096:15;;:6;:15;;;;10039:72;10034:154;;;10124:39;10137:6;10145:9;10156:6;10124:12;:39::i;:::-;10116:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;10034:154;10192:18;10213:40;10227:6;10235:9;10246:6;10213:13;:40::i;:::-;10192:61;;10258:23;10293:10;10284:6;:19;;;;:::i;:::-;10258:45;;10348:6;10328:9;:17;10338:6;10328:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;10308:9;:17;10318:6;10308:17;;;;;;;;;;;;;;;:46;;;;10377:1;10364:10;:14;10359:91;;;10437:10;10410:9;:24;10428:4;10410:24;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;10383:9;:24;10401:4;10383:24;;;;;;;;;;;;;;;:64;;;;10359:91;10500:15;10477:9;:20;10487:9;10477:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;10454:9;:20;10464:9;10454:20;;;;;;;;;;;;;;;:61;;;;10542:9;10525:35;;10534:6;10525:35;;;10553:6;10525:35;;;;;;:::i;:::-;;;;;;;;10572:4;10565:11;;;;9092:1489;;;;;:::o;11322:160::-;11368:4;11379:11;11393:5;11379:19;;11423:17;;11407:12;:33;11403:57;;11453:4;11444:13;;11403:57;11471:6;11464:13;;;11322:160;:::o;7880:299::-;7999:12;7945:11;:26;7965:4;7945:26;;;;;;;;;;;;;;;:51;3255:42;7945:51;;;;;;;;;;;;;;;;:66;7940:235;;;8074:17;8020:11;:26;8040:4;8020:26;;;;;;;;;;;;;;;:51;3255:42;8020:51;;;;;;;;;;;;;;;:71;;;;3255:42;8102:67;;8119:4;8102:67;;;8151:17;8102:67;;;;;;:::i;:::-;;;;;;;;7940:235;7880:299;:::o;8184:321::-;8281:24;8329:8;8323:46;;8361:5;;;;;;;;;;8342:24;;8323:46;8373:16;;;;;;;;;;;:32;;;8413:13;8438:4;8445:12;8459:1;8462;8465:16;8483:15;8373:127;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;8276:229;8184:321;;;:::o;8510:404::-;2042:1;8633:2;:13;;;;:::i;:::-;8625:5;2042:1;2095:2;:13;;;;:::i;:::-;2079;:29;;;;:::i;:::-;8605:2;:17;;;;:::i;:::-;:25;;;;:::i;:::-;:41;;;;:::i;:::-;8583:15;:63;;;;2042:1;8702:2;:13;;;;:::i;:::-;8694:5;2042:1;2095:2;:13;;;;:::i;:::-;2079;:29;;;;:::i;:::-;8674:2;:17;;;;:::i;:::-;:25;;;;:::i;:::-;:41;;;;:::i;:::-;8652:19;:63;;;;8737:1;8720:14;;:18;;;;;;;;;;;;;;;;;;8761:2;8743:15;;:20;;;;;;;;;;;;;;;;;;8790:1;8768:19;;:23;;;;;;;;;;;;;;;;;;8832:3;8817:12;:18;;;;:::i;:::-;8797:17;:38;;;;8874:2;8854:17;;:22;;;;:::i;:::-;8840:11;:36;;;;8907:2;8893:11;;:16;;;;:::i;:::-;8881:9;:28;;;;8510:404;;;:::o;16571:266::-;16655:1;16646:6;:10;16641:192;;;16690:6;16665:9;:21;16675:10;16665:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;16727:6;16702:9;:21;16720:1;16702:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;16773:1;16744:40;;16753:10;16744:40;;;16777:6;16744:40;;;;;;:::i;:::-;;;;;;;;16795:32;16808:10;16820:6;16795:32;;;;;;;:::i;:::-;;;;;;;;16641:192;16571:266;;:::o;17847:321::-;17912:28;17927:12;17912:14;:28::i;:::-;17945:21;17983:1;17969:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17945:40;;18008:4;17990;17995:1;17990:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18028:12;;;;;;;;;;;18018:4;18023:1;18018:7;;;;;;;;:::i;:::-;;;;;;;:22;;;;;;;;;;;18045:16;;;;;;;;;;;:67;;;18113:12;18126:1;18128:4;18141;18147:15;18045:118;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17907:261;17847:321;:::o;18173:365::-;18230:24;18279:21;;;;;;;;;;;18257:19;;;;;;;;;;;:43;;;;:::i;:::-;18230:70;;18333:1;18311:19;;;;;;;;;;;:23;;;18306:109;;;18339:13;;;;;;;;;;;:22;;:73;18394:17;18362:49;;18372:19;;;;;;;;;;;18362:29;;:7;:29;;;;:::i;:::-;:49;;;;:::i;:::-;18339:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18306:109;18448:1;18424:21;;;;;;;;;;;:25;;;18419:115;;;18454:15;;;;;;;;;;;:24;;:77;18513:17;18479:51;;18489:21;;;;;;;;;;;18479:31;;:7;:31;;;;:::i;:::-;:51;;;;:::i;:::-;18454:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18419:115;18225:313;18173:365;:::o;16842:1000::-;3471:4;3458:10;;:17;;;;;;;;;;;;;;;;;;16897:27:::1;16927:24;16945:4;16927:9;:24::i;:::-;16897:54;;16986:14;;16963:19;:37;;:55;;;;;17004:14;:12;:14::i;:::-;16963:55;16958:880;;;17055:14;;17032:19;:37;17027:86;;17096:14;;17074:36;;17027:86;17123:20;17205:1;17187:15;;;;;;;;;;;17146:56;;17168:16;;;;;;;;;;;17146:38;;:19;:38;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;17123:83;;17217:21;17263:12;17241:19;:34;;;;:::i;:::-;17217:58;;2042:1;17302:2;:13;;;;:::i;:::-;17285;:30;17281:415;;17324:19;17346:21;17324:43;;17374:35;17395:13;17374:20;:35::i;:::-;17416:19;17462:11;17438:21;:35;;;;:::i;:::-;17416:57;;17504:1;17485:16;;;;;;;;;;;:20;;;17480:210;;;17516:21;17573:15;;;;;;;;;;;17540:48;;17554:16;;;;;;;;;;;17540:30;;:11;:30;;;;:::i;:::-;:48;;;;:::i;:::-;17516:72;;17597:28;17612:12;17597:14;:28::i;:::-;17633:49;17647:12;17661:13;17676:5;17633:13;:49::i;:::-;17508:182;17480:210;17317:379;;17281:415;17701:27;17731:21;17701:51;;17787:1;17765:19;:23;17761:72;;;17792:38;17810:19;17792:17;:38::i;:::-;17761:72;17021:817;;;16958:880;16892:950;3493:5:::0;3480:10;;:18;;;;;;;;;;;;;;;;;;16842:1000::o;10848:469::-;10952:4;10963:21;10987:4;10963:28;;11001:14;:12;:14::i;:::-;:42;;;;;11020:12;:23;11033:9;11020:23;;;;;;;;;;;;;;;;;;;;;;;;;11019:24;11001:42;:67;;;;;11048:12;:20;11061:6;11048:20;;;;;;;;;;;;;;;;;;;;;;;;;11047:21;11001:67;10996:289;;;11099:15;;11082:14;:32;11077:203;;;11138:5;11119:24;;11077:203;;;11162:10;:21;11173:9;11162:21;;;;;;;;;;;;;;;;;;;;;;;;;11161:22;:87;;;;;11228:19;;11211:14;11188:9;:20;11198:9;11188:20;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;:59;11161:87;11156:124;;;11272:5;11253:24;;11156:124;11077:203;10996:289;11296:16;11289:23;;;10848:469;;;;;:::o;11714:472::-;11811:7;11825:17;11853:14;:12;:14::i;:::-;11852:15;:37;;;;11871:10;:18;11882:6;11871:18;;;;;;;;;;;;;;;;;;;;;;;;;11852:37;:62;;;;11893:10;:21;11904:9;11893:21;;;;;;;;;;;;;;;;;;;;;;;;;11852:62;11847:314;;;11931:1;11919:13;;11847:314;;;11949:10;:18;11960:6;11949:18;;;;;;;;;;;;;;;;;;;;;;;;;11944:217;;;12010:3;11993:14;;;;;;;;;;;11984:23;;:6;:23;;;;:::i;:::-;:29;;;;:::i;:::-;11972:41;;11944:217;;;12030:10;:21;12041:9;12030:21;;;;;;;;;;;;;;;;;;;;;;;;;12025:136;;;12095:3;12077:15;;;;;;;;;;;12068:24;;:6;:24;;;;:::i;:::-;:30;;;;:::i;:::-;12056:42;;12025:136;;;12155:3;12133:19;;;;;;;;;;12124:28;;:6;:28;;;;:::i;:::-;:34;;;;:::i;:::-;12112:46;;12025:136;11944:217;11847:314;12172:9;12165:16;;;11714:472;;;;;:::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:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:86::-;3481:7;3521:4;3514:5;3510:16;3499:27;;3446:86;;;:::o;3538:118::-;3609:22;3625:5;3609:22;:::i;:::-;3602:5;3599:33;3589:61;;3646:1;3643;3636:12;3589:61;3538:118;:::o;3662:135::-;3706:5;3744:6;3731:20;3722:29;;3760:31;3785:5;3760:31;:::i;:::-;3662:135;;;;:::o;3803:607::-;3874:6;3882;3890;3939:2;3927:9;3918:7;3914:23;3910:32;3907:119;;;3945:79;;:::i;:::-;3907:119;4065:1;4090:51;4133:7;4124:6;4113:9;4109:22;4090:51;:::i;:::-;4080:61;;4036:115;4190:2;4216:51;4259:7;4250:6;4239:9;4235:22;4216:51;:::i;:::-;4206:61;;4161:116;4316:2;4342:51;4385:7;4376:6;4365:9;4361:22;4342:51;:::i;:::-;4332:61;;4287:116;3803:607;;;;;:::o;4416:118::-;4503:24;4521:5;4503:24;:::i;:::-;4498:3;4491:37;4416:118;;:::o;4540:222::-;4633:4;4671:2;4660:9;4656:18;4648:26;;4684:71;4752:1;4741:9;4737:17;4728:6;4684:71;:::i;:::-;4540:222;;;;:::o;4768:116::-;4838:21;4853:5;4838:21;:::i;:::-;4831:5;4828:32;4818:60;;4874:1;4871;4864:12;4818:60;4768:116;:::o;4890:133::-;4933:5;4971:6;4958:20;4949:29;;4987:30;5011:5;4987:30;:::i;:::-;4890:133;;;;:::o;5029:607::-;5100:6;5108;5116;5165:2;5153:9;5144:7;5140:23;5136:32;5133:119;;;5171:79;;:::i;:::-;5133:119;5291:1;5316:53;5361:7;5352:6;5341:9;5337:22;5316:53;:::i;:::-;5306:63;;5262:117;5418:2;5444:50;5486:7;5477:6;5466:9;5462:22;5444:50;:::i;:::-;5434:60;;5389:115;5543:2;5569:50;5611:7;5602:6;5591:9;5587:22;5569:50;:::i;:::-;5559:60;;5514:115;5029:607;;;;;:::o;5642:619::-;5719:6;5727;5735;5784:2;5772:9;5763:7;5759:23;5755:32;5752:119;;;5790:79;;:::i;:::-;5752:119;5910:1;5935:53;5980:7;5971:6;5960:9;5956:22;5935:53;:::i;:::-;5925:63;;5881:117;6037:2;6063:53;6108:7;6099:6;6088:9;6084:22;6063:53;:::i;:::-;6053:63;;6008:118;6165:2;6191:53;6236:7;6227:6;6216:9;6212:22;6191:53;:::i;:::-;6181:63;;6136:118;5642:619;;;;;:::o;6267:112::-;6350:22;6366:5;6350:22;:::i;:::-;6345:3;6338:35;6267:112;;:::o;6385:89::-;6421:7;6461:6;6454:5;6450:18;6439:29;;6385:89;;;:::o;6480:115::-;6565:23;6582:5;6565:23;:::i;:::-;6560:3;6553:36;6480:115;;:::o;6601:842::-;6840:4;6878:3;6867:9;6863:19;6855:27;;6892:67;6956:1;6945:9;6941:17;6932:6;6892:67;:::i;:::-;6969:68;7033:2;7022:9;7018:18;7009:6;6969:68;:::i;:::-;7047;7111:2;7100:9;7096:18;7087:6;7047:68;:::i;:::-;7125;7189:2;7178:9;7174:18;7165:6;7125:68;:::i;:::-;7203:71;7269:3;7258:9;7254:19;7245:6;7203:71;:::i;:::-;7284;7350:3;7339:9;7335:19;7326:6;7284:71;:::i;:::-;7365;7431:3;7420:9;7416:19;7407:6;7365:71;:::i;:::-;6601:842;;;;;;;;;;:::o;7449:619::-;7526:6;7534;7542;7591:2;7579:9;7570:7;7566:23;7562:32;7559:119;;;7597:79;;:::i;:::-;7559:119;7717:1;7742:53;7787:7;7778:6;7767:9;7763:22;7742:53;:::i;:::-;7732:63;;7688:117;7844:2;7870:53;7915:7;7906:6;7895:9;7891:22;7870:53;:::i;:::-;7860:63;;7815:118;7972:2;7998:53;8043:7;8034:6;8023:9;8019:22;7998:53;:::i;:::-;7988:63;;7943:118;7449:619;;;;;:::o;8074:214::-;8163:4;8201:2;8190:9;8186:18;8178:26;;8214:67;8278:1;8267:9;8263:17;8254:6;8214:67;:::i;:::-;8074:214;;;;:::o;8294:329::-;8353:6;8402:2;8390:9;8381:7;8377:23;8373:32;8370:119;;;8408:79;;:::i;:::-;8370:119;8528:1;8553:53;8598:7;8589:6;8578:9;8574:22;8553:53;:::i;:::-;8543:63;;8499:117;8294:329;;;;:::o;8629:426::-;8770:4;8808:2;8797:9;8793:18;8785:26;;8821:65;8883:1;8872:9;8868:17;8859:6;8821:65;:::i;:::-;8896:72;8964:2;8953:9;8949:18;8940:6;8896:72;:::i;:::-;8978:70;9044:2;9033:9;9029:18;9020:6;8978:70;:::i;:::-;8629:426;;;;;;:::o;9061:329::-;9120:6;9169:2;9157:9;9148:7;9144:23;9140:32;9137:119;;;9175:79;;:::i;:::-;9137:119;9295:1;9320:53;9365:7;9356:6;9345:9;9341:22;9320:53;:::i;:::-;9310:63;;9266:117;9061:329;;;;:::o;9396:553::-;9573:4;9611:3;9600:9;9596:19;9588:27;;9625:71;9693:1;9682:9;9678:17;9669:6;9625:71;:::i;:::-;9706:72;9774:2;9763:9;9759:18;9750:6;9706:72;:::i;:::-;9788;9856:2;9845:9;9841:18;9832:6;9788:72;:::i;:::-;9870;9938:2;9927:9;9923:18;9914:6;9870:72;:::i;:::-;9396:553;;;;;;;:::o;9955:474::-;10023:6;10031;10080:2;10068:9;10059:7;10055:23;10051:32;10048:119;;;10086:79;;:::i;:::-;10048:119;10206:1;10231:53;10276:7;10267:6;10256:9;10252:22;10231:53;:::i;:::-;10221:63;;10177:117;10333:2;10359:53;10404:7;10395:6;10384:9;10380:22;10359:53;:::i;:::-;10349:63;;10304:118;9955:474;;;;;:::o;10435:462::-;10497:6;10505;10554:2;10542:9;10533:7;10529:23;10525:32;10522:119;;;10560:79;;:::i;:::-;10522:119;10680:1;10705:50;10747:7;10738:6;10727:9;10723:22;10705:50;:::i;:::-;10695:60;;10651:114;10804:2;10830:50;10872:7;10863:6;10852:9;10848:22;10830:50;:::i;:::-;10820:60;;10775:115;10435:462;;;;;:::o;10903:308::-;11012:4;11050:2;11039:9;11035:18;11027:26;;11063:65;11125:1;11114:9;11110:17;11101:6;11063:65;:::i;:::-;11138:66;11200:2;11189:9;11185:18;11176:6;11138:66;:::i;:::-;10903:308;;;;;:::o;11217:120::-;11289:23;11306:5;11289:23;:::i;:::-;11282:5;11279:34;11269:62;;11327:1;11324;11317:12;11269:62;11217:120;:::o;11343:137::-;11388:5;11426:6;11413:20;11404:29;;11442:32;11468:5;11442:32;:::i;:::-;11343:137;;;;:::o;11486:470::-;11552:6;11560;11609:2;11597:9;11588:7;11584:23;11580:32;11577:119;;;11615:79;;:::i;:::-;11577:119;11735:1;11760:52;11804:7;11795:6;11784:9;11780:22;11760:52;:::i;:::-;11750:62;;11706:116;11861:2;11887:52;11931:7;11922:6;11911:9;11907:22;11887:52;:::i;:::-;11877:62;;11832:117;11486:470;;;;;:::o;11962:468::-;12027:6;12035;12084:2;12072:9;12063:7;12059:23;12055:32;12052:119;;;12090:79;;:::i;:::-;12052:119;12210:1;12235:53;12280:7;12271:6;12260:9;12256:22;12235:53;:::i;:::-;12225:63;;12181:117;12337:2;12363:50;12405:7;12396:6;12385:9;12381:22;12363:50;:::i;:::-;12353:60;;12308:115;11962:468;;;;;:::o;12436:118::-;12523:24;12541:5;12523:24;:::i;:::-;12518:3;12511:37;12436:118;;:::o;12560:553::-;12737:4;12775:3;12764:9;12760:19;12752:27;;12789:71;12857:1;12846:9;12842:17;12833:6;12789:71;:::i;:::-;12870:72;12938:2;12927:9;12923:18;12914:6;12870:72;:::i;:::-;12952;13020:2;13009:9;13005:18;12996:6;12952:72;:::i;:::-;13034;13102:2;13091:9;13087:18;13078:6;13034:72;:::i;:::-;12560:553;;;;;;;:::o;13119:613::-;13193:6;13201;13209;13258:2;13246:9;13237:7;13233:23;13229:32;13226:119;;;13264:79;;:::i;:::-;13226:119;13384:1;13409:52;13453:7;13444:6;13433:9;13429:22;13409:52;:::i;:::-;13399:62;;13355:116;13510:2;13536:52;13580:7;13571:6;13560:9;13556:22;13536:52;:::i;:::-;13526:62;;13481:117;13637:2;13663:52;13707:7;13698:6;13687:9;13683:22;13663:52;:::i;:::-;13653:62;;13608:117;13119:613;;;;;:::o;13738:93::-;13774:7;13814:10;13807:5;13803:22;13792:33;;13738:93;;;:::o;13837:120::-;13909:23;13926:5;13909:23;:::i;:::-;13902:5;13899:34;13889:62;;13947:1;13944;13937:12;13889:62;13837:120;:::o;13963:137::-;14008:5;14046:6;14033:20;14024:29;;14062:32;14088:5;14062:32;:::i;:::-;13963:137;;;;:::o;14106:757::-;14188:6;14196;14204;14212;14261:3;14249:9;14240:7;14236:23;14232:33;14229:120;;;14268:79;;:::i;:::-;14229:120;14388:1;14413:52;14457:7;14448:6;14437:9;14433:22;14413:52;:::i;:::-;14403:62;;14359:116;14514:2;14540:52;14584:7;14575:6;14564:9;14560:22;14540:52;:::i;:::-;14530:62;;14485:117;14641:2;14667:52;14711:7;14702:6;14691:9;14687:22;14667:52;:::i;:::-;14657:62;;14612:117;14768:2;14794:52;14838:7;14829:6;14818:9;14814:22;14794:52;:::i;:::-;14784:62;;14739:117;14106:757;;;;;;;:::o;14869:104::-;14914:7;14943:24;14961:5;14943:24;:::i;:::-;14932:35;;14869:104;;;:::o;14979:138::-;15060:32;15086:5;15060:32;:::i;:::-;15053:5;15050:43;15040:71;;15107:1;15104;15097:12;15040:71;14979:138;:::o;15123:155::-;15177:5;15215:6;15202:20;15193:29;;15231:41;15266:5;15231:41;:::i;:::-;15123:155;;;;:::o;15284:345::-;15351:6;15400:2;15388:9;15379:7;15375:23;15371:32;15368:119;;;15406:79;;:::i;:::-;15368:119;15526:1;15551:61;15604:7;15595:6;15584:9;15580:22;15551:61;:::i;:::-;15541:71;;15497:125;15284:345;;;;:::o;15635:229::-;15775:34;15771:1;15763:6;15759:14;15752:58;15844:12;15839:2;15831:6;15827:15;15820:37;15635:229;:::o;15870:366::-;16012:3;16033:67;16097:2;16092:3;16033:67;:::i;:::-;16026:74;;16109:93;16198:3;16109:93;:::i;:::-;16227:2;16222:3;16218:12;16211:19;;15870:366;;;:::o;16242:419::-;16408:4;16446:2;16435:9;16431:18;16423:26;;16495:9;16489:4;16485:20;16481:1;16470:9;16466:17;16459:47;16523:131;16649:4;16523:131;:::i;:::-;16515:139;;16242:419;;;:::o;16667:180::-;16715:77;16712:1;16705:88;16812:4;16809:1;16802:15;16836:4;16833:1;16826:15;16853:280;16891:7;16914:18;16930:1;16914:18;:::i;:::-;16909:23;;16946:18;16962:1;16946:18;:::i;:::-;16941:23;;17070:1;17064:4;17060:12;17057:1;17054:19;17049:1;17042:9;17035:17;17031:43;17028:69;;;17077:18;;:::i;:::-;17028:69;17125:1;17122;17118:9;17107:20;;16853:280;;;;:::o;17139:188::-;17177:3;17196:18;17212:1;17196:18;:::i;:::-;17191:23;;17228:18;17244:1;17228:18;:::i;:::-;17223:23;;17269:1;17266;17262:9;17255:16;;17292:4;17287:3;17284:13;17281:39;;;17300:18;;:::i;:::-;17281:39;17139:188;;;;:::o;17333:166::-;17473:18;17469:1;17461:6;17457:14;17450:42;17333:166;:::o;17505:366::-;17647:3;17668:67;17732:2;17727:3;17668:67;:::i;:::-;17661:74;;17744:93;17833:3;17744:93;:::i;:::-;17862:2;17857:3;17853:12;17846:19;;17505:366;;;:::o;17877:419::-;18043:4;18081:2;18070:9;18066:18;18058:26;;18130:9;18124:4;18120:20;18116:1;18105:9;18101:17;18094:47;18158:131;18284:4;18158:131;:::i;:::-;18150:139;;17877:419;;;:::o;18302:162::-;18442:14;18438:1;18430:6;18426:14;18419:38;18302:162;:::o;18470:366::-;18612:3;18633:67;18697:2;18692:3;18633:67;:::i;:::-;18626:74;;18709:93;18798:3;18709:93;:::i;:::-;18827:2;18822:3;18818:12;18811:19;;18470:366;;;:::o;18842:419::-;19008:4;19046:2;19035:9;19031:18;19023:26;;19095:9;19089:4;19085:20;19081:1;19070:9;19066:17;19059:47;19123:131;19249:4;19123:131;:::i;:::-;19115:139;;18842:419;;;:::o;19267:418::-;19404:4;19442:2;19431:9;19427:18;19419:26;;19455:67;19519:1;19508:9;19504:17;19495:6;19455:67;:::i;:::-;19532:68;19596:2;19585:9;19581:18;19572:6;19532:68;:::i;:::-;19610;19674:2;19663:9;19659:18;19650:6;19610:68;:::i;:::-;19267:418;;;;;;:::o;19691:102::-;19733:8;19780:5;19777:1;19773:13;19752:34;;19691:102;;;:::o;19799:848::-;19860:5;19867:4;19891:6;19882:15;;19915:5;19906:14;;19929:712;19950:1;19940:8;19937:15;19929:712;;;20045:4;20040:3;20036:14;20030:4;20027:24;20024:50;;;20054:18;;:::i;:::-;20024:50;20104:1;20094:8;20090:16;20087:451;;;20519:4;20512:5;20508:16;20499:25;;20087:451;20569:4;20563;20559:15;20551:23;;20599:32;20622:8;20599:32;:::i;:::-;20587:44;;19929:712;;;19799:848;;;;;;;:::o;20653:1073::-;20707:5;20898:8;20888:40;;20919:1;20910:10;;20921:5;;20888:40;20947:4;20937:36;;20964:1;20955:10;;20966:5;;20937:36;21033:4;21081:1;21076:27;;;;21117:1;21112:191;;;;21026:277;;21076:27;21094:1;21085:10;;21096:5;;;21112:191;21157:3;21147:8;21144:17;21141:43;;;21164:18;;:::i;:::-;21141:43;21213:8;21210:1;21206:16;21197:25;;21248:3;21241:5;21238:14;21235:40;;;21255:18;;:::i;:::-;21235:40;21288:5;;;21026:277;;21412:2;21402:8;21399:16;21393:3;21387:4;21384:13;21380:36;21362:2;21352:8;21349:16;21344:2;21338:4;21335:12;21331:35;21315:111;21312:246;;;21468:8;21462:4;21458:19;21449:28;;21503:3;21496:5;21493:14;21490:40;;;21510:18;;:::i;:::-;21490:40;21543:5;;21312:246;21583:42;21621:3;21611:8;21605:4;21602:1;21583:42;:::i;:::-;21568:57;;;;21657:4;21652:3;21648:14;21641:5;21638:25;21635:51;;;21666:18;;:::i;:::-;21635:51;21715:4;21708:5;21704:16;21695:25;;20653:1073;;;;;;:::o;21732:281::-;21790:5;21814:23;21832:4;21814:23;:::i;:::-;21806:31;;21858:25;21874:8;21858:25;:::i;:::-;21846:37;;21902:104;21939:66;21929:8;21923:4;21902:104;:::i;:::-;21893:113;;21732:281;;;;:::o;22019:348::-;22059:7;22082:20;22100:1;22082:20;:::i;:::-;22077:25;;22116:20;22134:1;22116:20;:::i;:::-;22111:25;;22304:1;22236:66;22232:74;22229:1;22226:81;22221:1;22214:9;22207:17;22203:105;22200:131;;;22311:18;;:::i;:::-;22200:131;22359:1;22356;22352:9;22341:20;;22019:348;;;;:::o;22373:169::-;22513:21;22509:1;22501:6;22497:14;22490:45;22373:169;:::o;22548:366::-;22690:3;22711:67;22775:2;22770:3;22711:67;:::i;:::-;22704:74;;22787:93;22876:3;22787:93;:::i;:::-;22905:2;22900:3;22896:12;22889:19;;22548:366;;;:::o;22920:419::-;23086:4;23124:2;23113:9;23109:18;23101:26;;23173:9;23167:4;23163:20;23159:1;23148:9;23144:17;23137:47;23201:131;23327:4;23201:131;:::i;:::-;23193:139;;22920:419;;;:::o;23345:418::-;23482:4;23520:2;23509:9;23505:18;23497:26;;23533:71;23601:1;23590:9;23586:17;23577:6;23533:71;:::i;:::-;23614:66;23676:2;23665:9;23661:18;23652:6;23614:66;:::i;:::-;23690;23752:2;23741:9;23737:18;23728:6;23690:66;:::i;:::-;23345:418;;;;;;:::o;23769:166::-;23909:18;23905:1;23897:6;23893:14;23886:42;23769:166;:::o;23941:366::-;24083:3;24104:67;24168:2;24163:3;24104:67;:::i;:::-;24097:74;;24180:93;24269:3;24180:93;:::i;:::-;24298:2;24293:3;24289:12;24282:19;;23941:366;;;:::o;24313:419::-;24479:4;24517:2;24506:9;24502:18;24494:26;;24566:9;24560:4;24556:20;24552:1;24541:9;24537:17;24530:47;24594:131;24720:4;24594:131;:::i;:::-;24586:139;;24313:419;;;:::o;24738:194::-;24778:4;24798:20;24816:1;24798:20;:::i;:::-;24793:25;;24832:20;24850:1;24832:20;:::i;:::-;24827:25;;24876:1;24873;24869:9;24861:17;;24900:1;24894:4;24891:11;24888:37;;;24905:18;;:::i;:::-;24888:37;24738:194;;;;:::o;24938:170::-;25078:22;25074:1;25066:6;25062:14;25055:46;24938:170;:::o;25114:366::-;25256:3;25277:67;25341:2;25336:3;25277:67;:::i;:::-;25270:74;;25353:93;25442:3;25353:93;:::i;:::-;25471:2;25466:3;25462:12;25455:19;;25114:366;;;:::o;25486:419::-;25652:4;25690:2;25679:9;25675:18;25667:26;;25739:9;25733:4;25729:20;25725:1;25714:9;25710:17;25703:47;25767:131;25893:4;25767:131;:::i;:::-;25759:139;;25486:419;;;:::o;25911:166::-;26051:18;26047:1;26039:6;26035:14;26028:42;25911:166;:::o;26083:366::-;26225:3;26246:67;26310:2;26305:3;26246:67;:::i;:::-;26239:74;;26322:93;26411:3;26322:93;:::i;:::-;26440:2;26435:3;26431:12;26424:19;;26083:366;;;:::o;26455:419::-;26621:4;26659:2;26648:9;26644:18;26636:26;;26708:9;26702:4;26698:20;26694:1;26683:9;26679:17;26672:47;26736:131;26862:4;26736:131;:::i;:::-;26728:139;;26455:419;;;:::o;26880:143::-;26937:5;26968:6;26962:13;26953:22;;26984:33;27011:5;26984:33;:::i;:::-;26880:143;;;;:::o;27029:351::-;27099:6;27148:2;27136:9;27127:7;27123:23;27119:32;27116:119;;;27154:79;;:::i;:::-;27116:119;27274:1;27299:64;27355:7;27346:6;27335:9;27331:22;27299:64;:::i;:::-;27289:74;;27245:128;27029:351;;;;:::o;27386:332::-;27507:4;27545:2;27534:9;27530:18;27522:26;;27558:71;27626:1;27615:9;27611:17;27602:6;27558:71;:::i;:::-;27639:72;27707:2;27696:9;27692:18;27683:6;27639:72;:::i;:::-;27386:332;;;;;:::o;27724:156::-;27864:8;27860:1;27852:6;27848:14;27841:32;27724:156;:::o;27886:365::-;28028:3;28049:66;28113:1;28108:3;28049:66;:::i;:::-;28042:73;;28124:93;28213:3;28124:93;:::i;:::-;28242:2;28237:3;28233:12;28226:19;;27886:365;;;:::o;28257:419::-;28423:4;28461:2;28450:9;28446:18;28438:26;;28510:9;28504:4;28500:20;28496:1;28485:9;28481:17;28474:47;28538:131;28664:4;28538:131;:::i;:::-;28530:139;;28257:419;;;:::o;28682:159::-;28822:11;28818:1;28810:6;28806:14;28799:35;28682:159;:::o;28847:365::-;28989:3;29010:66;29074:1;29069:3;29010:66;:::i;:::-;29003:73;;29085:93;29174:3;29085:93;:::i;:::-;29203:2;29198:3;29194:12;29187:19;;28847:365;;;:::o;29218:419::-;29384:4;29422:2;29411:9;29407:18;29399:26;;29471:9;29465:4;29461:20;29457:1;29446:9;29442:17;29435:47;29499:131;29625:4;29499:131;:::i;:::-;29491:139;;29218:419;;;:::o;29643:175::-;29783:27;29779:1;29771:6;29767:14;29760:51;29643:175;:::o;29824:366::-;29966:3;29987:67;30051:2;30046:3;29987:67;:::i;:::-;29980:74;;30063:93;30152:3;30063:93;:::i;:::-;30181:2;30176:3;30172:12;30165:19;;29824:366;;;:::o;30196:419::-;30362:4;30400:2;30389:9;30385:18;30377:26;;30449:9;30443:4;30439:20;30435:1;30424:9;30420:17;30413:47;30477:131;30603:4;30477:131;:::i;:::-;30469:139;;30196:419;;;:::o;30621:180::-;30669:77;30666:1;30659:88;30766:4;30763:1;30756:15;30790:4;30787:1;30780:15;30807:185;30847:1;30864:20;30882:1;30864:20;:::i;:::-;30859:25;;30898:20;30916:1;30898:20;:::i;:::-;30893:25;;30937:1;30927:35;;30942:18;;:::i;:::-;30927:35;30984:1;30981;30977:9;30972:14;;30807:185;;;;:::o;30998:171::-;31138:23;31134:1;31126:6;31122:14;31115:47;30998:171;:::o;31175:366::-;31317:3;31338:67;31402:2;31397:3;31338:67;:::i;:::-;31331:74;;31414:93;31503:3;31414:93;:::i;:::-;31532:2;31527:3;31523:12;31516:19;;31175:366;;;:::o;31547:419::-;31713:4;31751:2;31740:9;31736:18;31728:26;;31800:9;31794:4;31790:20;31786:1;31775:9;31771:17;31764:47;31828:131;31954:4;31828:131;:::i;:::-;31820:139;;31547:419;;;:::o;31972:159::-;32112:11;32108:1;32100:6;32096:14;32089:35;31972:159;:::o;32137:365::-;32279:3;32300:66;32364:1;32359:3;32300:66;:::i;:::-;32293:73;;32375:93;32464:3;32375:93;:::i;:::-;32493:2;32488:3;32484:12;32477:19;;32137:365;;;:::o;32508:419::-;32674:4;32712:2;32701:9;32697:18;32689:26;;32761:9;32755:4;32751:20;32747:1;32736:9;32732:17;32725:47;32789:131;32915:4;32789:131;:::i;:::-;32781:139;;32508:419;;;:::o;32933:191::-;32973:3;32992:20;33010:1;32992:20;:::i;:::-;32987:25;;33026:20;33044:1;33026:20;:::i;:::-;33021:25;;33069:1;33066;33062:9;33055:16;;33090:3;33087:1;33084:10;33081:36;;;33097:18;;:::i;:::-;33081:36;32933:191;;;;:::o;33130:166::-;33270:18;33266:1;33258:6;33254:14;33247:42;33130:166;:::o;33302:366::-;33444:3;33465:67;33529:2;33524:3;33465:67;:::i;:::-;33458:74;;33541:93;33630:3;33541:93;:::i;:::-;33659:2;33654:3;33650:12;33643:19;;33302:366;;;:::o;33674:419::-;33840:4;33878:2;33867:9;33863:18;33855:26;;33927:9;33921:4;33917:20;33913:1;33902:9;33898:17;33891:47;33955:131;34081:4;33955:131;:::i;:::-;33947:139;;33674:419;;;:::o;34099:170::-;34239:22;34235:1;34227:6;34223:14;34216:46;34099:170;:::o;34275:366::-;34417:3;34438:67;34502:2;34497:3;34438:67;:::i;:::-;34431:74;;34514:93;34603:3;34514:93;:::i;:::-;34632:2;34627:3;34623:12;34616:19;;34275:366;;;:::o;34647:419::-;34813:4;34851:2;34840:9;34836:18;34828:26;;34900:9;34894:4;34890:20;34886:1;34875:9;34871:17;34864:47;34928:131;35054:4;34928:131;:::i;:::-;34920:139;;34647:419;;;:::o;35072:332::-;35193:4;35231:2;35220:9;35216:18;35208:26;;35244:71;35312:1;35301:9;35297:17;35288:6;35244:71;:::i;:::-;35325:72;35393:2;35382:9;35378:18;35369:6;35325:72;:::i;:::-;35072:332;;;;;:::o;35410:171::-;35550:23;35546:1;35538:6;35534:14;35527:47;35410:171;:::o;35587:366::-;35729:3;35750:67;35814:2;35809:3;35750:67;:::i;:::-;35743:74;;35826:93;35915:3;35826:93;:::i;:::-;35944:2;35939:3;35935:12;35928:19;;35587:366;;;:::o;35959:419::-;36125:4;36163:2;36152:9;36148:18;36140:26;;36212:9;36206:4;36202:20;36198:1;36187:9;36183:17;36176:47;36240:131;36366:4;36240:131;:::i;:::-;36232:139;;35959:419;;;:::o;36384:174::-;36524:26;36520:1;36512:6;36508:14;36501:50;36384:174;:::o;36564:366::-;36706:3;36727:67;36791:2;36786:3;36727:67;:::i;:::-;36720:74;;36803:93;36892:3;36803:93;:::i;:::-;36921:2;36916:3;36912:12;36905:19;;36564:366;;;:::o;36936:419::-;37102:4;37140:2;37129:9;37125:18;37117:26;;37189:9;37183:4;37179:20;37175:1;37164:9;37160:17;37153:47;37217:131;37343:4;37217:131;:::i;:::-;37209:139;;36936:419;;;:::o;37361:177::-;37501:29;37497:1;37489:6;37485:14;37478:53;37361:177;:::o;37544:366::-;37686:3;37707:67;37771:2;37766:3;37707:67;:::i;:::-;37700:74;;37783:93;37872:3;37783:93;:::i;:::-;37901:2;37896:3;37892:12;37885:19;;37544:366;;;:::o;37916:419::-;38082:4;38120:2;38109:9;38105:18;38097:26;;38169:9;38163:4;38159:20;38155:1;38144:9;38140:17;38133:47;38197:131;38323:4;38197:131;:::i;:::-;38189:139;;37916:419;;;:::o;38341:193::-;38380:3;38399:19;38416:1;38399:19;:::i;:::-;38394:24;;38432:19;38449:1;38432:19;:::i;:::-;38427:24;;38474:1;38471;38467:9;38460:16;;38497:6;38492:3;38489:15;38486:41;;;38507:18;;:::i;:::-;38486:41;38341:193;;;;:::o;38540:430::-;38683:4;38721:2;38710:9;38706:18;38698:26;;38734:69;38800:1;38789:9;38785:17;38776:6;38734:69;:::i;:::-;38813:70;38879:2;38868:9;38864:18;38855:6;38813:70;:::i;:::-;38893;38959:2;38948:9;38944:18;38935:6;38893:70;:::i;:::-;38540:430;;;;;;:::o;38976:60::-;39004:3;39025:5;39018:12;;38976:60;;;:::o;39042:142::-;39092:9;39125:53;39143:34;39152:24;39170:5;39152:24;:::i;:::-;39143:34;:::i;:::-;39125:53;:::i;:::-;39112:66;;39042:142;;;:::o;39190:126::-;39240:9;39273:37;39304:5;39273:37;:::i;:::-;39260:50;;39190:126;;;:::o;39322:134::-;39380:9;39413:37;39444:5;39413:37;:::i;:::-;39400:50;;39322:134;;;:::o;39462:147::-;39557:45;39596:5;39557:45;:::i;:::-;39552:3;39545:58;39462:147;;:::o;39615:238::-;39716:4;39754:2;39743:9;39739:18;39731:26;;39767:79;39843:1;39832:9;39828:17;39819:6;39767:79;:::i;:::-;39615:238;;;;:::o;39859:171::-;39897:3;39920:23;39937:5;39920:23;:::i;:::-;39911:32;;39965:6;39958:5;39955:17;39952:43;;39975:18;;:::i;:::-;39952:43;40022:1;40015:5;40011:13;40004:20;;39859:171;;;:::o;40036:174::-;40176:26;40172:1;40164:6;40160:14;40153:50;40036:174;:::o;40216:366::-;40358:3;40379:67;40443:2;40438:3;40379:67;:::i;:::-;40372:74;;40455:93;40544:3;40455:93;:::i;:::-;40573:2;40568:3;40564:12;40557:19;;40216:366;;;:::o;40588:419::-;40754:4;40792:2;40781:9;40777:18;40769:26;;40841:9;40835:4;40831:20;40827:1;40816:9;40812:17;40805:47;40869:131;40995:4;40869:131;:::i;:::-;40861:139;;40588:419;;;:::o;41013:166::-;41153:18;41149:1;41141:6;41137:14;41130:42;41013:166;:::o;41185:366::-;41327:3;41348:67;41412:2;41407:3;41348:67;:::i;:::-;41341:74;;41424:93;41513:3;41424:93;:::i;:::-;41542:2;41537:3;41533:12;41526:19;;41185:366;;;:::o;41557:419::-;41723:4;41761:2;41750:9;41746:18;41738:26;;41810:9;41804:4;41800:20;41796:1;41785:9;41781:17;41774:47;41838:131;41964:4;41838:131;:::i;:::-;41830:139;;41557:419;;;:::o;41982:161::-;42122:13;42118:1;42110:6;42106:14;42099:37;41982:161;:::o;42149:366::-;42291:3;42312:67;42376:2;42371:3;42312:67;:::i;:::-;42305:74;;42388:93;42477:3;42388:93;:::i;:::-;42506:2;42501:3;42497:12;42490:19;;42149:366;;;:::o;42521:419::-;42687:4;42725:2;42714:9;42710:18;42702:26;;42774:9;42768:4;42764:20;42760:1;42749:9;42745:17;42738:47;42802:131;42928:4;42802:131;:::i;:::-;42794:139;;42521:419;;;:::o;42946:167::-;43086:19;43082:1;43074:6;43070:14;43063:43;42946:167;:::o;43119:366::-;43261:3;43282:67;43346:2;43341:3;43282:67;:::i;:::-;43275:74;;43358:93;43447:3;43358:93;:::i;:::-;43476:2;43471:3;43467:12;43460:19;;43119:366;;;:::o;43491:419::-;43657:4;43695:2;43684:9;43680:18;43672:26;;43744:9;43738:4;43734:20;43730:1;43719:9;43715:17;43708:47;43772:131;43898:4;43772:131;:::i;:::-;43764:139;;43491:419;;;:::o;43916:85::-;43961:7;43990:5;43979:16;;43916:85;;;:::o;44007:158::-;44065:9;44098:61;44116:42;44125:32;44151:5;44125:32;:::i;:::-;44116:42;:::i;:::-;44098:61;:::i;:::-;44085:74;;44007:158;;;:::o;44171:147::-;44266:45;44305:5;44266:45;:::i;:::-;44261:3;44254:58;44171:147;;:::o;44324:807::-;44573:4;44611:3;44600:9;44596:19;44588:27;;44625:71;44693:1;44682:9;44678:17;44669:6;44625:71;:::i;:::-;44706:72;44774:2;44763:9;44759:18;44750:6;44706:72;:::i;:::-;44788:80;44864:2;44853:9;44849:18;44840:6;44788:80;:::i;:::-;44878;44954:2;44943:9;44939:18;44930:6;44878:80;:::i;:::-;44968:73;45036:3;45025:9;45021:19;45012:6;44968:73;:::i;:::-;45051;45119:3;45108:9;45104:19;45095:6;45051:73;:::i;:::-;44324:807;;;;;;;;;:::o;45137:143::-;45194:5;45225:6;45219:13;45210:22;;45241:33;45268:5;45241:33;:::i;:::-;45137:143;;;;:::o;45286:663::-;45374:6;45382;45390;45439:2;45427:9;45418:7;45414:23;45410:32;45407:119;;;45445:79;;:::i;:::-;45407:119;45565:1;45590:64;45646:7;45637:6;45626:9;45622:22;45590:64;:::i;:::-;45580:74;;45536:128;45703:2;45729:64;45785:7;45776:6;45765:9;45761:22;45729:64;:::i;:::-;45719:74;;45674:129;45842:2;45868:64;45924:7;45915:6;45904:9;45900:22;45868:64;:::i;:::-;45858:74;;45813:129;45286:663;;;;;:::o;45955:332::-;46076:4;46114:2;46103:9;46099:18;46091:26;;46127:71;46195:1;46184:9;46180:17;46171:6;46127:71;:::i;:::-;46208:72;46276:2;46265:9;46261:18;46252:6;46208:72;:::i;:::-;45955:332;;;;;:::o;46293:180::-;46341:77;46338:1;46331:88;46438:4;46435:1;46428:15;46462:4;46459:1;46452:15;46479:180;46527:77;46524:1;46517:88;46624:4;46621:1;46614:15;46648:4;46645:1;46638:15;46665:114;46732:6;46766:5;46760:12;46750:22;;46665:114;;;:::o;46785:184::-;46884:11;46918:6;46913:3;46906:19;46958:4;46953:3;46949:14;46934:29;;46785:184;;;;:::o;46975:132::-;47042:4;47065:3;47057:11;;47095:4;47090:3;47086:14;47078:22;;46975:132;;;:::o;47113:108::-;47190:24;47208:5;47190:24;:::i;:::-;47185:3;47178:37;47113:108;;:::o;47227:179::-;47296:10;47317:46;47359:3;47351:6;47317:46;:::i;:::-;47395:4;47390:3;47386:14;47372:28;;47227:179;;;;:::o;47412:113::-;47482:4;47514;47509:3;47505:14;47497:22;;47412:113;;;:::o;47561:732::-;47680:3;47709:54;47757:5;47709:54;:::i;:::-;47779:86;47858:6;47853:3;47779:86;:::i;:::-;47772:93;;47889:56;47939:5;47889:56;:::i;:::-;47968:7;47999:1;47984:284;48009:6;48006:1;48003:13;47984:284;;;48085:6;48079:13;48112:63;48171:3;48156:13;48112:63;:::i;:::-;48105:70;;48198:60;48251:6;48198:60;:::i;:::-;48188:70;;48044:224;48031:1;48028;48024:9;48019:14;;47984:284;;;47988:14;48284:3;48277:10;;47685:608;;;47561:732;;;;:::o;48299:831::-;48562:4;48600:3;48589:9;48585:19;48577:27;;48614:71;48682:1;48671:9;48667:17;48658:6;48614:71;:::i;:::-;48695:80;48771:2;48760:9;48756:18;48747:6;48695:80;:::i;:::-;48822:9;48816:4;48812:20;48807:2;48796:9;48792:18;48785:48;48850:108;48953:4;48944:6;48850:108;:::i;:::-;48842:116;;48968:72;49036:2;49025:9;49021:18;49012:6;48968:72;:::i;:::-;49050:73;49118:3;49107:9;49103:19;49094:6;49050:73;:::i;:::-;48299:831;;;;;;;;:::o

Swarm Source

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