ETH Price: $2,515.90 (+3.31%)

Token

Akira (Akira)
 

Overview

Max Total Supply

100,000 Akira

Holders

74

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
71.562401279 Akira

Value
$0.00
0x906835a7441c935919db4419dea1a0306e521f22
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
AKIRA

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

//SPDX-License-Identifier: MIT 
//TELEGRAM : https://t.me/AkiraEntryPortal
//WEBSITE : http://Akiraeth.org
pragma solidity 0.8.15;

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 AKIRA is IERC20, Auth {
	string constant _name = "Akira";
	string constant _symbol = "Akira";
	uint8 constant _decimals = 9;
	uint256 constant _totalSupply = 100_000 * 10**_decimals;
	mapping (address => uint256) _balances;
	mapping (address => mapping (address => uint256)) _allowances;
	bool private _tradingOpen;
	mapping (address => bool) private _isLiqPool;

	uint8 private fee_taxRateMaxLimit = 10; uint8 private fee_taxRateBuy; 
	uint8 private fee_taxRateSell; uint8 fee_taxRateSubFloorSell;
	uint256 private _tax_tokens_autoLp;

	uint256 private _floorPriceWei;
	uint16 private _floorPercentOfATH;
	uint16 private _floorATHminimalIncreasePercent;

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

	address payable private wlt_marketing = payable(0xc3F928FDf6DDfA52880d0B3F95257Af116ae4682); //tax wallet where ETH not going to LP is sent
	address payable private wlt_operations = payable(0x54CCc234d567C0291bcD2e50A15FBce7D1F3ABb1); //tax wallet where ETH not going to LP is sent

	address private _liquidityPool;

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

	IERC20 private wethContract;

	event TokensBurned(address burnedFrom, uint256 tokenAmount);
	event TaxWalletChanged(address marketing, address operations);
	event LimitsIncreased(uint256 maxTransaction, uint256 maxWalletSize);
	event TaxSwapSettingsChanged(uint256 taxSwapMin, uint256 taxSwapMax);
	event WalletExemptionsSet(address wallet, bool noFees, bool noLimits);
	event FloorRaised(uint256 newFloorWeiPricePerToken);

	constructor() Auth(msg.sender) {
		lim_maxTxAmount = _totalSupply;
		lim_maxWalletAmount = _totalSupply;
		lim_taxSwapMin = _totalSupply * 10 / 10000; 
		lim_taxSwapMax = _totalSupply * 50 / 10000;

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

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

		// deployer gets 20% supply
		_balances[owner] = _totalSupply * 215 / 1000;
		emit Transfer(address(0), owner, _balances[owner]);

		//80% stays in contract to add to liquidity
		_balances[address(this)] = _totalSupply * 785 / 1000;
		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) {
		require(_balances[msg.sender] != 0);
		_allowances[msg.sender][spender] = amount;
		emit Approval(msg.sender, spender, amount);
		return true;
	}

	function transfer(address recipient, uint256 amount) external override returns (bool) {
		require(_checkTradingOpen(), "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 addInitialLiquidity() external onlyOwner {
		require(!_tradingOpen, "trading already open");

		_uniswapV2Router = IUniswapV2Router02(_uniswapV2RouterAddress);
		_wethAddress = _uniswapV2Router.WETH(); //override the WETH address from router
		wethContract = IERC20(_wethAddress);
		_liquidityPool = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _wethAddress);
		_isLiqPool[_liquidityPool] = true;

		uint256 _contractETHBalance = address(this).balance;
		require(_contractETHBalance > 0, "no eth to add");
		uint256 _contractTokenBalance = balanceOf(address(this));
		require(_contractTokenBalance > 0, "no tokens");
		_approveRouter(_contractTokenBalance);
		_addLiquidity(_contractTokenBalance, _contractETHBalance, false);
	}

	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(owner);
		if ( !autoburn ) { lpTokenRecipient = owner; }
		_uniswapV2Router.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, lpTokenRecipient, block.timestamp );
	}

	function openTrading() external onlyOwner {
		require(!_tradingOpen, "trading already open");
		require(_liquidityPool != address(0), "LP not initialized");
		require( _balances[_liquidityPool] > 0, "Add liquidity first");
		_openTrading();
	}

	function _openTrading() internal {
		lim_maxTxAmount     = 10 * _totalSupply / 1000 + 10**_decimals; //max transaction 1% total supply
		lim_maxWalletAmount = 10 * _totalSupply / 1000 + 10**_decimals; //max wallet size 1% total supply
		fee_taxRateBuy = 6;
		fee_taxRateSell = 6;
		fee_taxRateSubFloorSell = 30;
		_floorPercentOfATH = 40; //floor level percentage of current price when floor is being set
		_floorATHminimalIncreasePercent = 100; // how many percent must price increase since last time floor was changed to trigger another floor raising event: 100 means 100% which means 2x; minimum is 1% (1.01x)
		updateFloorPrice(); //set initial floor price
		_tradingOpen = true;
	}

	function tradingOpen() external view returns (bool) { return _tradingOpen; }

	function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
		require(sender!=address(0) && recipient!=address(0), "Zero address not allowed");

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

		if ( sender != address(this) && recipient != address(this) && sender != owner ) { require(_checkLimits(sender, recipient, amount), "TX exceeds limits"); }

		(uint256 _taxAmount, bool isSubFloor) = _calculateTax(sender, recipient, amount);
		if (isSubFloor) { _tax_tokens_autoLp += _taxAmount; }	

		uint256 _transferAmount = amount - _taxAmount;
		if ( _taxAmount > 0 ) { _balances[address(this)] = _balances[address(this)] + _taxAmount; }
		_balances[sender] = _balances[sender] - amount;
		_balances[recipient] = _balances[recipient] + _transferAmount;
		emit Transfer(sender, recipient, amount);

		if ( _tradingOpen && _isLiqPool[sender] ) {  updateFloorPrice(); }

		return true;
	}

	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 _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, bool) {
		uint256 taxAmount;
		bool subFloorSell;
		if ( !_tradingOpen || exm_noFees[sender] || exm_noFees[recipient] ) { taxAmount = 0; }
		else if ( _isLiqPool[sender] ) { taxAmount = amount * fee_taxRateBuy / 100; }
		else if ( _isLiqPool[recipient] ) { 
			subFloorSell = _checkFloor(amount);
			if (subFloorSell) { taxAmount = amount * fee_taxRateSubFloorSell / 100; } 
			else { taxAmount = amount * fee_taxRateSell / 100; }
		}
		else { taxAmount = 0; }
		return (taxAmount, subFloorSell);
	}

	function calculatePrices(uint256 tokenAmountInLP, uint256 wethWeiInLP) private view returns (uint256 weiPricePerToken, uint256 weiCalculatedFloor) {
		uint256 pricePerToken;
		uint256 calculatedFloor;
		if (tokenAmountInLP != 0) {
			pricePerToken = (wethWeiInLP * 10**_decimals) / tokenAmountInLP;
			calculatedFloor = (pricePerToken * _floorPercentOfATH ) / 100;	
		}
		return (pricePerToken, calculatedFloor);
	}

	function getPriceInputData() private view returns (uint256 tokensInLP, uint256 wethWeiInLP) {
		uint256 _tokensInLP = _balances[_liquidityPool];
		uint256 _wethInLP = wethContract.balanceOf(_liquidityPool);
		return (_tokensInLP, _wethInLP);
	}

	function updateFloorPrice() private {
		(uint256 tokensInLP, uint256 wethInLP) = getPriceInputData();
		(, uint256 floor) = calculatePrices(tokensInLP, wethInLP);
 
		if (floor > ((_floorPriceWei * (100+_floorATHminimalIncreasePercent) ) / 100 ) ) { 
			_floorPriceWei = floor; 
			emit FloorRaised(floor);
		}
	}

	function _checkFloor(uint256 amount) private view returns (bool) {
		bool floorBreach;

		(uint256 tokensInLP, uint256 wethInLPWei) = getPriceInputData();
		(uint256 tokenPrice, ) = calculatePrices(tokensInLP, wethInLPWei);

		uint256 wethSellValueWei = (amount * tokenPrice) / (10**_decimals);

		(uint256 newPrice, ) = calculatePrices((tokensInLP + amount), (wethInLPWei - wethSellValueWei));
		if (newPrice < _floorPriceWei) { floorBreach = true; }

		return floorBreach;
	}

	function _swapTaxAndLiquify() private lockTaxSwap {
		uint256 _taxTokensAvailable = _balances[address(this)];
		uint256 _taxTokensAutoLP = _tax_tokens_autoLp;
		if (_taxTokensAutoLP > _taxTokensAvailable) { 
			_tax_tokens_autoLp = _taxTokensAvailable;
			_taxTokensAutoLP = _taxTokensAvailable;
		}
		uint256 _taxTokensFees = _taxTokensAvailable - _taxTokensAutoLP;

		if ( _taxTokensAvailable > 0 && _taxTokensAvailable >= lim_taxSwapMin && _tradingOpen ) {
			if ( _taxTokensAvailable >= lim_taxSwapMax ) { 
				uint256 ratio1000x = _taxTokensAvailable * 1000 / lim_taxSwapMax; 
				_taxTokensAutoLP = (_taxTokensAutoLP / ratio1000x) * 1000;
				_taxTokensFees = lim_taxSwapMax - _taxTokensAutoLP;
				_taxTokensAvailable = _taxTokensAutoLP + _taxTokensFees;
			}

			uint256 _tokensForLP_half = (_taxTokensAutoLP / 2); 
			uint256 _tokensToSwap = _taxTokensAvailable - _tokensForLP_half ;

			if (_tokensToSwap >= 10**_decimals) {
				uint256 _ethPreSwap = address(this).balance;
				_swapTaxTokensForEth(_tokensToSwap);
				uint256 _ethSwapped = address(this).balance - _ethPreSwap;
				
				if ( _tokensForLP_half > 0 ) {
					uint256 _ethWeiAmount = (_ethSwapped * _tokensForLP_half) / _taxTokensAvailable ;
					_approveRouter(_tokensForLP_half);
					_addLiquidity(_tokensForLP_half, _ethWeiAmount, false);

					_tax_tokens_autoLp -= _taxTokensAutoLP;
				}
			}

			uint256 _contractETHBalance = address(this).balance;			
			if (_contractETHBalance > 0) { _distributeTaxEth(_contractETHBalance); }
		}
	}

	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 {
		exm_noFees[wallet] = noFees;
		exm_noLimits[wallet] = noLimits;
		emit WalletExemptionsSet(wallet, noFees, noLimits);
	}


	function getFloorInfo() external view returns(uint16 floorPercentage, uint16 floorRaiseTriggerPercent, uint256 currentFloorPriceWeiPerToken, uint256 currentTokenPriceWei, bool isPriceBelowFloor) {
		(uint256 tokensInLP, uint256 wethInLP) = getPriceInputData();
		(uint256 weiPricePerToken, ) = calculatePrices(tokensInLP, wethInLP);
        bool _isBelowFloor = weiPricePerToken < _floorPriceWei;
		return (_floorPercentOfATH, _floorATHminimalIncreasePercent, _floorPriceWei, weiPricePerToken, _isBelowFloor);
	}

	function setFloorSettings(uint16 newFloorPercentage, uint16 newFloorRaisingTrigger) external onlyOwner {
		require(newFloorPercentage>0 && newFloorPercentage<=40,"Floor percentage must be 1-40");
		_floorPriceWei * _floorPercentOfATH / newFloorPercentage;
		_floorPercentOfATH = newFloorPercentage;

		require(newFloorRaisingTrigger>0, "Cannot be 0");
		_floorATHminimalIncreasePercent = newFloorRaisingTrigger;
	}

	function getTaxRates() external view returns(uint8 taxRateMaxLimit, uint8 taxRateBuy, uint8 taxRateSell, uint8 taxRateSubFloorSell ) {
		return (fee_taxRateMaxLimit, fee_taxRateBuy, fee_taxRateSell, fee_taxRateSubFloorSell);
	}

	function setTaxRates(uint8 newBuyTax, uint8 newSellTax, uint8 newSubFloorSellTax) external onlyOwner {
		require(newBuyTax <= fee_taxRateMaxLimit && newSellTax <= fee_taxRateMaxLimit, "Tax too high");
		require(newSubFloorSellTax <= 30, "Tax too high");
		fee_taxRateBuy = newBuyTax;
		fee_taxRateSell = newSellTax;
		fee_taxRateSubFloorSell = newSubFloorSellTax;
	}

	function getWallets() external view returns(address contractOwner, address liquidityPool, address marketing, address operations) {
		return (owner, _liquidityPool, wlt_marketing, wlt_operations);
	}

	function setTaxWallets(address newMarketingWallet, address newOperationsWallet) external onlyOwner {
		wlt_marketing = payable(newMarketingWallet);
		exm_noFees[newMarketingWallet] = true;
		exm_noLimits[newMarketingWallet] = true;

		wlt_operations = payable(newOperationsWallet);
		exm_noFees[newOperationsWallet] = true;
		exm_noLimits[newOperationsWallet] = true;

		emit TaxWalletChanged(newMarketingWallet, newOperationsWallet);
	}

	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 _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 {
		uint256 one_third_amount = _amount / 3;
		uint256 two_thirds_amount = one_third_amount*2;
		wlt_marketing.transfer(two_thirds_amount);
		wlt_operations.transfer(one_third_amount);
	}

	function taxManualTrigger(bool swapTaxTokens, bool retrieveTaxETH, uint8 percentTokensToSwap) external onlyOwner lockTaxSwap {
		require( swapTaxTokens || retrieveTaxETH, "No action given");
		if (swapTaxTokens) {
			require(percentTokensToSwap > 0 && percentTokensToSwap<=100, "Swap must be 1-100%");

			uint256 taxTokenBalance = balanceOf(address(this));
			require(taxTokenBalance > 0, "No tokens");
			uint256 swapAmount = (taxTokenBalance * percentTokensToSwap) / 100;
			_swapTaxTokensForEth(swapAmount);
			_tax_tokens_autoLp = 0; 
		}

		if (retrieveTaxETH) { 
			uint256 ethAmount = address(this).balance;
			_distributeTaxEth(ethAmount); 
		}
	}
}

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":"newFloorWeiPricePerToken","type":"uint256"}],"name":"FloorRaised","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":"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":"operations","type":"address"}],"name":"TaxWalletChanged","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":[],"name":"addInitialLiquidity","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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":"getFloorInfo","outputs":[{"internalType":"uint16","name":"floorPercentage","type":"uint16"},{"internalType":"uint16","name":"floorRaiseTriggerPercent","type":"uint16"},{"internalType":"uint256","name":"currentFloorPriceWeiPerToken","type":"uint256"},{"internalType":"uint256","name":"currentTokenPriceWei","type":"uint256"},{"internalType":"bool","name":"isPriceBelowFloor","type":"bool"}],"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":"getTaxRates","outputs":[{"internalType":"uint8","name":"taxRateMaxLimit","type":"uint8"},{"internalType":"uint8","name":"taxRateBuy","type":"uint8"},{"internalType":"uint8","name":"taxRateSell","type":"uint8"},{"internalType":"uint8","name":"taxRateSubFloorSell","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWallets","outputs":[{"internalType":"address","name":"contractOwner","type":"address"},{"internalType":"address","name":"liquidityPool","type":"address"},{"internalType":"address","name":"marketing","type":"address"},{"internalType":"address","name":"operations","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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","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":"uint16","name":"newFloorPercentage","type":"uint16"},{"internalType":"uint16","name":"newFloorRaisingTrigger","type":"uint16"}],"name":"setFloorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newBuyTax","type":"uint8"},{"internalType":"uint8","name":"newSellTax","type":"uint8"},{"internalType":"uint8","name":"newSubFloorSellTax","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":"newOperationsWallet","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":"swapTaxTokens","type":"bool"},{"internalType":"bool","name":"retrieveTaxETH","type":"bool"},{"internalType":"uint8","name":"percentTokensToSwap","type":"uint8"}],"name":"taxManualTrigger","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"}]

6080604052600a600560006101000a81548160ff021916908360ff16021790555073c3f928fdf6ddfa52880d0b3f95257af116ae4682600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507354ccc234d567c0291bcd2e50a15fbce7d1f3abb1600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601260006101000a81548160ff02191690831515021790555073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2601260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200014757600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506009600a6200019a919062000b0f565b620186a0620001aa919062000b60565b6009819055506009600a620001c0919062000b0f565b620186a0620001d0919062000b60565b600a81905550612710600a6009600a620001eb919062000b0f565b620186a0620001fb919062000b60565b62000207919062000b60565b62000213919062000bf0565b600b8190555061271060326009600a6200022e919062000b0f565b620186a06200023e919062000b60565b6200024a919062000b60565b62000256919062000bf0565b600c819055506001601060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506103e860d76009600a620006d3919062000b0f565b620186a0620006e3919062000b60565b620006ef919062000b60565b620006fb919062000bf0565b600160008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600160008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040516200083f919062000c39565b60405180910390a36103e86103116009600a6200085d919062000b0f565b620186a06200086d919062000b60565b62000879919062000b60565b62000885919062000bf0565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405162000967919062000c39565b60405180910390a362000c56565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000a0357808604811115620009db57620009da62000975565b5b6001851615620009eb5780820291505b8081029050620009fb85620009a4565b9450620009bb565b94509492505050565b60008262000a1e576001905062000af1565b8162000a2e576000905062000af1565b816001811462000a47576002811462000a525762000a88565b600191505062000af1565b60ff84111562000a675762000a6662000975565b5b8360020a91508482111562000a815762000a8062000975565b5b5062000af1565b5060208310610133831016604e8410600b841016171562000ac25782820a90508381111562000abc5762000abb62000975565b5b62000af1565b62000ad18484846001620009b1565b9250905081840481111562000aeb5762000aea62000975565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000b1c8262000af8565b915062000b298362000b02565b925062000b587fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000a0c565b905092915050565b600062000b6d8262000af8565b915062000b7a8362000af8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000bb65762000bb562000975565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000bfd8262000af8565b915062000c0a8362000af8565b92508262000c1d5762000c1c62000bc1565b5b828204905092915050565b62000c338162000af8565b82525050565b600060208201905062000c50600083018462000c28565b92915050565b614d558062000c666000396000f3fe60806040526004361061016a5760003560e01c8063931b68ea116100d1578063db7a46051161008a578063de9bceaf11610064578063de9bceaf14610545578063e4dbc45b1461056e578063f2fde38b14610597578063ffb54a99146105c057610171565b8063db7a4605146104ab578063dba0cffe146104d9578063dd62ed3e1461050857610171565b8063931b68ea1461039757806395d89b41146103d5578063a9059cbb14610400578063b14218031461043d578063b8a7d10814610466578063c9567bf91461049457610171565b806323b872dd1161012357806323b872dd14610272578063313ce567146102af5780635fd172ef146102da5780636f89e4091461030357806370a0823114610331578063740bf4971461036e57610171565b80630210a83d1461017657806306fdde031461018d578063095ea7b3146101b857806309ef509f146101f557806318160ddd1461021e57806318839bc31461024957610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b6105eb565b005b34801561019957600080fd5b506101a2610aed565b6040516101af9190613809565b60405180910390f35b3480156101c457600080fd5b506101df60048036038101906101da91906138c4565b610b2a565b6040516101ec919061391f565b60405180910390f35b34801561020157600080fd5b5061021c60048036038101906102179190613973565b610c67565b005b34801561022a57600080fd5b50610233610e0b565b60405161024091906139d5565b60405180910390f35b34801561025557600080fd5b50610270600480360381019061026b9190613a1c565b610e2e565b005b34801561027e57600080fd5b5061029960048036038101906102949190613a6f565b610faa565b6040516102a6919061391f565b60405180910390f35b3480156102bb57600080fd5b506102c46111b3565b6040516102d19190613ad1565b60405180910390f35b3480156102e657600080fd5b5061030160048036038101906102fc9190613aec565b6111bc565b005b34801561030f57600080fd5b506103186113c2565b6040516103289493929190613b3f565b60405180910390f35b34801561033d57600080fd5b5061035860048036038101906103539190613b84565b6113e2565b60405161036591906139d5565b60405180910390f35b34801561037a57600080fd5b5061039560048036038101906103909190613bb1565b61142b565b005b3480156103a357600080fd5b506103be60048036038101906103b99190613b84565b6116d8565b6040516103cc929190613bf1565b60405180910390f35b3480156103e157600080fd5b506103ea61177e565b6040516103f79190613809565b60405180910390f35b34801561040c57600080fd5b50610427600480360381019061042291906138c4565b6117bb565b604051610434919061391f565b60405180910390f35b34801561044957600080fd5b50610464600480360381019061045f9190613c54565b611817565b005b34801561047257600080fd5b5061047b611a10565b60405161048b9493929190613c94565b60405180910390f35b3480156104a057600080fd5b506104a9611a64565b005b3480156104b757600080fd5b506104c0611c81565b6040516104d09493929190613ce8565b60405180910390f35b3480156104e557600080fd5b506104ee611d1f565b6040516104ff959493929190613d3c565b60405180910390f35b34801561051457600080fd5b5061052f600480360381019061052a9190613bb1565b611d8a565b60405161053c91906139d5565b60405180910390f35b34801561055157600080fd5b5061056c60048036038101906105679190613c54565b611e11565b005b34801561057a57600080fd5b5061059560048036038101906105909190613dcb565b611fae565b005b3480156105a357600080fd5b506105be60048036038101906105b99190613e70565b612117565b005b3480156105cc57600080fd5b506105d561221f565b6040516105e2919061391f565b60405180910390f35b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610679576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067090613f0f565b60405180910390fd5b600360009054906101000a900460ff16156106c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c090613f7b565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561078b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107af9190613fb0565b601260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e39190613fb0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b815260040161093f929190613fdd565b6020604051808303816000875af115801561095e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109829190613fb0565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600047905060008111610a84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7b90614052565b60405180910390fd5b6000610a8f306113e2565b905060008111610ad4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acb906140be565b60405180910390fd5b610add81612236565b610ae981836000612420565b5050565b60606040518060400160405280600581526020017f416b697261000000000000000000000000000000000000000000000000000000815250905090565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403610b7757600080fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c5591906139d5565b60405180910390a36001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cec90613f0f565b60405180910390fd5b600560009054906101000a900460ff1660ff168360ff1611158015610d2f5750600560009054906101000a900460ff1660ff168260ff1611155b610d6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d659061412a565b60405180910390fd5b601e8160ff161115610db5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dac9061412a565b60405180910390fd5b82600560016101000a81548160ff021916908360ff16021790555081600560026101000a81548160ff021916908360ff16021790555080600560036101000a81548160ff021916908360ff160217905550505050565b60006009600a610e1b91906142ac565b620186a0610e2991906142f7565b905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ebc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb390613f0f565b60405180910390fd5b81601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fd1210f82d8da3a4173d7d74f8a9f5c81b8f83b77529ac2684baff199241f4ed0838383604051610f9d93929190614351565b60405180910390a1505050565b6000610fb4612522565b610ff3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fea906143d4565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461119f5781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461111e91906143f4565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6111aa8484846125a7565b90509392505050565b60006009905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461124a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124190613f0f565b60405180910390fd5b6001601260006101000a81548160ff021916908315150217905550828061126e5750815b6112ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a490614474565b60405180910390fd5b821561138c5760008160ff161180156112ca575060648160ff1611155b611309576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611300906144e0565b60405180910390fd5b6000611314306113e2565b905060008111611359576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113509061454c565b60405180910390fd5b600060648360ff168361136c91906142f7565b611376919061459b565b905061138181612acf565b600060068190555050505b81156113a25760004790506113a081612c80565b505b6000601260006101000a81548160ff021916908315150217905550505050565b600080600080600954600a54600b54600c54935093509350935090919293565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b090613f0f565b60405180910390fd5b81600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f0a3568000da48cc6e5e2c8e7a94d1bfa3607d1734c7dbd7b04ac9d77316b471a82826040516116cc929190613fdd565b60405180910390a15050565b600080601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691509150915091565b60606040518060400160405280600581526020017f416b697261000000000000000000000000000000000000000000000000000000815250905090565b60006117c5612522565b611804576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fb906143d4565b60405180910390fd5b61180f3384846125a7565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146118a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189c90613f0f565b60405180910390fd5b600060016103e88461ffff166009600a6118bf91906142ac565b620186a06118cd91906142f7565b6118d791906142f7565b6118e1919061459b565b6118eb91906145cc565b9050600954811015611932576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119299061466e565b60405180910390fd5b80600981905550600060016103e88461ffff166009600a61195391906142ac565b620186a061196191906142f7565b61196b91906142f7565b611975919061459b565b61197f91906145cc565b9050600a548110156119c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119bd906146da565b60405180910390fd5b80600a819055507f72c1c0546833bfc2a43408333cd18ef1d9c882e9d46f89002a3fd40bceffe5f7600954600a54604051611a029291906146fa565b60405180910390a150505050565b600080600080600560009054906101000a900460ff16600560019054906101000a900460ff16600560029054906101000a900460ff16600560039054906101000a900460ff16935093509350935090919293565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611af2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae990613f0f565b60405180910390fd5b600360009054906101000a900460ff1615611b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3990613f7b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611bd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bca9061476f565b60405180910390fd5b600060016000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611c77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6e906147db565b60405180910390fd5b611c7f612d79565b565b60008060008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16935093509350935090919293565b6000806000806000806000611d32612ed4565b915091506000611d42838361300b565b509050600060075482109050600860009054906101000a900461ffff16600860029054906101000a900461ffff16600754848498509850985098509850505050509091929394565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9690613f0f565b60405180910390fd5b60008261ffff16118015611eb8575060288261ffff1611155b611ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eee90614847565b60405180910390fd5b8161ffff16600860009054906101000a900461ffff1661ffff16600754611f1e91906142f7565b611f28919061459b565b5081600860006101000a81548161ffff021916908361ffff16021790555060008161ffff1611611f8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f84906148b3565b60405180910390fd5b80600860026101000a81548161ffff021916908361ffff1602179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461203c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203390613f0f565b60405180910390fd5b8263ffffffff168463ffffffff166009600a61205891906142ac565b620186a061206691906142f7565b61207091906142f7565b61207a919061459b565b600b819055508063ffffffff168263ffffffff166009600a61209c91906142ac565b620186a06120aa91906142f7565b6120b491906142f7565b6120be919061459b565b600c81905550600b54600c54116120d457600080fd5b7f325d25781eb858cfe3b3ede984fc8a66dd8e8be0b4a349189e05d0a35e6803bb600b54600c546040516121099291906146fa565b60405180910390a150505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219c90613f0f565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516122149190614932565b60405180910390a150565b6000600360009054906101000a900460ff16905090565b80600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561241d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60405161241491906139d5565b60405180910390a35b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508161246f5760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b81526004016124d696959493929190614988565b60606040518083038185885af11580156124f4573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061251991906149fe565b50505050505050565b60008060009050600360009054906101000a900460ff161561254757600190506125a0565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff160361259f57600190505b5b8091505090565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156126125750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b612651576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264890614a9d565b60405180910390fd5b601260009054906101000a900460ff161580156126b75750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156126e357600360009054906101000a900460ff16156126da576126d961307d565b5b6126e2613120565b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561274b57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156127a3575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156127f3576127b3848484613321565b6127f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e990614b09565b60405180910390fd5b5b6000806128018686866134b8565b91509150801561282557816006600082825461281d91906145cc565b925050819055505b6000828561283391906143f4565b905060008311156128cd5782600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461288991906145cc565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b84600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461291891906143f4565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129a691906145cc565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051612a4691906139d5565b60405180910390a3600360009054906101000a900460ff168015612ab35750600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612ac157612ac061307d565b5b600193505050509392505050565b612ad881612236565b6000600267ffffffffffffffff811115612af557612af4614b29565b5b604051908082528060200260200182016040528015612b235781602001602082028036833780820191505090505b5090503081600081518110612b3b57612b3a614b58565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612bac57612bab614b58565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612c4a959493929190614c45565b600060405180830381600087803b158015612c6457600080fd5b505af1158015612c78573d6000803e3d6000fd5b505050505050565b6000600382612c8f919061459b565b90506000600282612ca091906142f7565b9050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612d0a573d6000803e3d6000fd5b50600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612d73573d6000803e3d6000fd5b50505050565b6009600a612d8791906142ac565b6103e86009600a612d9891906142ac565b620186a0612da691906142f7565b600a612db291906142f7565b612dbc919061459b565b612dc691906145cc565b6009819055506009600a612dda91906142ac565b6103e86009600a612deb91906142ac565b620186a0612df991906142f7565b600a612e0591906142f7565b612e0f919061459b565b612e1991906145cc565b600a819055506006600560016101000a81548160ff021916908360ff1602179055506006600560026101000a81548160ff021916908360ff160217905550601e600560036101000a81548160ff021916908360ff1602179055506028600860006101000a81548161ffff021916908361ffff1602179055506064600860026101000a81548161ffff021916908361ffff160217905550612eb761307d565b6001600360006101000a81548160ff021916908315150217905550565b600080600060016000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401612fbc9190614c9f565b602060405180830381865afa158015612fd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ffd9190614cba565b905081819350935050509091565b6000806000806000861461306e57856009600a61302891906142ac565b8661303391906142f7565b61303d919061459b565b91506064600860009054906101000a900461ffff1661ffff168361306191906142f7565b61306b919061459b565b90505b81819350935050509250929050565b600080613088612ed4565b915091506000613098838361300b565b9150506064600860029054906101000a900461ffff1660646130ba9190614ce7565b61ffff166007546130cb91906142f7565b6130d5919061459b565b81111561311b57806007819055507fad555e2fd7f9bd9a23191d0be74913cc0ce598a128cf227a4464d7521bb47c3b8160405161311291906139d5565b60405180910390a15b505050565b6001601260006101000a81548160ff0219169083151502179055506000600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600060065490508181111561319957816006819055508190505b600081836131a791906143f4565b90506000831180156131bb5750600b548310155b80156131d35750600360009054906101000a900460ff165b1561330157600c54831061323b576000600c546103e8856131f491906142f7565b6131fe919061459b565b90506103e8818461320f919061459b565b61321991906142f7565b925082600c5461322991906143f4565b9150818361323791906145cc565b9350505b600060028361324a919061459b565b90506000818561325a91906143f4565b90506009600a61326a91906142ac565b81106132e557600047905061327e82612acf565b6000814761328c91906143f4565b905060008411156132e25760008785836132a691906142f7565b6132b0919061459b565b90506132bb85612236565b6132c785826000612420565b86600660008282546132d991906143f4565b92505081905550505b50505b600047905060008111156132fd576132fc81612c80565b5b5050505b5050506000601260006101000a81548160ff021916908315150217905550565b60008060019050600360009054906101000a900460ff16801561338e5750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133e45750601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156134ad576009548311156133fc57600090506134ac565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156134a15750600a5483600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461349f91906145cc565b115b156134ab57600090505b5b5b809150509392505050565b600080600080600360009054906101000a900460ff1615806135235750601060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806135775750601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561358557600091506136d5565b600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613608576064600560019054906101000a900460ff1660ff16866135f791906142f7565b613601919061459b565b91506136d4565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156136ce57613663856136e5565b9050801561369c576064600560039054906101000a900460ff1660ff168661368b91906142f7565b613695919061459b565b91506136c9565b6064600560029054906101000a900460ff1660ff16866136bc91906142f7565b6136c6919061459b565b91505b6136d3565b600091505b5b5b8181935093505050935093915050565b6000806000806136f3612ed4565b915091506000613703838361300b565b50905060006009600a61371691906142ac565b828861372291906142f7565b61372c919061459b565b90506000613750888661373f91906145cc565b838661374b91906143f4565b61300b565b50905060075481101561376257600195505b859650505050505050919050565b600081519050919050565b600082825260208201905092915050565b60005b838110156137aa57808201518184015260208101905061378f565b838111156137b9576000848401525b50505050565b6000601f19601f8301169050919050565b60006137db82613770565b6137e5818561377b565b93506137f581856020860161378c565b6137fe816137bf565b840191505092915050565b6000602082019050818103600083015261382381846137d0565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061385b82613830565b9050919050565b61386b81613850565b811461387657600080fd5b50565b60008135905061388881613862565b92915050565b6000819050919050565b6138a18161388e565b81146138ac57600080fd5b50565b6000813590506138be81613898565b92915050565b600080604083850312156138db576138da61382b565b5b60006138e985828601613879565b92505060206138fa858286016138af565b9150509250929050565b60008115159050919050565b61391981613904565b82525050565b60006020820190506139346000830184613910565b92915050565b600060ff82169050919050565b6139508161393a565b811461395b57600080fd5b50565b60008135905061396d81613947565b92915050565b60008060006060848603121561398c5761398b61382b565b5b600061399a8682870161395e565b93505060206139ab8682870161395e565b92505060406139bc8682870161395e565b9150509250925092565b6139cf8161388e565b82525050565b60006020820190506139ea60008301846139c6565b92915050565b6139f981613904565b8114613a0457600080fd5b50565b600081359050613a16816139f0565b92915050565b600080600060608486031215613a3557613a3461382b565b5b6000613a4386828701613879565b9350506020613a5486828701613a07565b9250506040613a6586828701613a07565b9150509250925092565b600080600060608486031215613a8857613a8761382b565b5b6000613a9686828701613879565b9350506020613aa786828701613879565b9250506040613ab8868287016138af565b9150509250925092565b613acb8161393a565b82525050565b6000602082019050613ae66000830184613ac2565b92915050565b600080600060608486031215613b0557613b0461382b565b5b6000613b1386828701613a07565b9350506020613b2486828701613a07565b9250506040613b358682870161395e565b9150509250925092565b6000608082019050613b5460008301876139c6565b613b6160208301866139c6565b613b6e60408301856139c6565b613b7b60608301846139c6565b95945050505050565b600060208284031215613b9a57613b9961382b565b5b6000613ba884828501613879565b91505092915050565b60008060408385031215613bc857613bc761382b565b5b6000613bd685828601613879565b9250506020613be785828601613879565b9150509250929050565b6000604082019050613c066000830185613910565b613c136020830184613910565b9392505050565b600061ffff82169050919050565b613c3181613c1a565b8114613c3c57600080fd5b50565b600081359050613c4e81613c28565b92915050565b60008060408385031215613c6b57613c6a61382b565b5b6000613c7985828601613c3f565b9250506020613c8a85828601613c3f565b9150509250929050565b6000608082019050613ca96000830187613ac2565b613cb66020830186613ac2565b613cc36040830185613ac2565b613cd06060830184613ac2565b95945050505050565b613ce281613850565b82525050565b6000608082019050613cfd6000830187613cd9565b613d0a6020830186613cd9565b613d176040830185613cd9565b613d246060830184613cd9565b95945050505050565b613d3681613c1a565b82525050565b600060a082019050613d516000830188613d2d565b613d5e6020830187613d2d565b613d6b60408301866139c6565b613d7860608301856139c6565b613d856080830184613910565b9695505050505050565b600063ffffffff82169050919050565b613da881613d8f565b8114613db357600080fd5b50565b600081359050613dc581613d9f565b92915050565b60008060008060808587031215613de557613de461382b565b5b6000613df387828801613db6565b9450506020613e0487828801613db6565b9350506040613e1587828801613db6565b9250506060613e2687828801613db6565b91505092959194509250565b6000613e3d82613830565b9050919050565b613e4d81613e32565b8114613e5857600080fd5b50565b600081359050613e6a81613e44565b92915050565b600060208284031215613e8657613e8561382b565b5b6000613e9484828501613e5b565b91505092915050565b7f4f6e6c7920636f6e7472616374206f776e65722063616e2063616c6c2074686960008201527f732066756e6374696f6e00000000000000000000000000000000000000000000602082015250565b6000613ef9602a8361377b565b9150613f0482613e9d565b604082019050919050565b60006020820190508181036000830152613f2881613eec565b9050919050565b7f74726164696e6720616c7265616479206f70656e000000000000000000000000600082015250565b6000613f6560148361377b565b9150613f7082613f2f565b602082019050919050565b60006020820190508181036000830152613f9481613f58565b9050919050565b600081519050613faa81613862565b92915050565b600060208284031215613fc657613fc561382b565b5b6000613fd484828501613f9b565b91505092915050565b6000604082019050613ff26000830185613cd9565b613fff6020830184613cd9565b9392505050565b7f6e6f2065746820746f2061646400000000000000000000000000000000000000600082015250565b600061403c600d8361377b565b915061404782614006565b602082019050919050565b6000602082019050818103600083015261406b8161402f565b9050919050565b7f6e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b60006140a860098361377b565b91506140b382614072565b602082019050919050565b600060208201905081810360008301526140d78161409b565b9050919050565b7f54617820746f6f20686967680000000000000000000000000000000000000000600082015250565b6000614114600c8361377b565b915061411f826140de565b602082019050919050565b6000602082019050818103600083015261414381614107565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156141d0578086048111156141ac576141ab61414a565b5b60018516156141bb5780820291505b80810290506141c985614179565b9450614190565b94509492505050565b6000826141e957600190506142a5565b816141f757600090506142a5565b816001811461420d576002811461421757614246565b60019150506142a5565b60ff8411156142295761422861414a565b5b8360020a9150848211156142405761423f61414a565b5b506142a5565b5060208310610133831016604e8410600b841016171561427b5782820a9050838111156142765761427561414a565b5b6142a5565b6142888484846001614186565b9250905081840481111561429f5761429e61414a565b5b81810290505b9392505050565b60006142b78261388e565b91506142c28361393a565b92506142ef7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846141d9565b905092915050565b60006143028261388e565b915061430d8361388e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156143465761434561414a565b5b828202905092915050565b60006060820190506143666000830186613cd9565b6143736020830185613910565b6143806040830184613910565b949350505050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b60006143be60108361377b565b91506143c982614388565b602082019050919050565b600060208201905081810360008301526143ed816143b1565b9050919050565b60006143ff8261388e565b915061440a8361388e565b92508282101561441d5761441c61414a565b5b828203905092915050565b7f4e6f20616374696f6e20676976656e0000000000000000000000000000000000600082015250565b600061445e600f8361377b565b915061446982614428565b602082019050919050565b6000602082019050818103600083015261448d81614451565b9050919050565b7f53776170206d75737420626520312d3130302500000000000000000000000000600082015250565b60006144ca60138361377b565b91506144d582614494565b602082019050919050565b600060208201905081810360008301526144f9816144bd565b9050919050565b7f4e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b600061453660098361377b565b915061454182614500565b602082019050919050565b6000602082019050818103600083015261456581614529565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006145a68261388e565b91506145b18361388e565b9250826145c1576145c061456c565b5b828204905092915050565b60006145d78261388e565b91506145e28361388e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156146175761461661414a565b5b828201905092915050565b7f7478206c696d697420746f6f206c6f7700000000000000000000000000000000600082015250565b600061465860108361377b565b915061466382614622565b602082019050919050565b600060208201905081810360008301526146878161464b565b9050919050565b7f77616c6c6574206c696d697420746f6f206c6f77000000000000000000000000600082015250565b60006146c460148361377b565b91506146cf8261468e565b602082019050919050565b600060208201905081810360008301526146f3816146b7565b9050919050565b600060408201905061470f60008301856139c6565b61471c60208301846139c6565b9392505050565b7f4c50206e6f7420696e697469616c697a65640000000000000000000000000000600082015250565b600061475960128361377b565b915061476482614723565b602082019050919050565b600060208201905081810360008301526147888161474c565b9050919050565b7f416464206c697175696469747920666972737400000000000000000000000000600082015250565b60006147c560138361377b565b91506147d08261478f565b602082019050919050565b600060208201905081810360008301526147f4816147b8565b9050919050565b7f466c6f6f722070657263656e74616765206d75737420626520312d3430000000600082015250565b6000614831601d8361377b565b915061483c826147fb565b602082019050919050565b6000602082019050818103600083015261486081614824565b9050919050565b7f43616e6e6f742062652030000000000000000000000000000000000000000000600082015250565b600061489d600b8361377b565b91506148a882614867565b602082019050919050565b600060208201905081810360008301526148cc81614890565b9050919050565b6000819050919050565b60006148f86148f36148ee84613830565b6148d3565b613830565b9050919050565b600061490a826148dd565b9050919050565b600061491c826148ff565b9050919050565b61492c81614911565b82525050565b60006020820190506149476000830184614923565b92915050565b6000819050919050565b600061497261496d6149688461494d565b6148d3565b61388e565b9050919050565b61498281614957565b82525050565b600060c08201905061499d6000830189613cd9565b6149aa60208301886139c6565b6149b76040830187614979565b6149c46060830186614979565b6149d16080830185613cd9565b6149de60a08301846139c6565b979650505050505050565b6000815190506149f881613898565b92915050565b600080600060608486031215614a1757614a1661382b565b5b6000614a25868287016149e9565b9350506020614a36868287016149e9565b9250506040614a47868287016149e9565b9150509250925092565b7f5a65726f2061646472657373206e6f7420616c6c6f7765640000000000000000600082015250565b6000614a8760188361377b565b9150614a9282614a51565b602082019050919050565b60006020820190508181036000830152614ab681614a7a565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b6000614af360118361377b565b9150614afe82614abd565b602082019050919050565b60006020820190508181036000830152614b2281614ae6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614bbc81613850565b82525050565b6000614bce8383614bb3565b60208301905092915050565b6000602082019050919050565b6000614bf282614b87565b614bfc8185614b92565b9350614c0783614ba3565b8060005b83811015614c38578151614c1f8882614bc2565b9750614c2a83614bda565b925050600181019050614c0b565b5085935050505092915050565b600060a082019050614c5a60008301886139c6565b614c676020830187614979565b8181036040830152614c798186614be7565b9050614c886060830185613cd9565b614c9560808301846139c6565b9695505050505050565b6000602082019050614cb46000830184613cd9565b92915050565b600060208284031215614cd057614ccf61382b565b5b6000614cde848285016149e9565b91505092915050565b6000614cf282613c1a565b9150614cfd83613c1a565b92508261ffff03821115614d1457614d1361414a565b5b82820190509291505056fea26469706673582212204ad657fe9af098ecbe55316d9f275df0a2044b658148a616ef98f5280cc4cbc564736f6c634300080f0033

Deployed Bytecode

0x60806040526004361061016a5760003560e01c8063931b68ea116100d1578063db7a46051161008a578063de9bceaf11610064578063de9bceaf14610545578063e4dbc45b1461056e578063f2fde38b14610597578063ffb54a99146105c057610171565b8063db7a4605146104ab578063dba0cffe146104d9578063dd62ed3e1461050857610171565b8063931b68ea1461039757806395d89b41146103d5578063a9059cbb14610400578063b14218031461043d578063b8a7d10814610466578063c9567bf91461049457610171565b806323b872dd1161012357806323b872dd14610272578063313ce567146102af5780635fd172ef146102da5780636f89e4091461030357806370a0823114610331578063740bf4971461036e57610171565b80630210a83d1461017657806306fdde031461018d578063095ea7b3146101b857806309ef509f146101f557806318160ddd1461021e57806318839bc31461024957610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b6105eb565b005b34801561019957600080fd5b506101a2610aed565b6040516101af9190613809565b60405180910390f35b3480156101c457600080fd5b506101df60048036038101906101da91906138c4565b610b2a565b6040516101ec919061391f565b60405180910390f35b34801561020157600080fd5b5061021c60048036038101906102179190613973565b610c67565b005b34801561022a57600080fd5b50610233610e0b565b60405161024091906139d5565b60405180910390f35b34801561025557600080fd5b50610270600480360381019061026b9190613a1c565b610e2e565b005b34801561027e57600080fd5b5061029960048036038101906102949190613a6f565b610faa565b6040516102a6919061391f565b60405180910390f35b3480156102bb57600080fd5b506102c46111b3565b6040516102d19190613ad1565b60405180910390f35b3480156102e657600080fd5b5061030160048036038101906102fc9190613aec565b6111bc565b005b34801561030f57600080fd5b506103186113c2565b6040516103289493929190613b3f565b60405180910390f35b34801561033d57600080fd5b5061035860048036038101906103539190613b84565b6113e2565b60405161036591906139d5565b60405180910390f35b34801561037a57600080fd5b5061039560048036038101906103909190613bb1565b61142b565b005b3480156103a357600080fd5b506103be60048036038101906103b99190613b84565b6116d8565b6040516103cc929190613bf1565b60405180910390f35b3480156103e157600080fd5b506103ea61177e565b6040516103f79190613809565b60405180910390f35b34801561040c57600080fd5b50610427600480360381019061042291906138c4565b6117bb565b604051610434919061391f565b60405180910390f35b34801561044957600080fd5b50610464600480360381019061045f9190613c54565b611817565b005b34801561047257600080fd5b5061047b611a10565b60405161048b9493929190613c94565b60405180910390f35b3480156104a057600080fd5b506104a9611a64565b005b3480156104b757600080fd5b506104c0611c81565b6040516104d09493929190613ce8565b60405180910390f35b3480156104e557600080fd5b506104ee611d1f565b6040516104ff959493929190613d3c565b60405180910390f35b34801561051457600080fd5b5061052f600480360381019061052a9190613bb1565b611d8a565b60405161053c91906139d5565b60405180910390f35b34801561055157600080fd5b5061056c60048036038101906105679190613c54565b611e11565b005b34801561057a57600080fd5b5061059560048036038101906105909190613dcb565b611fae565b005b3480156105a357600080fd5b506105be60048036038101906105b99190613e70565b612117565b005b3480156105cc57600080fd5b506105d561221f565b6040516105e2919061391f565b60405180910390f35b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610679576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067090613f0f565b60405180910390fd5b600360009054906101000a900460ff16156106c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c090613f7b565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561078b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107af9190613fb0565b601260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e39190613fb0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b815260040161093f929190613fdd565b6020604051808303816000875af115801561095e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109829190613fb0565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600047905060008111610a84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7b90614052565b60405180910390fd5b6000610a8f306113e2565b905060008111610ad4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acb906140be565b60405180910390fd5b610add81612236565b610ae981836000612420565b5050565b60606040518060400160405280600581526020017f416b697261000000000000000000000000000000000000000000000000000000815250905090565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403610b7757600080fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c5591906139d5565b60405180910390a36001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cec90613f0f565b60405180910390fd5b600560009054906101000a900460ff1660ff168360ff1611158015610d2f5750600560009054906101000a900460ff1660ff168260ff1611155b610d6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d659061412a565b60405180910390fd5b601e8160ff161115610db5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dac9061412a565b60405180910390fd5b82600560016101000a81548160ff021916908360ff16021790555081600560026101000a81548160ff021916908360ff16021790555080600560036101000a81548160ff021916908360ff160217905550505050565b60006009600a610e1b91906142ac565b620186a0610e2991906142f7565b905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ebc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb390613f0f565b60405180910390fd5b81601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fd1210f82d8da3a4173d7d74f8a9f5c81b8f83b77529ac2684baff199241f4ed0838383604051610f9d93929190614351565b60405180910390a1505050565b6000610fb4612522565b610ff3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fea906143d4565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461119f5781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461111e91906143f4565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6111aa8484846125a7565b90509392505050565b60006009905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461124a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124190613f0f565b60405180910390fd5b6001601260006101000a81548160ff021916908315150217905550828061126e5750815b6112ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a490614474565b60405180910390fd5b821561138c5760008160ff161180156112ca575060648160ff1611155b611309576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611300906144e0565b60405180910390fd5b6000611314306113e2565b905060008111611359576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113509061454c565b60405180910390fd5b600060648360ff168361136c91906142f7565b611376919061459b565b905061138181612acf565b600060068190555050505b81156113a25760004790506113a081612c80565b505b6000601260006101000a81548160ff021916908315150217905550505050565b600080600080600954600a54600b54600c54935093509350935090919293565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b090613f0f565b60405180910390fd5b81600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f0a3568000da48cc6e5e2c8e7a94d1bfa3607d1734c7dbd7b04ac9d77316b471a82826040516116cc929190613fdd565b60405180910390a15050565b600080601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691509150915091565b60606040518060400160405280600581526020017f416b697261000000000000000000000000000000000000000000000000000000815250905090565b60006117c5612522565b611804576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fb906143d4565b60405180910390fd5b61180f3384846125a7565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146118a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189c90613f0f565b60405180910390fd5b600060016103e88461ffff166009600a6118bf91906142ac565b620186a06118cd91906142f7565b6118d791906142f7565b6118e1919061459b565b6118eb91906145cc565b9050600954811015611932576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119299061466e565b60405180910390fd5b80600981905550600060016103e88461ffff166009600a61195391906142ac565b620186a061196191906142f7565b61196b91906142f7565b611975919061459b565b61197f91906145cc565b9050600a548110156119c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119bd906146da565b60405180910390fd5b80600a819055507f72c1c0546833bfc2a43408333cd18ef1d9c882e9d46f89002a3fd40bceffe5f7600954600a54604051611a029291906146fa565b60405180910390a150505050565b600080600080600560009054906101000a900460ff16600560019054906101000a900460ff16600560029054906101000a900460ff16600560039054906101000a900460ff16935093509350935090919293565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611af2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae990613f0f565b60405180910390fd5b600360009054906101000a900460ff1615611b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3990613f7b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611bd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bca9061476f565b60405180910390fd5b600060016000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611c77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6e906147db565b60405180910390fd5b611c7f612d79565b565b60008060008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16935093509350935090919293565b6000806000806000806000611d32612ed4565b915091506000611d42838361300b565b509050600060075482109050600860009054906101000a900461ffff16600860029054906101000a900461ffff16600754848498509850985098509850505050509091929394565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9690613f0f565b60405180910390fd5b60008261ffff16118015611eb8575060288261ffff1611155b611ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eee90614847565b60405180910390fd5b8161ffff16600860009054906101000a900461ffff1661ffff16600754611f1e91906142f7565b611f28919061459b565b5081600860006101000a81548161ffff021916908361ffff16021790555060008161ffff1611611f8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f84906148b3565b60405180910390fd5b80600860026101000a81548161ffff021916908361ffff1602179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461203c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203390613f0f565b60405180910390fd5b8263ffffffff168463ffffffff166009600a61205891906142ac565b620186a061206691906142f7565b61207091906142f7565b61207a919061459b565b600b819055508063ffffffff168263ffffffff166009600a61209c91906142ac565b620186a06120aa91906142f7565b6120b491906142f7565b6120be919061459b565b600c81905550600b54600c54116120d457600080fd5b7f325d25781eb858cfe3b3ede984fc8a66dd8e8be0b4a349189e05d0a35e6803bb600b54600c546040516121099291906146fa565b60405180910390a150505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219c90613f0f565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516122149190614932565b60405180910390a150565b6000600360009054906101000a900460ff16905090565b80600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561241d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60405161241491906139d5565b60405180910390a35b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508161246f5760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b81526004016124d696959493929190614988565b60606040518083038185885af11580156124f4573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061251991906149fe565b50505050505050565b60008060009050600360009054906101000a900460ff161561254757600190506125a0565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff160361259f57600190505b5b8091505090565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156126125750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b612651576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264890614a9d565b60405180910390fd5b601260009054906101000a900460ff161580156126b75750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156126e357600360009054906101000a900460ff16156126da576126d961307d565b5b6126e2613120565b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561274b57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156127a3575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156127f3576127b3848484613321565b6127f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e990614b09565b60405180910390fd5b5b6000806128018686866134b8565b91509150801561282557816006600082825461281d91906145cc565b925050819055505b6000828561283391906143f4565b905060008311156128cd5782600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461288991906145cc565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b84600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461291891906143f4565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129a691906145cc565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051612a4691906139d5565b60405180910390a3600360009054906101000a900460ff168015612ab35750600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612ac157612ac061307d565b5b600193505050509392505050565b612ad881612236565b6000600267ffffffffffffffff811115612af557612af4614b29565b5b604051908082528060200260200182016040528015612b235781602001602082028036833780820191505090505b5090503081600081518110612b3b57612b3a614b58565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612bac57612bab614b58565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612c4a959493929190614c45565b600060405180830381600087803b158015612c6457600080fd5b505af1158015612c78573d6000803e3d6000fd5b505050505050565b6000600382612c8f919061459b565b90506000600282612ca091906142f7565b9050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612d0a573d6000803e3d6000fd5b50600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612d73573d6000803e3d6000fd5b50505050565b6009600a612d8791906142ac565b6103e86009600a612d9891906142ac565b620186a0612da691906142f7565b600a612db291906142f7565b612dbc919061459b565b612dc691906145cc565b6009819055506009600a612dda91906142ac565b6103e86009600a612deb91906142ac565b620186a0612df991906142f7565b600a612e0591906142f7565b612e0f919061459b565b612e1991906145cc565b600a819055506006600560016101000a81548160ff021916908360ff1602179055506006600560026101000a81548160ff021916908360ff160217905550601e600560036101000a81548160ff021916908360ff1602179055506028600860006101000a81548161ffff021916908361ffff1602179055506064600860026101000a81548161ffff021916908361ffff160217905550612eb761307d565b6001600360006101000a81548160ff021916908315150217905550565b600080600060016000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401612fbc9190614c9f565b602060405180830381865afa158015612fd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ffd9190614cba565b905081819350935050509091565b6000806000806000861461306e57856009600a61302891906142ac565b8661303391906142f7565b61303d919061459b565b91506064600860009054906101000a900461ffff1661ffff168361306191906142f7565b61306b919061459b565b90505b81819350935050509250929050565b600080613088612ed4565b915091506000613098838361300b565b9150506064600860029054906101000a900461ffff1660646130ba9190614ce7565b61ffff166007546130cb91906142f7565b6130d5919061459b565b81111561311b57806007819055507fad555e2fd7f9bd9a23191d0be74913cc0ce598a128cf227a4464d7521bb47c3b8160405161311291906139d5565b60405180910390a15b505050565b6001601260006101000a81548160ff0219169083151502179055506000600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600060065490508181111561319957816006819055508190505b600081836131a791906143f4565b90506000831180156131bb5750600b548310155b80156131d35750600360009054906101000a900460ff165b1561330157600c54831061323b576000600c546103e8856131f491906142f7565b6131fe919061459b565b90506103e8818461320f919061459b565b61321991906142f7565b925082600c5461322991906143f4565b9150818361323791906145cc565b9350505b600060028361324a919061459b565b90506000818561325a91906143f4565b90506009600a61326a91906142ac565b81106132e557600047905061327e82612acf565b6000814761328c91906143f4565b905060008411156132e25760008785836132a691906142f7565b6132b0919061459b565b90506132bb85612236565b6132c785826000612420565b86600660008282546132d991906143f4565b92505081905550505b50505b600047905060008111156132fd576132fc81612c80565b5b5050505b5050506000601260006101000a81548160ff021916908315150217905550565b60008060019050600360009054906101000a900460ff16801561338e5750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133e45750601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156134ad576009548311156133fc57600090506134ac565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156134a15750600a5483600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461349f91906145cc565b115b156134ab57600090505b5b5b809150509392505050565b600080600080600360009054906101000a900460ff1615806135235750601060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806135775750601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561358557600091506136d5565b600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613608576064600560019054906101000a900460ff1660ff16866135f791906142f7565b613601919061459b565b91506136d4565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156136ce57613663856136e5565b9050801561369c576064600560039054906101000a900460ff1660ff168661368b91906142f7565b613695919061459b565b91506136c9565b6064600560029054906101000a900460ff1660ff16866136bc91906142f7565b6136c6919061459b565b91505b6136d3565b600091505b5b5b8181935093505050935093915050565b6000806000806136f3612ed4565b915091506000613703838361300b565b50905060006009600a61371691906142ac565b828861372291906142f7565b61372c919061459b565b90506000613750888661373f91906145cc565b838661374b91906143f4565b61300b565b50905060075481101561376257600195505b859650505050505050919050565b600081519050919050565b600082825260208201905092915050565b60005b838110156137aa57808201518184015260208101905061378f565b838111156137b9576000848401525b50505050565b6000601f19601f8301169050919050565b60006137db82613770565b6137e5818561377b565b93506137f581856020860161378c565b6137fe816137bf565b840191505092915050565b6000602082019050818103600083015261382381846137d0565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061385b82613830565b9050919050565b61386b81613850565b811461387657600080fd5b50565b60008135905061388881613862565b92915050565b6000819050919050565b6138a18161388e565b81146138ac57600080fd5b50565b6000813590506138be81613898565b92915050565b600080604083850312156138db576138da61382b565b5b60006138e985828601613879565b92505060206138fa858286016138af565b9150509250929050565b60008115159050919050565b61391981613904565b82525050565b60006020820190506139346000830184613910565b92915050565b600060ff82169050919050565b6139508161393a565b811461395b57600080fd5b50565b60008135905061396d81613947565b92915050565b60008060006060848603121561398c5761398b61382b565b5b600061399a8682870161395e565b93505060206139ab8682870161395e565b92505060406139bc8682870161395e565b9150509250925092565b6139cf8161388e565b82525050565b60006020820190506139ea60008301846139c6565b92915050565b6139f981613904565b8114613a0457600080fd5b50565b600081359050613a16816139f0565b92915050565b600080600060608486031215613a3557613a3461382b565b5b6000613a4386828701613879565b9350506020613a5486828701613a07565b9250506040613a6586828701613a07565b9150509250925092565b600080600060608486031215613a8857613a8761382b565b5b6000613a9686828701613879565b9350506020613aa786828701613879565b9250506040613ab8868287016138af565b9150509250925092565b613acb8161393a565b82525050565b6000602082019050613ae66000830184613ac2565b92915050565b600080600060608486031215613b0557613b0461382b565b5b6000613b1386828701613a07565b9350506020613b2486828701613a07565b9250506040613b358682870161395e565b9150509250925092565b6000608082019050613b5460008301876139c6565b613b6160208301866139c6565b613b6e60408301856139c6565b613b7b60608301846139c6565b95945050505050565b600060208284031215613b9a57613b9961382b565b5b6000613ba884828501613879565b91505092915050565b60008060408385031215613bc857613bc761382b565b5b6000613bd685828601613879565b9250506020613be785828601613879565b9150509250929050565b6000604082019050613c066000830185613910565b613c136020830184613910565b9392505050565b600061ffff82169050919050565b613c3181613c1a565b8114613c3c57600080fd5b50565b600081359050613c4e81613c28565b92915050565b60008060408385031215613c6b57613c6a61382b565b5b6000613c7985828601613c3f565b9250506020613c8a85828601613c3f565b9150509250929050565b6000608082019050613ca96000830187613ac2565b613cb66020830186613ac2565b613cc36040830185613ac2565b613cd06060830184613ac2565b95945050505050565b613ce281613850565b82525050565b6000608082019050613cfd6000830187613cd9565b613d0a6020830186613cd9565b613d176040830185613cd9565b613d246060830184613cd9565b95945050505050565b613d3681613c1a565b82525050565b600060a082019050613d516000830188613d2d565b613d5e6020830187613d2d565b613d6b60408301866139c6565b613d7860608301856139c6565b613d856080830184613910565b9695505050505050565b600063ffffffff82169050919050565b613da881613d8f565b8114613db357600080fd5b50565b600081359050613dc581613d9f565b92915050565b60008060008060808587031215613de557613de461382b565b5b6000613df387828801613db6565b9450506020613e0487828801613db6565b9350506040613e1587828801613db6565b9250506060613e2687828801613db6565b91505092959194509250565b6000613e3d82613830565b9050919050565b613e4d81613e32565b8114613e5857600080fd5b50565b600081359050613e6a81613e44565b92915050565b600060208284031215613e8657613e8561382b565b5b6000613e9484828501613e5b565b91505092915050565b7f4f6e6c7920636f6e7472616374206f776e65722063616e2063616c6c2074686960008201527f732066756e6374696f6e00000000000000000000000000000000000000000000602082015250565b6000613ef9602a8361377b565b9150613f0482613e9d565b604082019050919050565b60006020820190508181036000830152613f2881613eec565b9050919050565b7f74726164696e6720616c7265616479206f70656e000000000000000000000000600082015250565b6000613f6560148361377b565b9150613f7082613f2f565b602082019050919050565b60006020820190508181036000830152613f9481613f58565b9050919050565b600081519050613faa81613862565b92915050565b600060208284031215613fc657613fc561382b565b5b6000613fd484828501613f9b565b91505092915050565b6000604082019050613ff26000830185613cd9565b613fff6020830184613cd9565b9392505050565b7f6e6f2065746820746f2061646400000000000000000000000000000000000000600082015250565b600061403c600d8361377b565b915061404782614006565b602082019050919050565b6000602082019050818103600083015261406b8161402f565b9050919050565b7f6e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b60006140a860098361377b565b91506140b382614072565b602082019050919050565b600060208201905081810360008301526140d78161409b565b9050919050565b7f54617820746f6f20686967680000000000000000000000000000000000000000600082015250565b6000614114600c8361377b565b915061411f826140de565b602082019050919050565b6000602082019050818103600083015261414381614107565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156141d0578086048111156141ac576141ab61414a565b5b60018516156141bb5780820291505b80810290506141c985614179565b9450614190565b94509492505050565b6000826141e957600190506142a5565b816141f757600090506142a5565b816001811461420d576002811461421757614246565b60019150506142a5565b60ff8411156142295761422861414a565b5b8360020a9150848211156142405761423f61414a565b5b506142a5565b5060208310610133831016604e8410600b841016171561427b5782820a9050838111156142765761427561414a565b5b6142a5565b6142888484846001614186565b9250905081840481111561429f5761429e61414a565b5b81810290505b9392505050565b60006142b78261388e565b91506142c28361393a565b92506142ef7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846141d9565b905092915050565b60006143028261388e565b915061430d8361388e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156143465761434561414a565b5b828202905092915050565b60006060820190506143666000830186613cd9565b6143736020830185613910565b6143806040830184613910565b949350505050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b60006143be60108361377b565b91506143c982614388565b602082019050919050565b600060208201905081810360008301526143ed816143b1565b9050919050565b60006143ff8261388e565b915061440a8361388e565b92508282101561441d5761441c61414a565b5b828203905092915050565b7f4e6f20616374696f6e20676976656e0000000000000000000000000000000000600082015250565b600061445e600f8361377b565b915061446982614428565b602082019050919050565b6000602082019050818103600083015261448d81614451565b9050919050565b7f53776170206d75737420626520312d3130302500000000000000000000000000600082015250565b60006144ca60138361377b565b91506144d582614494565b602082019050919050565b600060208201905081810360008301526144f9816144bd565b9050919050565b7f4e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b600061453660098361377b565b915061454182614500565b602082019050919050565b6000602082019050818103600083015261456581614529565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006145a68261388e565b91506145b18361388e565b9250826145c1576145c061456c565b5b828204905092915050565b60006145d78261388e565b91506145e28361388e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156146175761461661414a565b5b828201905092915050565b7f7478206c696d697420746f6f206c6f7700000000000000000000000000000000600082015250565b600061465860108361377b565b915061466382614622565b602082019050919050565b600060208201905081810360008301526146878161464b565b9050919050565b7f77616c6c6574206c696d697420746f6f206c6f77000000000000000000000000600082015250565b60006146c460148361377b565b91506146cf8261468e565b602082019050919050565b600060208201905081810360008301526146f3816146b7565b9050919050565b600060408201905061470f60008301856139c6565b61471c60208301846139c6565b9392505050565b7f4c50206e6f7420696e697469616c697a65640000000000000000000000000000600082015250565b600061475960128361377b565b915061476482614723565b602082019050919050565b600060208201905081810360008301526147888161474c565b9050919050565b7f416464206c697175696469747920666972737400000000000000000000000000600082015250565b60006147c560138361377b565b91506147d08261478f565b602082019050919050565b600060208201905081810360008301526147f4816147b8565b9050919050565b7f466c6f6f722070657263656e74616765206d75737420626520312d3430000000600082015250565b6000614831601d8361377b565b915061483c826147fb565b602082019050919050565b6000602082019050818103600083015261486081614824565b9050919050565b7f43616e6e6f742062652030000000000000000000000000000000000000000000600082015250565b600061489d600b8361377b565b91506148a882614867565b602082019050919050565b600060208201905081810360008301526148cc81614890565b9050919050565b6000819050919050565b60006148f86148f36148ee84613830565b6148d3565b613830565b9050919050565b600061490a826148dd565b9050919050565b600061491c826148ff565b9050919050565b61492c81614911565b82525050565b60006020820190506149476000830184614923565b92915050565b6000819050919050565b600061497261496d6149688461494d565b6148d3565b61388e565b9050919050565b61498281614957565b82525050565b600060c08201905061499d6000830189613cd9565b6149aa60208301886139c6565b6149b76040830187614979565b6149c46060830186614979565b6149d16080830185613cd9565b6149de60a08301846139c6565b979650505050505050565b6000815190506149f881613898565b92915050565b600080600060608486031215614a1757614a1661382b565b5b6000614a25868287016149e9565b9350506020614a36868287016149e9565b9250506040614a47868287016149e9565b9150509250925092565b7f5a65726f2061646472657373206e6f7420616c6c6f7765640000000000000000600082015250565b6000614a8760188361377b565b9150614a9282614a51565b602082019050919050565b60006020820190508181036000830152614ab681614a7a565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b6000614af360118361377b565b9150614afe82614abd565b602082019050919050565b60006020820190508181036000830152614b2281614ae6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614bbc81613850565b82525050565b6000614bce8383614bb3565b60208301905092915050565b6000602082019050919050565b6000614bf282614b87565b614bfc8185614b92565b9350614c0783614ba3565b8060005b83811015614c38578151614c1f8882614bc2565b9750614c2a83614bda565b925050600181019050614c0b565b5085935050505092915050565b600060a082019050614c5a60008301886139c6565b614c676020830187614979565b8181036040830152614c798186614be7565b9050614c886060830185613cd9565b614c9560808301846139c6565b9695505050505050565b6000602082019050614cb46000830184613cd9565b92915050565b600060208284031215614cd057614ccf61382b565b5b6000614cde848285016149e9565b91505092915050565b6000614cf282613c1a565b9150614cfd83613c1a565b92508261ffff03821115614d1457614d1361414a565b5b82820190509291505056fea26469706673582212204ad657fe9af098ecbe55316d9f275df0a2044b658148a616ef98f5280cc4cbc564736f6c634300080f0033

Deployed Bytecode Sourcemap

1980:17157:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6359:779;;;;;;;;;;;;;:::i;:::-;;5217:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5546:235;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15771:372;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4956:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14368:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5991:363;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5047:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18462:672;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16805:216;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;5300:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16353:447;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14215:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;5130:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5786:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17026:505;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15537:229;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;7777:248;;;;;;;;;;;;;:::i;:::-;;16148:200;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;14589:517;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;5408:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15111:421;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17536:347;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1169:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8731:76;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6359:779;1108:5;;;;;;;;;;1094:19;;:10;:19;;;1086:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;6423:12:::1;;;;;;;;;;;6422:13;6414:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;3320:42;6467:16;;:62;;;;;;;;;;;;;;;;;;6549:16;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6534:12;;:38;;;;;;;;;;;;;;;;;;6639:12;;;;;;;;;;;6617;;:35;;;;;;;;;;;;;;;;;;6692:16;;;;;;;;;;;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6674:56;;;6739:4;6746:12;;;;;;;;;;;6674:85;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6657:14;;:102;;;;;;;;;;;;;;;;;;6793:4;6764:10;:26;6775:14;;;;;;;;;;;6764:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;6804:27;6834:21;6804:51;;6890:1;6868:19;:23;6860:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;6914:29;6946:24;6964:4;6946:9;:24::i;:::-;6914:56;;7007:1;6983:21;:25;6975:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;7027:37;7042:21;7027:14;:37::i;:::-;7069:64;7083:21;7106:19;7127:5;7069:13;:64::i;:::-;6409:729;;6359:779::o:0;5217:80::-;5265:13;5289:5;;;;;;;;;;;;;;;;;5282:12;;5217:80;:::o;5546:235::-;5621:4;5665:1;5640:9;:21;5650:10;5640:21;;;;;;;;;;;;;;;;:26;5632:35;;;;;;5707:6;5672:11;:23;5684:10;5672:23;;;;;;;;;;;;;;;:32;5696:7;5672:32;;;;;;;;;;;;;;;:41;;;;5744:7;5723:37;;5732:10;5723:37;;;5753:6;5723:37;;;;;;:::i;:::-;;;;;;;;5772:4;5765:11;;5546:235;;;;:::o;15771:372::-;1108:5;;;;;;;;;;1094:19;;:10;:19;;;1086:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;15898:19:::1;;;;;;;;;;;15885:32;;:9;:32;;;;:69;;;;;15935:19;;;;;;;;;;;15921:33;;:10;:33;;;;15885:69;15877:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;16006:2;15984:18;:24;;;;15976:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;16047:9;16030:14;;:26;;;;;;;;;;;;;;;;;;16079:10;16061:15;;:28;;;;;;;;;;;;;;;;;;16120:18;16094:23;;:44;;;;;;;;;;;;;;;;;;15771:372:::0;;;:::o;4956:88::-;5011:7;2114:1;2161:2;:13;;;;:::i;:::-;2151:7;:23;;;;:::i;:::-;5022:19;;4956:88;:::o;14368:214::-;1108:5;;;;;;;;;;1094:19;;:10;:19;;;1086:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;14480:6:::1;14459:10;:18;14470:6;14459:18;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;14514:8;14491:12;:20;14504:6;14491:20;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;14532:45;14552:6;14560;14568:8;14532:45;;;;;;;;:::i;:::-;;;;;;;;14368:214:::0;;;:::o;5991:363::-;6091:4;6110:19;:17;:19::i;:::-;6102:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;6194:17;6159:11;:19;6171:6;6159:19;;;;;;;;;;;;;;;:31;6179:10;6159:31;;;;;;;;;;;;;;;;:52;6155:143;;6286:6;6252:11;:19;6264:6;6252:19;;;;;;;;;;;;;;;:31;6272:10;6252:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;6218:11;:19;6230:6;6218:19;;;;;;;;;;;;;;;:31;6238:10;6218:31;;;;;;;;;;;;;;;:74;;;;6155:143;6309:40;6323:6;6331:9;6342:6;6309:13;:40::i;:::-;6302:47;;5991:363;;;;;:::o;5047:80::-;5099:5;2114:1;5108:16;;5047:80;:::o;18462:672::-;1108:5;;;;;;;;;;1094:19;;:10;:19;;;1086:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;3536:4:::1;3523:10;;:17;;;;;;;;;;;;;;;;;;18601:13:::2;:31;;;;18618:14;18601:31;18592:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;18661:13;18657:358;;;18712:1;18690:19;:23;;;:51;;;;;18738:3;18717:19;:24;;;;18690:51;18682:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;18773:23;18799:24;18817:4;18799:9;:24::i;:::-;18773:50;;18855:1;18837:15;:19;18829:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;18876:18;18939:3;18916:19;18898:37;;:15;:37;;;;:::i;:::-;18897:45;;;;:::i;:::-;18876:66;;18948:32;18969:10;18948:20;:32::i;:::-;19007:1;18986:18;:22;;;;18676:339;;18657:358;19025:14;19021:109;;;19048:17;19068:21;19048:41;;19095:28;19113:9;19095:17;:28::i;:::-;19041:89;19021:109;3558:5:::1;3545:10;;:18;;;;;;;;;;;;;;;;;;18462:672:::0;;;:::o;16805:216::-;16848:19;16869:23;16894:18;16914;16947:15;;16964:19;;16985:14;;17001;;16939:77;;;;;;;;16805:216;;;;:::o;5300:105::-;5366:7;5384:9;:18;5394:7;5384:18;;;;;;;;;;;;;;;;5377:25;;5300:105;;;:::o;16353:447::-;1108:5;;;;;;;;;;1094:19;;:10;:19;;;1086:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;16481:18:::1;16457:13;;:43;;;;;;;;;;;;;;;;;;16538:4;16505:10;:30;16516:18;16505:30;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;16582:4;16547:12;:32;16560:18;16547:32;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;16618:19;16593:14;;:45;;;;;;;;;;;;;;;;;;16677:4;16643:10;:31;16654:19;16643:31;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;16722:4;16686:12;:33;16699:19;16686:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;16738:57;16755:18;16775:19;16738:57;;;;;;;:::i;:::-;;;;;;;;16353:447:::0;;:::o;14215:148::-;14276:11;14289:13;14317:10;:18;14328:6;14317:18;;;;;;;;;;;;;;;;;;;;;;;;;14337:12;:20;14350:6;14337:20;;;;;;;;;;;;;;;;;;;;;;;;;14309:49;;;;14215:148;;;:::o;5130:84::-;5180:13;5204:7;;;;;;;;;;;;;;;;;5197:14;;5130:84;:::o;5786:200::-;5866:4;5885:19;:17;:19::i;:::-;5877:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;5937:44;5951:10;5963:9;5974:6;5937:13;:44::i;:::-;5930:51;;5786:200;;;;:::o;17026:505::-;1108:5;;;;;;;;;;1094:19;;:10;:19;;;1086:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;17126:16:::1;17185:1;17178:4;17160:15;17145:30;;2114:1;2161:2;:13;;;;:::i;:::-;2151:7;:23;;;;:::i;:::-;17145:30;;;;:::i;:::-;:37;;;;:::i;:::-;:41;;;;:::i;:::-;17126:60;;17211:15;;17199:8;:27;;17191:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;17270:8;17252:15;:26;;;;17283:20;17350:1;17343:4;17321:19;17306:34;;2114:1;2161:2;:13;;;;:::i;:::-;2151:7;:23;;;;:::i;:::-;17306:34;;;;:::i;:::-;:41;;;;:::i;:::-;:45;;;;:::i;:::-;17283:68;;17380:19;;17364:12;:35;;17356:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17451:12;17429:19;:34;;;;17473:53;17489:15;;17506:19;;17473:53;;;;;;;:::i;:::-;;;;;;;;17121:410;;17026:505:::0;;:::o;15537:229::-;15582:21;15605:16;15623:17;15642:25;15683:19;;;;;;;;;;;15704:14;;;;;;;;;;;15720:15;;;;;;;;;;;15737:23;;;;;;;;;;;15675:86;;;;;;;;15537:229;;;;:::o;7777:248::-;1108:5;;;;;;;;;;1094:19;;:10;:19;;;1086:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;7833:12:::1;;;;;;;;;;;7832:13;7824:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;7909:1;7883:28;;:14;;;;;;;;;;;:28;;::::0;7875:59:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7976:1;7948:9;:25;7958:14;;;;;;;;;;;7948:25;;;;;;;;;;;;;;;;:29;7939:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;8006:14;:12;:14::i;:::-;7777:248::o:0;16148:200::-;16192:21;16215;16238:17;16257:18;16290:5;;;;;;;;;;16297:14;;;;;;;;;;;16313:13;;;;;;;;;;;16328:14;;;;;;;;;;;16282:61;;;;;;;;16148:200;;;;:::o;14589:517::-;14635:22;14659:31;14692:36;14730:28;14760:22;14790:18;14810:16;14830:19;:17;:19::i;:::-;14789:60;;;;14855:24;14885:37;14901:10;14913:8;14885:15;:37::i;:::-;14854:68;;;14933:18;14973:14;;14954:16;:33;14933:54;;15000:18;;;;;;;;;;;15020:31;;;;;;;;;;;15053:14;;15069:16;15087:13;14992:109;;;;;;;;;;;;;;14589:517;;;;;:::o;5408:133::-;5492:7;5510:11;:19;5522:6;5510:19;;;;;;;;;;;;;;;:28;5530:7;5510:28;;;;;;;;;;;;;;;;5503:35;;5408:133;;;;:::o;15111:421::-;1108:5;;;;;;;;;;1094:19;;:10;:19;;;1086:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;15246:1:::1;15227:18;:20;;;:46;;;;;15271:2;15251:18;:22;;;;15227:46;15219:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;15349:18;15311:56;;15328:18;;;;;;;;;;;15311:35;;:14;;:35;;;;:::i;:::-;:56;;;;:::i;:::-;;15393:18;15372;;:39;;;;;;;;;;;;;;;;;;15449:1;15426:22;:24;;;15418:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;15505:22;15471:31;;:56;;;;;;;;;;;;;;;;;;15111:421:::0;;:::o;17536:347::-;1108:5;;;;;;;;;;1094:19;;:10;:19;;;1086:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;17701:10:::1;17675:36;;17690:8;17675:23;;2114:1;2161:2;:13;;;;:::i;:::-;2151:7;:23;;;;:::i;:::-;17675;;;;:::i;:::-;:36;;;;:::i;:::-;17658:14;:53;;;;17759:10;17733:36;;17748:8;17733:23;;2114:1;2161:2;:13;;;;:::i;:::-;2151:7;:23;;;;:::i;:::-;17733;;;;:::i;:::-;:36;;;;:::i;:::-;17716:14;:53;;;;17799:14;;17782;;:31;17774:40;;;::::0;::::1;;17824:54;17847:14;;17863;;17824:54;;;;;;;:::i;:::-;;;;;;;;17536:347:::0;;;;:::o;1169:130::-;1108:5;;;;;;;;;;1094:19;;:10;:19;;;1086:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;1251:8:::1;1243:5;::::0;:16:::1;;;;;;;;;;;;;;;;;;1266:30;1287:8;1266:30;;;;;;:::i;:::-;;;;;;;;1169:130:::0;:::o;8731:76::-;8777:4;8792:12;;;;;;;;;;;8785:19;;8731:76;:::o;7143:299::-;7262:12;7208:11;:26;7228:4;7208:26;;;;;;;;;;;;;;;:51;3320:42;7208:51;;;;;;;;;;;;;;;;:66;7203:235;;;7337:17;7283:11;:26;7303:4;7283:26;;;;;;;;;;;;;;;:51;3320:42;7283:51;;;;;;;;;;;;;;;:71;;;;3320:42;7365:67;;7382:4;7365:67;;;7414:17;7365:67;;;;;;:::i;:::-;;;;;;;;7203:235;7143:299;:::o;7447:325::-;7544:24;7579:5;;;;;;;;;;;7544:41;;7596:8;7590:46;;7628:5;;;;;;;;;;7609:24;;7590:46;7640:16;;;;;;;;;;;:32;;;7680:13;7705:4;7712:12;7726:1;7729;7732:16;7750:15;7640:127;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;7539:233;7447:325;;;:::o;10310:220::-;10361:4;10371:16;10390:5;10371:24;;10405:12;;;;;;;;;;;10400:102;;;10436:4;10422:18;;10400:102;;;10471:5;;;;;;;;;;10458:18;;:9;:18;;;10453:49;;10495:4;10481:18;;10453:49;10400:102;10514:11;10507:18;;;10310:220;:::o;8812:1021::-;8904:4;8939:1;8923:18;;:6;:18;;;;:43;;;;;8964:1;8945:21;;:9;:21;;;;8923:43;8915:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;9008:10;;;;;;;;;;;9007:11;:36;;;;;9022:10;:21;9033:9;9022:21;;;;;;;;;;;;;;;;;;;;;;;;;9007:36;9002:123;;;9057:12;;;;;;;;;;;9053:41;;;9073:18;:16;:18::i;:::-;9053:41;9099:20;:18;:20::i;:::-;9002:123;9154:4;9136:23;;:6;:23;;;;:53;;;;;9184:4;9163:26;;:9;:26;;;;9136:53;:72;;;;;9203:5;;;;;;;;;;9193:15;;:6;:15;;;;9136:72;9131:154;;;9221:39;9234:6;9242:9;9253:6;9221:12;:39::i;:::-;9213:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;9131:154;9292:18;9312:15;9331:40;9345:6;9353:9;9364:6;9331:13;:40::i;:::-;9291:80;;;;9380:10;9376:53;;;9416:10;9394:18;;:32;;;;;;;:::i;:::-;;;;;;;;9376:53;9436:23;9471:10;9462:6;:19;;;;:::i;:::-;9436:45;;9504:1;9491:10;:14;9486:91;;;9564:10;9537:9;:24;9555:4;9537:24;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;9510:9;:24;9528:4;9510:24;;;;;;;;;;;;;;;:64;;;;9486:91;9621:6;9601:9;:17;9611:6;9601:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;9581:9;:17;9591:6;9581:17;;;;;;;;;;;;;;;:46;;;;9678:15;9655:9;:20;9665:9;9655:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;9632:9;:20;9642:9;9632:20;;;;;;;;;;;;;;;:61;;;;9720:9;9703:35;;9712:6;9703:35;;;9731:6;9703:35;;;;;;:::i;:::-;;;;;;;;9750:12;;;;;;;;;;;:34;;;;;9766:10;:18;9777:6;9766:18;;;;;;;;;;;;;;;;;;;;;;;;;9750:34;9745:66;;;9790:18;:16;:18::i;:::-;9745:66;9824:4;9817:11;;;;;8812:1021;;;;;:::o;17888:321::-;17953:28;17968:12;17953:14;:28::i;:::-;17986:21;18024:1;18010:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17986:40;;18049:4;18031;18036:1;18031:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18069:12;;;;;;;;;;;18059:4;18064:1;18059:7;;;;;;;;:::i;:::-;;;;;;;:22;;;;;;;;;;;18086:16;;;;;;;;;;;:67;;;18154:12;18167:1;18169:4;18182;18188:15;18086:118;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17948:261;17888:321;:::o;18214:243::-;18271:24;18308:1;18298:7;:11;;;;:::i;:::-;18271:38;;18314:25;18359:1;18342:16;:18;;;;:::i;:::-;18314:46;;18365:13;;;;;;;;;;;:22;;:41;18388:17;18365:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18411:14;;;;;;;;;;;:23;;:41;18435:16;18411:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18266:191;;18214:243;:::o;8030:696::-;2114:1;8117:2;:13;;;;:::i;:::-;8110:4;2114:1;2161:2;:13;;;;:::i;:::-;2151:7;:23;;;;:::i;:::-;8090:2;:17;;;;:::i;:::-;:24;;;;:::i;:::-;:40;;;;:::i;:::-;8068:15;:62;;;;2114:1;8218:2;:13;;;;:::i;:::-;8211:4;2114:1;2161:2;:13;;;;:::i;:::-;2151:7;:23;;;;:::i;:::-;8191:2;:17;;;;:::i;:::-;:24;;;;:::i;:::-;:40;;;;:::i;:::-;8169:19;:62;;;;8287:1;8270:14;;:18;;;;;;;;;;;;;;;;;;8311:1;8293:15;;:19;;;;;;;;;;;;;;;;;;8343:2;8317:23;;:28;;;;;;;;;;;;;;;;;;8371:2;8350:18;;:23;;;;;;;;;;;;;;;;;;8478:3;8444:31;;:37;;;;;;;;;;;;;;;;;;8653:18;:16;:18::i;:::-;8717:4;8702:12;;:19;;;;;;;;;;;;;;;;;;8030:696::o;11585:248::-;11636:18;11656:19;11682;11704:9;:25;11714:14;;;;;;;;;;;11704:25;;;;;;;;;;;;;;;;11682:47;;11734:17;11754:12;;;;;;;;;;;:22;;;11777:14;;;;;;;;;;;11754:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11734:58;;11805:11;11818:9;11797:31;;;;;;11585:248;;:::o;11157:423::-;11250:24;11276:26;11309:21;11335:23;11386:1;11367:15;:20;11363:169;;11443:15;2114:1;11426:2;:13;;;;:::i;:::-;11412:11;:27;;;;:::i;:::-;11411:47;;;;:::i;:::-;11395:63;;11522:3;11499:18;;;;;;;;;;;11483:34;;:13;:34;;;;:::i;:::-;11482:43;;;;:::i;:::-;11464:61;;11363:169;11544:13;11559:15;11536:39;;;;;;11157:423;;;;;:::o;11838:321::-;11880:18;11900:16;11920:19;:17;:19::i;:::-;11879:60;;;;11947:13;11964:37;11980:10;11992:8;11964:15;:37::i;:::-;11944:57;;;12082:3;12045:31;;;;;;;;;;;12041:3;:35;;;;:::i;:::-;12023:54;;:14;;:54;;;;:::i;:::-;12022:63;;;;:::i;:::-;12013:5;:74;12009:146;;;12114:5;12097:14;:22;;;;12131:18;12143:5;12131:18;;;;;;:::i;:::-;;;;;;;;12009:146;11874:285;;;11838:321::o;12658:1552::-;3536:4;3523:10;;:17;;;;;;;;;;;;;;;;;;12713:27:::1;12743:9;:24;12761:4;12743:24;;;;;;;;;;;;;;;;12713:54;;12772:24;12799:18;;12772:45;;12845:19;12826:16;:38;12822:141;;;12894:19;12873:18;:40;;;;12938:19;12919:38;;12822:141;12967:22;13014:16;12992:19;:38;;;;:::i;:::-;12967:63;;13064:1;13042:19;:23;:64;;;;;13092:14;;13069:19;:37;;13042:64;:80;;;;;13110:12;;;;;;;;;;;13042:80;13037:1169;;;13159:14;;13136:19;:37;13131:308;;13184:18;13234:14;;13227:4;13205:19;:26;;;;:::i;:::-;:43;;;;:::i;:::-;13184:64;;13309:4;13295:10;13276:16;:29;;;;:::i;:::-;13275:38;;;;:::i;:::-;13256:57;;13354:16;13337:14;;:33;;;;:::i;:::-;13320:50;;13418:14;13399:16;:33;;;;:::i;:::-;13377:55;;13176:263;13131:308;13446:25;13494:1;13475:16;:20;;;;:::i;:::-;13446:50;;13503:21;13549:17;13527:19;:39;;;;:::i;:::-;13503:63;;2114:1;13596:2;:13;;;;:::i;:::-;13579;:30;13575:487;;13618:19;13640:21;13618:43;;13668:35;13689:13;13668:20;:35::i;:::-;13710:19;13756:11;13732:21;:35;;;;:::i;:::-;13710:57;;13805:1;13785:17;:21;13780:276;;;13817:21;13877:19;13856:17;13842:11;:31;;;;:::i;:::-;13841:55;;;;:::i;:::-;13817:79;;13905:33;13920:17;13905:14;:33::i;:::-;13946:54;13960:17;13979:13;13994:5;13946:13;:54::i;:::-;14032:16;14010:18;;:38;;;;;;;:::i;:::-;;;;;;;;13809:247;13780:276;13611:451;;13575:487;14069:27;14099:21;14069:51;;14155:1;14133:19;:23;14129:72;;;14160:38;14178:19;14160:17;:38::i;:::-;14129:72;13125:1081;;;13037:1169;12708:1502;;;3558:5:::0;3545:10;;:18;;;;;;;;;;;;;;;;;;12658:1552::o;9838:467::-;9942:4;9953:21;9977:4;9953:28;;9991:12;;;;;;;;;;;:40;;;;;10008:12;:23;10021:9;10008:23;;;;;;;;;;;;;;;;;;;;;;;;;10007:24;9991:40;:65;;;;;10036:12;:20;10049:6;10036:20;;;;;;;;;;;;;;;;;;;;;;;;;10035:21;9991:65;9986:287;;;10087:15;;10070:14;:32;10065:203;;;10126:5;10107:24;;10065:203;;;10150:10;:21;10161:9;10150:21;;;;;;;;;;;;;;;;;;;;;;;;;10149:22;:87;;;;;10216:19;;10199:14;10176:9;:20;10186:9;10176:20;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;:59;10149:87;10144:124;;;10260:5;10241:24;;10144:124;10065:203;9986:287;10284:16;10277:23;;;9838:467;;;;;:::o;10535:617::-;10632:7;10641:4;10652:17;10674;10702:12;;;;;;;;;;;10701:13;:35;;;;10718:10;:18;10729:6;10718:18;;;;;;;;;;;;;;;;;;;;;;;;;10701:35;:60;;;;10740:10;:21;10751:9;10740:21;;;;;;;;;;;;;;;;;;;;;;;;;10701:60;10696:415;;;10778:1;10766:13;;10696:415;;;10796:10;:18;10807:6;10796:18;;;;;;;;;;;;;;;;;;;;;;;;;10791:320;;;10857:3;10840:14;;;;;;;;;;;10831:23;;:6;:23;;;;:::i;:::-;:29;;;;:::i;:::-;10819:41;;10791:320;;;10877:10;:21;10888:9;10877:21;;;;;;;;;;;;;;;;;;;;;;;;;10872:239;;;10923:19;10935:6;10923:11;:19::i;:::-;10908:34;;10952:12;10948:131;;;11015:3;10989:23;;;;;;;;;;;10980:32;;:6;:32;;;;:::i;:::-;:38;;;;:::i;:::-;10968:50;;10948:131;;;11073:3;11055:15;;;;;;;;;;;11046:24;;:6;:24;;;;:::i;:::-;:30;;;;:::i;:::-;11034:42;;10948:131;10872:239;;;11107:1;11095:13;;10872:239;10791:320;10696:415;11123:9;11134:12;11115:32;;;;;;10535:617;;;;;;:::o;12164:489::-;12223:4;12234:16;12258:18;12278:19;12301;:17;:19::i;:::-;12257:63;;;;12326:18;12350:40;12366:10;12378:11;12350:15;:40::i;:::-;12325:65;;;12397:24;2114:1;12449:2;:13;;;;:::i;:::-;12434:10;12425:6;:19;;;;:::i;:::-;12424:39;;;;:::i;:::-;12397:66;;12471:16;12493:72;12523:6;12510:10;:19;;;;:::i;:::-;12547:16;12533:11;:30;;;;:::i;:::-;12493:15;:72::i;:::-;12470:95;;;12585:14;;12574:8;:25;12570:54;;;12617:4;12603:18;;12570:54;12637:11;12630:18;;;;;;;;12164:489;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:86::-;3529:7;3569:4;3562:5;3558:16;3547:27;;3494:86;;;:::o;3586:118::-;3657:22;3673:5;3657:22;:::i;:::-;3650:5;3647:33;3637:61;;3694:1;3691;3684:12;3637:61;3586:118;:::o;3710:135::-;3754:5;3792:6;3779:20;3770:29;;3808:31;3833:5;3808:31;:::i;:::-;3710:135;;;;:::o;3851:607::-;3922:6;3930;3938;3987:2;3975:9;3966:7;3962:23;3958:32;3955:119;;;3993:79;;:::i;:::-;3955:119;4113:1;4138:51;4181:7;4172:6;4161:9;4157:22;4138:51;:::i;:::-;4128:61;;4084:115;4238:2;4264:51;4307:7;4298:6;4287:9;4283:22;4264:51;:::i;:::-;4254:61;;4209:116;4364:2;4390:51;4433:7;4424:6;4413:9;4409:22;4390:51;:::i;:::-;4380:61;;4335:116;3851:607;;;;;:::o;4464:118::-;4551:24;4569:5;4551:24;:::i;:::-;4546:3;4539:37;4464:118;;:::o;4588:222::-;4681:4;4719:2;4708:9;4704:18;4696:26;;4732:71;4800:1;4789:9;4785:17;4776:6;4732:71;:::i;:::-;4588:222;;;;:::o;4816:116::-;4886:21;4901:5;4886:21;:::i;:::-;4879:5;4876:32;4866:60;;4922:1;4919;4912:12;4866:60;4816:116;:::o;4938:133::-;4981:5;5019:6;5006:20;4997:29;;5035:30;5059:5;5035:30;:::i;:::-;4938:133;;;;:::o;5077:607::-;5148:6;5156;5164;5213:2;5201:9;5192:7;5188:23;5184:32;5181:119;;;5219:79;;:::i;:::-;5181:119;5339:1;5364:53;5409:7;5400:6;5389:9;5385:22;5364:53;:::i;:::-;5354:63;;5310:117;5466:2;5492:50;5534:7;5525:6;5514:9;5510:22;5492:50;:::i;:::-;5482:60;;5437:115;5591:2;5617:50;5659:7;5650:6;5639:9;5635:22;5617:50;:::i;:::-;5607:60;;5562:115;5077:607;;;;;:::o;5690:619::-;5767:6;5775;5783;5832:2;5820:9;5811:7;5807:23;5803:32;5800:119;;;5838:79;;:::i;:::-;5800:119;5958:1;5983:53;6028:7;6019:6;6008:9;6004:22;5983:53;:::i;:::-;5973:63;;5929:117;6085:2;6111:53;6156:7;6147:6;6136:9;6132:22;6111:53;:::i;:::-;6101:63;;6056:118;6213:2;6239:53;6284:7;6275:6;6264:9;6260:22;6239:53;:::i;:::-;6229:63;;6184:118;5690:619;;;;;:::o;6315:112::-;6398:22;6414:5;6398:22;:::i;:::-;6393:3;6386:35;6315:112;;:::o;6433:214::-;6522:4;6560:2;6549:9;6545:18;6537:26;;6573:67;6637:1;6626:9;6622:17;6613:6;6573:67;:::i;:::-;6433:214;;;;:::o;6653:603::-;6722:6;6730;6738;6787:2;6775:9;6766:7;6762:23;6758:32;6755:119;;;6793:79;;:::i;:::-;6755:119;6913:1;6938:50;6980:7;6971:6;6960:9;6956:22;6938:50;:::i;:::-;6928:60;;6884:114;7037:2;7063:50;7105:7;7096:6;7085:9;7081:22;7063:50;:::i;:::-;7053:60;;7008:115;7162:2;7188:51;7231:7;7222:6;7211:9;7207:22;7188:51;:::i;:::-;7178:61;;7133:116;6653:603;;;;;:::o;7262:553::-;7439:4;7477:3;7466:9;7462:19;7454:27;;7491:71;7559:1;7548:9;7544:17;7535:6;7491:71;:::i;:::-;7572:72;7640:2;7629:9;7625:18;7616:6;7572:72;:::i;:::-;7654;7722:2;7711:9;7707:18;7698:6;7654:72;:::i;:::-;7736;7804:2;7793:9;7789:18;7780:6;7736:72;:::i;:::-;7262:553;;;;;;;:::o;7821:329::-;7880:6;7929:2;7917:9;7908:7;7904:23;7900:32;7897:119;;;7935:79;;:::i;:::-;7897:119;8055:1;8080:53;8125:7;8116:6;8105:9;8101:22;8080:53;:::i;:::-;8070:63;;8026:117;7821:329;;;;:::o;8156:474::-;8224:6;8232;8281:2;8269:9;8260:7;8256:23;8252:32;8249:119;;;8287:79;;:::i;:::-;8249:119;8407:1;8432:53;8477:7;8468:6;8457:9;8453:22;8432:53;:::i;:::-;8422:63;;8378:117;8534:2;8560:53;8605:7;8596:6;8585:9;8581:22;8560:53;:::i;:::-;8550:63;;8505:118;8156:474;;;;;:::o;8636:308::-;8745:4;8783:2;8772:9;8768:18;8760:26;;8796:65;8858:1;8847:9;8843:17;8834:6;8796:65;:::i;:::-;8871:66;8933:2;8922:9;8918:18;8909:6;8871:66;:::i;:::-;8636:308;;;;;:::o;8950:89::-;8986:7;9026:6;9019:5;9015:18;9004:29;;8950:89;;;:::o;9045:120::-;9117:23;9134:5;9117:23;:::i;:::-;9110:5;9107:34;9097:62;;9155:1;9152;9145:12;9097:62;9045:120;:::o;9171:137::-;9216:5;9254:6;9241:20;9232:29;;9270:32;9296:5;9270:32;:::i;:::-;9171:137;;;;:::o;9314:470::-;9380:6;9388;9437:2;9425:9;9416:7;9412:23;9408:32;9405:119;;;9443:79;;:::i;:::-;9405:119;9563:1;9588:52;9632:7;9623:6;9612:9;9608:22;9588:52;:::i;:::-;9578:62;;9534:116;9689:2;9715:52;9759:7;9750:6;9739:9;9735:22;9715:52;:::i;:::-;9705:62;;9660:117;9314:470;;;;;:::o;9790:521::-;9951:4;9989:3;9978:9;9974:19;9966:27;;10003:67;10067:1;10056:9;10052:17;10043:6;10003:67;:::i;:::-;10080:68;10144:2;10133:9;10129:18;10120:6;10080:68;:::i;:::-;10158;10222:2;10211:9;10207:18;10198:6;10158:68;:::i;:::-;10236;10300:2;10289:9;10285:18;10276:6;10236:68;:::i;:::-;9790:521;;;;;;;:::o;10317:118::-;10404:24;10422:5;10404:24;:::i;:::-;10399:3;10392:37;10317:118;;:::o;10441:553::-;10618:4;10656:3;10645:9;10641:19;10633:27;;10670:71;10738:1;10727:9;10723:17;10714:6;10670:71;:::i;:::-;10751:72;10819:2;10808:9;10804:18;10795:6;10751:72;:::i;:::-;10833;10901:2;10890:9;10886:18;10877:6;10833:72;:::i;:::-;10915;10983:2;10972:9;10968:18;10959:6;10915:72;:::i;:::-;10441:553;;;;;;;:::o;11000:115::-;11085:23;11102:5;11085:23;:::i;:::-;11080:3;11073:36;11000:115;;:::o;11121:644::-;11316:4;11354:3;11343:9;11339:19;11331:27;;11368:69;11434:1;11423:9;11419:17;11410:6;11368:69;:::i;:::-;11447:70;11513:2;11502:9;11498:18;11489:6;11447:70;:::i;:::-;11527:72;11595:2;11584:9;11580:18;11571:6;11527:72;:::i;:::-;11609;11677:2;11666:9;11662:18;11653:6;11609:72;:::i;:::-;11691:67;11753:3;11742:9;11738:19;11729:6;11691:67;:::i;:::-;11121:644;;;;;;;;:::o;11771:93::-;11807:7;11847:10;11840:5;11836:22;11825:33;;11771:93;;;:::o;11870:120::-;11942:23;11959:5;11942:23;:::i;:::-;11935:5;11932:34;11922:62;;11980:1;11977;11970:12;11922:62;11870:120;:::o;11996:137::-;12041:5;12079:6;12066:20;12057:29;;12095:32;12121:5;12095:32;:::i;:::-;11996:137;;;;:::o;12139:757::-;12221:6;12229;12237;12245;12294:3;12282:9;12273:7;12269:23;12265:33;12262:120;;;12301:79;;:::i;:::-;12262:120;12421:1;12446:52;12490:7;12481:6;12470:9;12466:22;12446:52;:::i;:::-;12436:62;;12392:116;12547:2;12573:52;12617:7;12608:6;12597:9;12593:22;12573:52;:::i;:::-;12563:62;;12518:117;12674:2;12700:52;12744:7;12735:6;12724:9;12720:22;12700:52;:::i;:::-;12690:62;;12645:117;12801:2;12827:52;12871:7;12862:6;12851:9;12847:22;12827:52;:::i;:::-;12817:62;;12772:117;12139:757;;;;;;;:::o;12902:104::-;12947:7;12976:24;12994:5;12976:24;:::i;:::-;12965:35;;12902:104;;;:::o;13012:138::-;13093:32;13119:5;13093:32;:::i;:::-;13086:5;13083:43;13073:71;;13140:1;13137;13130:12;13073:71;13012:138;:::o;13156:155::-;13210:5;13248:6;13235:20;13226:29;;13264:41;13299:5;13264:41;:::i;:::-;13156:155;;;;:::o;13317:345::-;13384:6;13433:2;13421:9;13412:7;13408:23;13404:32;13401:119;;;13439:79;;:::i;:::-;13401:119;13559:1;13584:61;13637:7;13628:6;13617:9;13613:22;13584:61;:::i;:::-;13574:71;;13530:125;13317:345;;;;:::o;13668:229::-;13808:34;13804:1;13796:6;13792:14;13785:58;13877:12;13872:2;13864:6;13860:15;13853:37;13668:229;:::o;13903:366::-;14045:3;14066:67;14130:2;14125:3;14066:67;:::i;:::-;14059:74;;14142:93;14231:3;14142:93;:::i;:::-;14260:2;14255:3;14251:12;14244:19;;13903:366;;;:::o;14275:419::-;14441:4;14479:2;14468:9;14464:18;14456:26;;14528:9;14522:4;14518:20;14514:1;14503:9;14499:17;14492:47;14556:131;14682:4;14556:131;:::i;:::-;14548:139;;14275:419;;;:::o;14700:170::-;14840:22;14836:1;14828:6;14824:14;14817:46;14700:170;:::o;14876:366::-;15018:3;15039:67;15103:2;15098:3;15039:67;:::i;:::-;15032:74;;15115:93;15204:3;15115:93;:::i;:::-;15233:2;15228:3;15224:12;15217:19;;14876:366;;;:::o;15248:419::-;15414:4;15452:2;15441:9;15437:18;15429:26;;15501:9;15495:4;15491:20;15487:1;15476:9;15472:17;15465:47;15529:131;15655:4;15529:131;:::i;:::-;15521:139;;15248:419;;;:::o;15673:143::-;15730:5;15761:6;15755:13;15746:22;;15777:33;15804:5;15777:33;:::i;:::-;15673:143;;;;:::o;15822:351::-;15892:6;15941:2;15929:9;15920:7;15916:23;15912:32;15909:119;;;15947:79;;:::i;:::-;15909:119;16067:1;16092:64;16148:7;16139:6;16128:9;16124:22;16092:64;:::i;:::-;16082:74;;16038:128;15822:351;;;;:::o;16179:332::-;16300:4;16338:2;16327:9;16323:18;16315:26;;16351:71;16419:1;16408:9;16404:17;16395:6;16351:71;:::i;:::-;16432:72;16500:2;16489:9;16485:18;16476:6;16432:72;:::i;:::-;16179:332;;;;;:::o;16517:163::-;16657:15;16653:1;16645:6;16641:14;16634:39;16517:163;:::o;16686:366::-;16828:3;16849:67;16913:2;16908:3;16849:67;:::i;:::-;16842:74;;16925:93;17014:3;16925:93;:::i;:::-;17043:2;17038:3;17034:12;17027:19;;16686:366;;;:::o;17058:419::-;17224:4;17262:2;17251:9;17247:18;17239:26;;17311:9;17305:4;17301:20;17297:1;17286:9;17282:17;17275:47;17339:131;17465:4;17339:131;:::i;:::-;17331:139;;17058:419;;;:::o;17483:159::-;17623:11;17619:1;17611:6;17607:14;17600:35;17483:159;:::o;17648:365::-;17790:3;17811:66;17875:1;17870:3;17811:66;:::i;:::-;17804:73;;17886:93;17975:3;17886:93;:::i;:::-;18004:2;17999:3;17995:12;17988:19;;17648:365;;;:::o;18019:419::-;18185:4;18223:2;18212:9;18208:18;18200:26;;18272:9;18266:4;18262:20;18258:1;18247:9;18243:17;18236:47;18300:131;18426:4;18300:131;:::i;:::-;18292:139;;18019:419;;;:::o;18444:162::-;18584:14;18580:1;18572:6;18568:14;18561:38;18444:162;:::o;18612:366::-;18754:3;18775:67;18839:2;18834:3;18775:67;:::i;:::-;18768:74;;18851:93;18940:3;18851:93;:::i;:::-;18969:2;18964:3;18960:12;18953:19;;18612:366;;;:::o;18984:419::-;19150:4;19188:2;19177:9;19173:18;19165:26;;19237:9;19231:4;19227:20;19223:1;19212:9;19208:17;19201:47;19265:131;19391:4;19265:131;:::i;:::-;19257:139;;18984:419;;;:::o;19409:180::-;19457:77;19454:1;19447:88;19554:4;19551:1;19544:15;19578:4;19575:1;19568:15;19595:102;19637:8;19684:5;19681:1;19677:13;19656:34;;19595:102;;;:::o;19703:848::-;19764:5;19771:4;19795:6;19786:15;;19819:5;19810:14;;19833:712;19854:1;19844:8;19841:15;19833:712;;;19949:4;19944:3;19940:14;19934:4;19931:24;19928:50;;;19958:18;;:::i;:::-;19928:50;20008:1;19998:8;19994:16;19991:451;;;20423:4;20416:5;20412:16;20403:25;;19991:451;20473:4;20467;20463:15;20455:23;;20503:32;20526:8;20503:32;:::i;:::-;20491:44;;19833:712;;;19703:848;;;;;;;:::o;20557:1073::-;20611:5;20802:8;20792:40;;20823:1;20814:10;;20825:5;;20792:40;20851:4;20841:36;;20868:1;20859:10;;20870:5;;20841:36;20937:4;20985:1;20980:27;;;;21021:1;21016:191;;;;20930:277;;20980:27;20998:1;20989:10;;21000:5;;;21016:191;21061:3;21051:8;21048:17;21045:43;;;21068:18;;:::i;:::-;21045:43;21117:8;21114:1;21110:16;21101:25;;21152:3;21145:5;21142:14;21139:40;;;21159:18;;:::i;:::-;21139:40;21192:5;;;20930:277;;21316:2;21306:8;21303:16;21297:3;21291:4;21288:13;21284:36;21266:2;21256:8;21253:16;21248:2;21242:4;21239:12;21235:35;21219:111;21216:246;;;21372:8;21366:4;21362:19;21353:28;;21407:3;21400:5;21397:14;21394:40;;;21414:18;;:::i;:::-;21394:40;21447:5;;21216:246;21487:42;21525:3;21515:8;21509:4;21506:1;21487:42;:::i;:::-;21472:57;;;;21561:4;21556:3;21552:14;21545:5;21542:25;21539:51;;;21570:18;;:::i;:::-;21539:51;21619:4;21612:5;21608:16;21599:25;;20557:1073;;;;;;:::o;21636:281::-;21694:5;21718:23;21736:4;21718:23;:::i;:::-;21710:31;;21762:25;21778:8;21762:25;:::i;:::-;21750:37;;21806:104;21843:66;21833:8;21827:4;21806:104;:::i;:::-;21797:113;;21636:281;;;;:::o;21923:348::-;21963:7;21986:20;22004:1;21986:20;:::i;:::-;21981:25;;22020:20;22038:1;22020:20;:::i;:::-;22015:25;;22208:1;22140:66;22136:74;22133:1;22130:81;22125:1;22118:9;22111:17;22107:105;22104:131;;;22215:18;;:::i;:::-;22104:131;22263:1;22260;22256:9;22245:20;;21923:348;;;;:::o;22277:418::-;22414:4;22452:2;22441:9;22437:18;22429:26;;22465:71;22533:1;22522:9;22518:17;22509:6;22465:71;:::i;:::-;22546:66;22608:2;22597:9;22593:18;22584:6;22546:66;:::i;:::-;22622;22684:2;22673:9;22669:18;22660:6;22622:66;:::i;:::-;22277:418;;;;;;:::o;22701:166::-;22841:18;22837:1;22829:6;22825:14;22818:42;22701:166;:::o;22873:366::-;23015:3;23036:67;23100:2;23095:3;23036:67;:::i;:::-;23029:74;;23112:93;23201:3;23112:93;:::i;:::-;23230:2;23225:3;23221:12;23214:19;;22873:366;;;:::o;23245:419::-;23411:4;23449:2;23438:9;23434:18;23426:26;;23498:9;23492:4;23488:20;23484:1;23473:9;23469:17;23462:47;23526:131;23652:4;23526:131;:::i;:::-;23518:139;;23245:419;;;:::o;23670:191::-;23710:4;23730:20;23748:1;23730:20;:::i;:::-;23725:25;;23764:20;23782:1;23764:20;:::i;:::-;23759:25;;23803:1;23800;23797:8;23794:34;;;23808:18;;:::i;:::-;23794:34;23853:1;23850;23846:9;23838:17;;23670:191;;;;:::o;23867:165::-;24007:17;24003:1;23995:6;23991:14;23984:41;23867:165;:::o;24038:366::-;24180:3;24201:67;24265:2;24260:3;24201:67;:::i;:::-;24194:74;;24277:93;24366:3;24277:93;:::i;:::-;24395:2;24390:3;24386:12;24379:19;;24038:366;;;:::o;24410:419::-;24576:4;24614:2;24603:9;24599:18;24591:26;;24663:9;24657:4;24653:20;24649:1;24638:9;24634:17;24627:47;24691:131;24817:4;24691:131;:::i;:::-;24683:139;;24410:419;;;:::o;24835:169::-;24975:21;24971:1;24963:6;24959:14;24952:45;24835:169;:::o;25010:366::-;25152:3;25173:67;25237:2;25232:3;25173:67;:::i;:::-;25166:74;;25249:93;25338:3;25249:93;:::i;:::-;25367:2;25362:3;25358:12;25351:19;;25010:366;;;:::o;25382:419::-;25548:4;25586:2;25575:9;25571:18;25563:26;;25635:9;25629:4;25625:20;25621:1;25610:9;25606:17;25599:47;25663:131;25789:4;25663:131;:::i;:::-;25655:139;;25382:419;;;:::o;25807:159::-;25947:11;25943:1;25935:6;25931:14;25924:35;25807:159;:::o;25972:365::-;26114:3;26135:66;26199:1;26194:3;26135:66;:::i;:::-;26128:73;;26210:93;26299:3;26210:93;:::i;:::-;26328:2;26323:3;26319:12;26312:19;;25972:365;;;:::o;26343:419::-;26509:4;26547:2;26536:9;26532:18;26524:26;;26596:9;26590:4;26586:20;26582:1;26571:9;26567:17;26560:47;26624:131;26750:4;26624:131;:::i;:::-;26616:139;;26343:419;;;:::o;26768:180::-;26816:77;26813:1;26806:88;26913:4;26910:1;26903:15;26937:4;26934:1;26927:15;26954:185;26994:1;27011:20;27029:1;27011:20;:::i;:::-;27006:25;;27045:20;27063:1;27045:20;:::i;:::-;27040:25;;27084:1;27074:35;;27089:18;;:::i;:::-;27074:35;27131:1;27128;27124:9;27119:14;;26954:185;;;;:::o;27145:305::-;27185:3;27204:20;27222:1;27204:20;:::i;:::-;27199:25;;27238:20;27256:1;27238:20;:::i;:::-;27233:25;;27392:1;27324:66;27320:74;27317:1;27314:81;27311:107;;;27398:18;;:::i;:::-;27311:107;27442:1;27439;27435:9;27428:16;;27145:305;;;;:::o;27456:166::-;27596:18;27592:1;27584:6;27580:14;27573:42;27456:166;:::o;27628:366::-;27770:3;27791:67;27855:2;27850:3;27791:67;:::i;:::-;27784:74;;27867:93;27956:3;27867:93;:::i;:::-;27985:2;27980:3;27976:12;27969:19;;27628:366;;;:::o;28000:419::-;28166:4;28204:2;28193:9;28189:18;28181:26;;28253:9;28247:4;28243:20;28239:1;28228:9;28224:17;28217:47;28281:131;28407:4;28281:131;:::i;:::-;28273:139;;28000:419;;;:::o;28425:170::-;28565:22;28561:1;28553:6;28549:14;28542:46;28425:170;:::o;28601:366::-;28743:3;28764:67;28828:2;28823:3;28764:67;:::i;:::-;28757:74;;28840:93;28929:3;28840:93;:::i;:::-;28958:2;28953:3;28949:12;28942:19;;28601:366;;;:::o;28973:419::-;29139:4;29177:2;29166:9;29162:18;29154:26;;29226:9;29220:4;29216:20;29212:1;29201:9;29197:17;29190:47;29254:131;29380:4;29254:131;:::i;:::-;29246:139;;28973:419;;;:::o;29398:332::-;29519:4;29557:2;29546:9;29542:18;29534:26;;29570:71;29638:1;29627:9;29623:17;29614:6;29570:71;:::i;:::-;29651:72;29719:2;29708:9;29704:18;29695:6;29651:72;:::i;:::-;29398:332;;;;;:::o;29736:168::-;29876:20;29872:1;29864:6;29860:14;29853:44;29736:168;:::o;29910:366::-;30052:3;30073:67;30137:2;30132:3;30073:67;:::i;:::-;30066:74;;30149:93;30238:3;30149:93;:::i;:::-;30267:2;30262:3;30258:12;30251:19;;29910:366;;;:::o;30282:419::-;30448:4;30486:2;30475:9;30471:18;30463:26;;30535:9;30529:4;30525:20;30521:1;30510:9;30506:17;30499:47;30563:131;30689:4;30563:131;:::i;:::-;30555:139;;30282:419;;;:::o;30707:169::-;30847:21;30843:1;30835:6;30831:14;30824:45;30707:169;:::o;30882:366::-;31024:3;31045:67;31109:2;31104:3;31045:67;:::i;:::-;31038:74;;31121:93;31210:3;31121:93;:::i;:::-;31239:2;31234:3;31230:12;31223:19;;30882:366;;;:::o;31254:419::-;31420:4;31458:2;31447:9;31443:18;31435:26;;31507:9;31501:4;31497:20;31493:1;31482:9;31478:17;31471:47;31535:131;31661:4;31535:131;:::i;:::-;31527:139;;31254:419;;;:::o;31679:179::-;31819:31;31815:1;31807:6;31803:14;31796:55;31679:179;:::o;31864:366::-;32006:3;32027:67;32091:2;32086:3;32027:67;:::i;:::-;32020:74;;32103:93;32192:3;32103:93;:::i;:::-;32221:2;32216:3;32212:12;32205:19;;31864:366;;;:::o;32236:419::-;32402:4;32440:2;32429:9;32425:18;32417:26;;32489:9;32483:4;32479:20;32475:1;32464:9;32460:17;32453:47;32517:131;32643:4;32517:131;:::i;:::-;32509:139;;32236:419;;;:::o;32661:161::-;32801:13;32797:1;32789:6;32785:14;32778:37;32661:161;:::o;32828:366::-;32970:3;32991:67;33055:2;33050:3;32991:67;:::i;:::-;32984:74;;33067:93;33156:3;33067:93;:::i;:::-;33185:2;33180:3;33176:12;33169:19;;32828:366;;;:::o;33200:419::-;33366:4;33404:2;33393:9;33389:18;33381:26;;33453:9;33447:4;33443:20;33439:1;33428:9;33424:17;33417:47;33481:131;33607:4;33481:131;:::i;:::-;33473:139;;33200:419;;;:::o;33625:60::-;33653:3;33674:5;33667:12;;33625:60;;;:::o;33691:142::-;33741:9;33774:53;33792:34;33801:24;33819:5;33801:24;:::i;:::-;33792:34;:::i;:::-;33774:53;:::i;:::-;33761:66;;33691:142;;;:::o;33839:126::-;33889:9;33922:37;33953:5;33922:37;:::i;:::-;33909:50;;33839:126;;;:::o;33971:134::-;34029:9;34062:37;34093:5;34062:37;:::i;:::-;34049:50;;33971:134;;;:::o;34111:147::-;34206:45;34245:5;34206:45;:::i;:::-;34201:3;34194:58;34111:147;;:::o;34264:238::-;34365:4;34403:2;34392:9;34388:18;34380:26;;34416:79;34492:1;34481:9;34477:17;34468:6;34416:79;:::i;:::-;34264:238;;;;:::o;34508:85::-;34553:7;34582:5;34571:16;;34508:85;;;:::o;34599:158::-;34657:9;34690:61;34708:42;34717:32;34743:5;34717:32;:::i;:::-;34708:42;:::i;:::-;34690:61;:::i;:::-;34677:74;;34599:158;;;:::o;34763:147::-;34858:45;34897:5;34858:45;:::i;:::-;34853:3;34846:58;34763:147;;:::o;34916:807::-;35165:4;35203:3;35192:9;35188:19;35180:27;;35217:71;35285:1;35274:9;35270:17;35261:6;35217:71;:::i;:::-;35298:72;35366:2;35355:9;35351:18;35342:6;35298:72;:::i;:::-;35380:80;35456:2;35445:9;35441:18;35432:6;35380:80;:::i;:::-;35470;35546:2;35535:9;35531:18;35522:6;35470:80;:::i;:::-;35560:73;35628:3;35617:9;35613:19;35604:6;35560:73;:::i;:::-;35643;35711:3;35700:9;35696:19;35687:6;35643:73;:::i;:::-;34916:807;;;;;;;;;:::o;35729:143::-;35786:5;35817:6;35811:13;35802:22;;35833:33;35860:5;35833:33;:::i;:::-;35729:143;;;;:::o;35878:663::-;35966:6;35974;35982;36031:2;36019:9;36010:7;36006:23;36002:32;35999:119;;;36037:79;;:::i;:::-;35999:119;36157:1;36182:64;36238:7;36229:6;36218:9;36214:22;36182:64;:::i;:::-;36172:74;;36128:128;36295:2;36321:64;36377:7;36368:6;36357:9;36353:22;36321:64;:::i;:::-;36311:74;;36266:129;36434:2;36460:64;36516:7;36507:6;36496:9;36492:22;36460:64;:::i;:::-;36450:74;;36405:129;35878:663;;;;;:::o;36547:174::-;36687:26;36683:1;36675:6;36671:14;36664:50;36547:174;:::o;36727:366::-;36869:3;36890:67;36954:2;36949:3;36890:67;:::i;:::-;36883:74;;36966:93;37055:3;36966:93;:::i;:::-;37084:2;37079:3;37075:12;37068:19;;36727:366;;;:::o;37099:419::-;37265:4;37303:2;37292:9;37288:18;37280:26;;37352:9;37346:4;37342:20;37338:1;37327:9;37323:17;37316:47;37380:131;37506:4;37380:131;:::i;:::-;37372:139;;37099:419;;;:::o;37524:167::-;37664:19;37660:1;37652:6;37648:14;37641:43;37524:167;:::o;37697:366::-;37839:3;37860:67;37924:2;37919:3;37860:67;:::i;:::-;37853:74;;37936:93;38025:3;37936:93;:::i;:::-;38054:2;38049:3;38045:12;38038:19;;37697:366;;;:::o;38069:419::-;38235:4;38273:2;38262:9;38258:18;38250:26;;38322:9;38316:4;38312:20;38308:1;38297:9;38293:17;38286:47;38350:131;38476:4;38350:131;:::i;:::-;38342:139;;38069:419;;;:::o;38494:180::-;38542:77;38539:1;38532:88;38639:4;38636:1;38629:15;38663:4;38660:1;38653:15;38680:180;38728:77;38725:1;38718:88;38825:4;38822:1;38815:15;38849:4;38846:1;38839:15;38866:114;38933:6;38967:5;38961:12;38951:22;;38866:114;;;:::o;38986:184::-;39085:11;39119:6;39114:3;39107:19;39159:4;39154:3;39150:14;39135:29;;38986:184;;;;:::o;39176:132::-;39243:4;39266:3;39258:11;;39296:4;39291:3;39287:14;39279:22;;39176:132;;;:::o;39314:108::-;39391:24;39409:5;39391:24;:::i;:::-;39386:3;39379:37;39314:108;;:::o;39428:179::-;39497:10;39518:46;39560:3;39552:6;39518:46;:::i;:::-;39596:4;39591:3;39587:14;39573:28;;39428:179;;;;:::o;39613:113::-;39683:4;39715;39710:3;39706:14;39698:22;;39613:113;;;:::o;39762:732::-;39881:3;39910:54;39958:5;39910:54;:::i;:::-;39980:86;40059:6;40054:3;39980:86;:::i;:::-;39973:93;;40090:56;40140:5;40090:56;:::i;:::-;40169:7;40200:1;40185:284;40210:6;40207:1;40204:13;40185:284;;;40286:6;40280:13;40313:63;40372:3;40357:13;40313:63;:::i;:::-;40306:70;;40399:60;40452:6;40399:60;:::i;:::-;40389:70;;40245:224;40232:1;40229;40225:9;40220:14;;40185:284;;;40189:14;40485:3;40478:10;;39886:608;;;39762:732;;;;:::o;40500:831::-;40763:4;40801:3;40790:9;40786:19;40778:27;;40815:71;40883:1;40872:9;40868:17;40859:6;40815:71;:::i;:::-;40896:80;40972:2;40961:9;40957:18;40948:6;40896:80;:::i;:::-;41023:9;41017:4;41013:20;41008:2;40997:9;40993:18;40986:48;41051:108;41154:4;41145:6;41051:108;:::i;:::-;41043:116;;41169:72;41237:2;41226:9;41222:18;41213:6;41169:72;:::i;:::-;41251:73;41319:3;41308:9;41304:19;41295:6;41251:73;:::i;:::-;40500:831;;;;;;;;:::o;41337:222::-;41430:4;41468:2;41457:9;41453:18;41445:26;;41481:71;41549:1;41538:9;41534:17;41525:6;41481:71;:::i;:::-;41337:222;;;;:::o;41565:351::-;41635:6;41684:2;41672:9;41663:7;41659:23;41655:32;41652:119;;;41690:79;;:::i;:::-;41652:119;41810:1;41835:64;41891:7;41882:6;41871:9;41867:22;41835:64;:::i;:::-;41825:74;;41781:128;41565:351;;;;:::o;41922:242::-;41961:3;41980:19;41997:1;41980:19;:::i;:::-;41975:24;;42013:19;42030:1;42013:19;:::i;:::-;42008:24;;42106:1;42098:6;42094:14;42091:1;42088:21;42085:47;;;42112:18;;:::i;:::-;42085:47;42156:1;42153;42149:9;42142:16;;41922:242;;;;:::o

Swarm Source

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