ETH Price: $2,502.33 (-0.58%)

Contract

0x648427cfEE8c3498D317B2507fE9f3D002243408
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer160796652022-11-30 1:57:23695 days ago1669773443IN
0x648427cf...002243408
0 ETH0.0012914212.77628516
Approve153130242022-08-10 7:24:40807 days ago1660116280IN
0x648427cf...002243408
0 ETH0.000424589.09742603
Approve153088782022-08-09 15:45:28807 days ago1660059928IN
0x648427cf...002243408
0 ETH0.0008902519.07501722
Approve153087682022-08-09 15:21:12807 days ago1660058472IN
0x648427cf...002243408
0 ETH0.000854918.31759115
Approve153086022022-08-09 14:42:38807 days ago1660056158IN
0x648427cf...002243408
0 ETH0.0012033525.78387228
Approve153085272022-08-09 14:28:50807 days ago1660055330IN
0x648427cf...002243408
0 ETH0.0011416424.46147466
Approve153085212022-08-09 14:27:36807 days ago1660055256IN
0x648427cf...002243408
0 ETH0.0012076825.87659818
Approve153085072022-08-09 14:24:37807 days ago1660055077IN
0x648427cf...002243408
0 ETH0.0013760329.48363161
Approve153084962022-08-09 14:22:56807 days ago1660054976IN
0x648427cf...002243408
0 ETH0.0007136929.26535203
Approve153084942022-08-09 14:21:52807 days ago1660054912IN
0x648427cf...002243408
0 ETH0.0012288826.33088599
Approve153084822022-08-09 14:20:21807 days ago1660054821IN
0x648427cf...002243408
0 ETH0.0012131145.31446215
Approve153084822022-08-09 14:20:21807 days ago1660054821IN
0x648427cf...002243408
0 ETH0.0012131145.31446215
Approve153084602022-08-09 14:14:50807 days ago1660054490IN
0x648427cf...002243408
0 ETH0.002281348.88054721
Approve153084322022-08-09 14:06:54807 days ago1660054014IN
0x648427cf...002243408
0 ETH0.0015485133.17937766
Approve153084272022-08-09 14:05:24807 days ago1660053924IN
0x648427cf...002243408
0 ETH0.0014001330
Approve153083982022-08-09 13:59:50807 days ago1660053590IN
0x648427cf...002243408
0 ETH0.0011325438.2990517
Approve153083852022-08-09 13:57:43807 days ago1660053463IN
0x648427cf...002243408
0 ETH0.0006758914.48212082
Approve153083522022-08-09 13:49:49807 days ago1660052989IN
0x648427cf...002243408
0 ETH0.0007879216.88246302
Approve153083512022-08-09 13:49:36807 days ago1660052976IN
0x648427cf...002243408
0 ETH0.0007604116.29300614
Approve153083512022-08-09 13:49:36807 days ago1660052976IN
0x648427cf...002243408
0 ETH0.0007604116.29300614
Approve153083392022-08-09 13:47:50807 days ago1660052870IN
0x648427cf...002243408
0 ETH0.0008399917.99817795
Approve153083252022-08-09 13:44:42807 days ago1660052682IN
0x648427cf...002243408
0 ETH0.0008502118.21726523
Approve153083202022-08-09 13:44:08807 days ago1660052648IN
0x648427cf...002243408
0 ETH0.0011116723.81944987
Approve153083202022-08-09 13:44:08807 days ago1660052648IN
0x648427cf...002243408
0 ETH0.0011116723.81944987
Approve153083202022-08-09 13:44:08807 days ago1660052648IN
0x648427cf...002243408
0 ETH0.0006376723.81944987
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
153130272022-08-10 7:25:07807 days ago1660116307
0x648427cf...002243408
0.0047811 ETH
153130272022-08-10 7:25:07807 days ago1660116307
0x648427cf...002243408
0.0047811 ETH
153086012022-08-09 14:42:32807 days ago1660056152
0x648427cf...002243408
0.00804029 ETH
153086012022-08-09 14:42:32807 days ago1660056152
0x648427cf...002243408
0.00804029 ETH
153084842022-08-09 14:20:39807 days ago1660054839
0x648427cf...002243408
0.00744217 ETH
153084842022-08-09 14:20:39807 days ago1660054839
0x648427cf...002243408
0.00744217 ETH
153084562022-08-09 14:12:57807 days ago1660054377
0x648427cf...002243408
0.01279525 ETH
153084562022-08-09 14:12:57807 days ago1660054377
0x648427cf...002243408
0.01279525 ETH
153083692022-08-09 13:53:55807 days ago1660053235
0x648427cf...002243408
0.01867887 ETH
153083692022-08-09 13:53:55807 days ago1660053235
0x648427cf...002243408
0.01867887 ETH
153082832022-08-09 13:34:39807 days ago1660052079
0x648427cf...002243408
0.01276541 ETH
153082832022-08-09 13:34:39807 days ago1660052079
0x648427cf...002243408
0.01276541 ETH
153082732022-08-09 13:31:37807 days ago1660051897
0x648427cf...002243408
0.01266826 ETH
153082732022-08-09 13:31:37807 days ago1660051897
0x648427cf...002243408
0.01266826 ETH
153082242022-08-09 13:20:13807 days ago1660051213
0x648427cf...002243408
0.01473224 ETH
153082242022-08-09 13:20:13807 days ago1660051213
0x648427cf...002243408
0.01473224 ETH
153082212022-08-09 13:19:34807 days ago1660051174
0x648427cf...002243408
0.01370146 ETH
153082212022-08-09 13:19:34807 days ago1660051174
0x648427cf...002243408
0.01370146 ETH
153082212022-08-09 13:19:34807 days ago1660051174
0x648427cf...002243408
0.01370146 ETH
153082212022-08-09 13:19:34807 days ago1660051174
0x648427cf...002243408
0.01370146 ETH
153081922022-08-09 13:13:42807 days ago1660050822
0x648427cf...002243408
0.01775098 ETH
153081922022-08-09 13:13:42807 days ago1660050822
0x648427cf...002243408
0.01775098 ETH
153081912022-08-09 13:13:18807 days ago1660050798
0x648427cf...002243408
0.01532998 ETH
153081912022-08-09 13:13:18807 days ago1660050798
0x648427cf...002243408
0.01532998 ETH
153081912022-08-09 13:13:18807 days ago1660050798
0x648427cf...002243408
0.01532998 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ETHFourThousand

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/*
ETH 4000 Official Community 📈
📍  https://eth4000.com
📍  https://twitter.com/ETH_4000
📍  https://medium.com/@eth4000.official
📍  https://t.me/eth4000
Let's Make Ethereum Great Again!!!🚀🌕
*/

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.13;

interface IERC20 {
	
	function totalSupply() external view returns (uint256);
	function balanceOf(address account) external view returns (uint256);
	function transfer(address recipient, uint256 amount) external returns (bool);
	function allowance(address owner, address spender) external view returns (uint256);
	function approve(address spender, uint256 amount) external returns (bool);
	function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
	
	event Transfer(address indexed from, address indexed to, uint256 value);
	event Approval(address indexed owner, address indexed spender, uint256 value);

	event TransferDetails(address indexed from, address indexed to, uint256 total_Amount, uint256 reflected_amount, uint256 total_TransferAmount, uint256 reflected_TransferAmount);
}

abstract contract Context {
	function _msgSender() internal view virtual returns (address) {
		return msg.sender;
	}

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

library Address {
	
	function isContract(address account) internal view returns (bool) {
		uint256 size;
		assembly { size := extcodesize(account) }
		return size > 0;
	}

	function sendValue(address payable recipient, uint256 amount) internal {
		require(address(this).balance >= amount, "Address: insufficient balance");
		(bool success, ) = recipient.call{ value: amount }("");
		require(success, "Address: unable to send value, recipient may have reverted");
	}
	
	function functionCall(address target, bytes memory data) internal returns (bytes memory) {
	  return functionCall(target, data, "Address: low-level call failed");
	}
	
	function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
		return functionCallWithValue(target, data, 0, errorMessage);
	}
	
	function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
		return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
	}
	
	function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
		require(address(this).balance >= value, "Address: insufficient balance for call");
		require(isContract(target), "Address: call to non-contract");
		(bool success, bytes memory returndata) = target.call{ value: value }(data);
		return _verifyCallResult(success, returndata, errorMessage);
	}
	
	function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
		return functionStaticCall(target, data, "Address: low-level static call failed");
	}
	
	function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
		require(isContract(target), "Address: static call to non-contract");
		(bool success, bytes memory returndata) = target.staticcall(data);
		return _verifyCallResult(success, returndata, errorMessage);
	}


	function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
		return functionDelegateCall(target, data, "Address: low-level delegate call failed");
	}
	
	function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
		require(isContract(target), "Address: delegate call to non-contract");
		(bool success, bytes memory returndata) = target.delegatecall(data);
		return _verifyCallResult(success, returndata, errorMessage);
	}

	function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
		if (success) {
		    return returndata;
		} else {
		    if (returndata.length > 0) {
		         assembly {
		            let returndata_size := mload(returndata)
		            revert(add(32, returndata), returndata_size)
		        }
		    } else {
		        revert(errorMessage);
		    }
		}
	}
}



abstract contract Ownable is Context {
	address private _owner;

	event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
	constructor () {
		_owner = _msgSender();
		emit OwnershipTransferred(address(0), _owner);
	}
	
	function owner() public view virtual returns (address) {
		return _owner;
	}
	
	modifier onlyOwner() {
		require(owner() == _msgSender(), "Ownable: caller is not the owner");
		_;
	}

	function transferOwnership(address newOwner) public virtual onlyOwner {
		require(newOwner != address(0), "Ownable: new owner is the zero address");
		emit OwnershipTransferred(_owner, newOwner);
		_owner = newOwner;
	}

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

}

interface IUniswapV2Factory {
	function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IUniswapV2Router01 {
	function factory() external pure returns (address);
	function WETH() 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);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
	function swapExactTokensForETHSupportingFeeOnTransferTokens(
		uint amountIn,
		uint amountOutMin,
		address[] calldata path,
		address to,
		uint deadline
	) external;
}


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

	mapping (address => uint256) public _rewardedBalance;
	mapping (address => uint256) public _totalBalance;
	mapping (address => mapping (address => uint256)) private _allowances;
	
	mapping (address => bool) public _isExcluded;
	
	bool public blacklistMode = true;
	mapping (address => bool) public isBlacklisted;

	bool public tradingOpen = false;
	bool public TOBITNA = true;
	
	uint256 private constant MAX = ~uint256(0);

	uint8 public constant decimals = 9;
	uint256 public constant totalSupply = 1 * 10**8 * 10**decimals;

	uint256 private _reflectSupply   = (MAX - (MAX % totalSupply));
	
	string public constant name = "ETH4000";
	string public constant symbol = "ETH4000";
	
	uint256 public _swapToFeeThreshold_treasury = totalSupply / 5000;
	uint256 public _swapToFeeThreshold_marketing = totalSupply / 5000;
	 
	uint256 public _treasuryBalanceLimit = 0;
	uint256 public _marketingBalanceLimit = 0;
	 
	uint256 public _reflectionFee = 150; //1.5%
	uint256 private _old_reflectionFee = _reflectionFee;
	uint256 public _contractReflectionAmount = 0;
	 
	uint256 public _marketingFee = 75;//0.75%
	uint256 private _old_marketingFee = _marketingFee;
	address payable public _marketingWallet;
	 
	uint256 public _treasuryFee = 75;//0.75%
	uint256 private _old_treasuryFee = _treasuryFee;
	address payable public _treasuryWallet;
	 
	uint256 public _liquidityFee = 100; //1.5%
	uint256 private _old_liquidtyFee = _liquidityFee;
	
	uint256 public _burntFee = 100;//1%
	uint256 private _old_burntFee = _burntFee;
	address constant burntWallet = 0x000000000000000000000000000000000000dEaD;


	uint256 public _fee_denominator = 10000;

	IUniswapV2Router02 public immutable uniswapV2Router;
	address public immutable uniswapV2Pair;
	bool inSwapAndLiquify;
	bool public swapAndLiquifyEnabled = true;


 
	uint256 public _maxWallet = totalSupply / 50;
	uint256 public _maxTxnAmount =  totalSupply / 100;

	address[] public _excluded;
	mapping (address => bool) public isExcludedFromFee;
	mapping (address => bool) public isExcludedFromTxnLimit;
	mapping (address => bool) public isExcludedFromWalletLimit;
 
	uint256 public swapThreshold =  ( totalSupply * 2 ) / 1000;
 
	uint256 public sellMultiplier = 100;
	uint256 public buyMultiplier = 100;
	uint256 public transferMultiplier = 100;

	event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
	event SwapAndLiquify(
		uint256 tokensSwapped,
		uint256 ethReceived,
		uint256 tokensIntoLiqudity
	);

	
	modifier lockTheSwap {
		inSwapAndLiquify = true;
		_;
		inSwapAndLiquify = false;
	}
	
	constructor () {
		_rewardedBalance[owner()] = _reflectSupply;

		
		_marketingWallet = payable(0xdaDcbDFd7529f101E7f64F67cc331f3e90f27ca9);
		_treasuryWallet = payable(0x0b20a925355DCE12D19E2890697B1FE153b4ccE6);
		
		IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
		uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
		uniswapV2Router = _uniswapV2Router;

		isExcludedFromFee[msg.sender] = true;
		isExcludedFromFee[address(this)] = true;
		isExcludedFromFee[burntWallet] = true;

		isExcludedFromTxnLimit[msg.sender] = true;
		isExcludedFromTxnLimit[burntWallet] = true;
		isExcludedFromTxnLimit[_marketingWallet] = true;
		isExcludedFromTxnLimit[_treasuryWallet] = true;

		isExcludedFromWalletLimit[msg.sender] = true;
		isExcludedFromWalletLimit[address(this)] = true;
		isExcludedFromWalletLimit[burntWallet] = true;
		isExcludedFromWalletLimit[_marketingWallet] = true;
		isExcludedFromWalletLimit[_treasuryWallet] = true;
		
		emit Transfer(address(0), owner(), totalSupply);
	}

	function balanceOf(address account) public view override returns (uint256) {
		if (_isExcluded[account]) return _totalBalance[account];
		return tokenFromReflection(_rewardedBalance[account]);
	}

	function transfer(address recipient, uint256 amount) public override returns (bool) {
		_transfer(_msgSender(), recipient, amount);
		return true;
	}

	function allowance(address owner, address spender) public view override returns (uint256) {
		return _allowances[owner][spender];
	}

	function approve(address spender, uint256 amount) public override returns (bool) {
		_approve(_msgSender(), spender, amount);
		return true;
	}

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

	function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
		_approve(_msgSender(), spender, (_allowances[_msgSender()][spender] + addedValue));
		return true;
	}

	function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
		require (_allowances[_msgSender()][spender] >= subtractedValue,"ERC20: decreased allowance below zero");
		_approve(_msgSender(), spender, (_allowances[_msgSender()][spender] - subtractedValue));
		return true;
	}

	function ___tokenInfo () public view returns(
		uint256 MaxTxAmount,
		uint256 MaxWalletToken,
		uint256 TotalSupply,
		uint256 Reflected_Supply,
		uint256 Reflection_Rate,
		bool TradingOpen
		) {
		return (_maxTxnAmount, _maxWallet, totalSupply, _reflectSupply, _getRate(), tradingOpen );
	}

	function ___feesInfo () public view returns(
		uint256 SwapThreshold,
		uint256 contractTokenBalance,
		uint256 Reflection_tokens_stored
		) {
		return (swapThreshold, balanceOf(address(this)), _contractReflectionAmount);
	}

	function ___wallets () public view returns(
		uint256 Reflection_Fees,
		uint256 Liquidity_Fee,
		uint256 Treasury_Fee,
		uint256 Treasury_Fee_Convert_Limit,
		uint256 Treasury_Fee_Minimum_Balance,
		uint256 Marketing_Fee,
		uint256 Marketing_Fee_Convert_Limit,
		uint256 Marketing_Fee_Minimum_Balance
	) {
		return ( _reflectionFee, _liquidityFee,
			_treasuryFee,_swapToFeeThreshold_treasury,_treasuryBalanceLimit,
			_marketingFee,_swapToFeeThreshold_marketing, _marketingBalanceLimit);
	}

	function changeWallets(address _newMarketing, address _newTreasury) external onlyOwner {
		_marketingWallet = payable(_newMarketing);
		_treasuryWallet = payable(_newTreasury);
	}

	function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
		require(rAmount <= _reflectSupply, "Amount must be less than total reflections");
		uint256 currentRate =  _getRate();
		return (rAmount / currentRate);
	}

	function excludeFromReward(address account) external onlyOwner {
		require(!_isExcluded[account], "Account is already excluded");
		if(_rewardedBalance[account] > 0) {
			_totalBalance[account] = tokenFromReflection(_rewardedBalance[account]);
		}
		_isExcluded[account] = true;
		_excluded.push(account);
	}

	function removeExcludeFromReward(address account) external onlyOwner {
		require(_isExcluded[account], "Account is already included");
		for (uint256 i = 0; i < _excluded.length; i++) {
			if (_excluded[i] == account) {
				_excluded[i] = _excluded[_excluded.length - 1];
				_totalBalance[account] = 0;
				_isExcluded[account] = false;
				_excluded.pop();
				break;
			}
		}
	}

	function tradingStatus(bool _status, bool _ab) external onlyOwner {
		tradingOpen = _status;
		TOBITNA = _ab;
	}

	function setMaxTxPercent_base1000(uint256 maxTxPercentBase1000) external onlyOwner {
		_maxTxnAmount = (totalSupply * maxTxPercentBase1000 ) / 1000;
	}

	 function setMaxWalletPercent_base1000(uint256 maxWallPercentBase1000) external onlyOwner {
		_maxWallet = (totalSupply * maxWallPercentBase1000 ) / 1000;
	}
	
	function setSwapSettings(bool _status, uint256 _threshold) external onlyOwner {
		swapAndLiquifyEnabled = _status;
		swapThreshold = _threshold;
	}

	function enable_blacklist(bool _status) external onlyOwner {
		blacklistMode = _status;
	}

	function manage_blacklist(address[] calldata addresses, bool status) external onlyOwner {
		for (uint256 i; i < addresses.length; ++i) {
			isBlacklisted[addresses[i]] = status;
		}
	}

	function manage_excludeFromFee(address[] calldata addresses, bool status) external onlyOwner {
		for (uint256 i; i < addresses.length; ++i) {
			isExcludedFromFee[addresses[i]] = status;
		}
	}

	function manage_TxLimitExempt(address[] calldata addresses, bool status) external onlyOwner {
		require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
		for (uint256 i=0; i < addresses.length; ++i) {
			isExcludedFromTxnLimit[addresses[i]] = status;
		}
	}

	function manage_WalletLimitExempt(address[] calldata addresses, bool status) external onlyOwner {
		require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
		for (uint256 i=0; i < addresses.length; ++i) {
			isExcludedFromWalletLimit[addresses[i]] = status;
		}
	}
	

	function clearStuckBalance(uint256 amountPercentage) external onlyOwner {
		uint256 amountToClear = amountPercentage * address(this).balance / 100;
		payable(msg.sender).transfer(amountToClear);
	}

	function clearStuckToken(address tokenAddress, uint256 tokens) external onlyOwner returns (bool success) {

		if(tokens == 0){
			tokens = IERC20(tokenAddress).balanceOf(address(this));
		}
		return IERC20(tokenAddress).transfer(msg.sender, tokens);
	}

	
	function _getRate() private view returns(uint256) {
		(uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
		return rSupply / tSupply;
	}

	function _getCurrentSupply() private view returns(uint256, uint256) {
		uint256 rSupply = _reflectSupply;
		uint256 tSupply = totalSupply;
		for (uint256 i = 0; i < _excluded.length; i++) {
			if (_rewardedBalance[_excluded[i]] > rSupply || _totalBalance[_excluded[i]] > tSupply) return (_reflectSupply, totalSupply);
			rSupply = rSupply - _rewardedBalance[_excluded[i]];
			tSupply = tSupply - _totalBalance[_excluded[i]];
		}
		if (rSupply < (_reflectSupply/totalSupply)) return (_reflectSupply, totalSupply);
		return (rSupply, tSupply);
	}


	function _getValues(uint256 tAmount, address recipient, address sender) private view returns (
		uint256 rAmount, uint256 rTransferAmount, uint256 rReflection,
		uint256 tTransferAmount, uint256 tMarketing, uint256 tLiquidity, uint256 tTreasury, uint256 tReflection, uint256 tBurnt) {

		uint256 multiplier = transferMultiplier;

		if(recipient == uniswapV2Pair) {
			multiplier = sellMultiplier;
		} else if(sender == uniswapV2Pair) {
			multiplier = buyMultiplier;
		}

		tMarketing = ( tAmount * _marketingFee ) * multiplier / (_fee_denominator * 100);
		tLiquidity = ( tAmount * _liquidityFee ) * multiplier / (_fee_denominator * 100);
		tTreasury = ( tAmount * _treasuryFee  ) * multiplier / (_fee_denominator * 100);
		tReflection = ( tAmount * _reflectionFee ) * multiplier  / (_fee_denominator * 100);
		tBurnt = (tAmount * _burntFee) * multiplier  / (_fee_denominator * 100);


		tTransferAmount = tAmount - ( tMarketing + tLiquidity + tTreasury + tReflection + tBurnt);
		rReflection = tReflection * _getRate();
		rAmount = tAmount * _getRate();
		rTransferAmount = tTransferAmount * _getRate();
	}


	function _fees_to_eth_process( address payable wallet, uint256 tokensToConvert) private lockTheSwap {

		uint256 rTokensToConvert = tokensToConvert * _getRate();
		_rewardedBalance[wallet] = _rewardedBalance[wallet] - rTokensToConvert;
		
		if (_isExcluded[wallet]){
			_totalBalance[wallet] = _totalBalance[wallet] - tokensToConvert;
		}

		_rewardedBalance[address(this)] = _rewardedBalance[address(this)] + rTokensToConvert;

		emit Transfer(wallet, address(this), tokensToConvert);

		swapTokensForEthAndSend(tokensToConvert,wallet);

	}

	function _fees_to_eth(uint256 tokensToConvert, address payable feeWallet, uint256 minBalanceToKeep) private {

		if(tokensToConvert == 0){
			return;
		}

		if(tokensToConvert > _maxTxnAmount){
			tokensToConvert = _maxTxnAmount;
		}

		if((tokensToConvert+minBalanceToKeep)  <= balanceOf(feeWallet)){
			_fees_to_eth_process(feeWallet,tokensToConvert);
		}
	}

	function _takeFee(uint256 feeAmount, address receiverWallet) private {
		uint256 reflectedReeAmount = feeAmount * _getRate();
		_rewardedBalance[receiverWallet] = _rewardedBalance[receiverWallet] + reflectedReeAmount;

		if(_isExcluded[receiverWallet]){
			_totalBalance[receiverWallet] = _totalBalance[receiverWallet] + feeAmount;
		}
		if(feeAmount > 0){
			emit Transfer(msg.sender, receiverWallet, feeAmount);
		}
	}

	function _setAllFees(uint256 marketingFee, uint256 liquidityFee, uint256 treasuryFee, uint256 reflectionFee, uint256 burntFee) private {
		_marketingFee = marketingFee;
		_liquidityFee = liquidityFee;
		_treasuryFee = treasuryFee;
		_reflectionFee = reflectionFee;
		_burntFee = burntFee;
	}

	function setMultipliers(uint256 _buy, uint256 _sell, uint256 _trans) external onlyOwner {
		buyMultiplier = _buy;
		sellMultiplier = _sell;
		transferMultiplier = _trans;
	}

	function setFeesThreshold(uint256 swapToFeeThreshold_marketing, uint256 swapToFeeThreshold_treasury,uint256 treasuryBalanceLimit, uint256 marketingBalanceLimit) external onlyOwner {
		_swapToFeeThreshold_marketing = swapToFeeThreshold_marketing;
		_swapToFeeThreshold_treasury = swapToFeeThreshold_treasury;
		_treasuryBalanceLimit = treasuryBalanceLimit;
		_marketingBalanceLimit = marketingBalanceLimit;
	}


	function setFees(uint256 marketingFee, uint256 liquidityFee, uint256 treasuryFee, uint256 reflectionFee, uint256 bruntFee) external onlyOwner {
		uint256 totalFees =  marketingFee + liquidityFee +  treasuryFee + reflectionFee + bruntFee;
		
		require(totalFees/100 < 25);
		_setAllFees( marketingFee, liquidityFee, treasuryFee, reflectionFee, bruntFee);
	}

	function removeAllFee() private {
		_old_marketingFee = _marketingFee;
		_old_liquidtyFee = _liquidityFee;
		_old_treasuryFee = _treasuryFee;
		_old_reflectionFee = _reflectionFee;
		_old_burntFee = _burntFee;

		_setAllFees(0,0,0,0,0);
	}
	
	function restoreAllFee() private {
		_setAllFees(_old_marketingFee, _old_liquidtyFee, _old_treasuryFee, _old_reflectionFee, _old_burntFee);
	}


	function swapAndLiquify(uint256 tokensToSwap) private lockTheSwap {
		
		uint256 tokensHalf = tokensToSwap / 2;
		uint256 contractETHBalance = address(this).balance;

		swapTokensForEth(tokensHalf);
		uint256 ethSwapped = address(this).balance - contractETHBalance;
		addLiquidity(tokensHalf,ethSwapped);

		emit SwapAndLiquify(tokensToSwap, tokensHalf, ethSwapped);

	}

	function swapTokensForEth(uint256 tokenAmount) private {
		address[] memory path = new address[](2);
		path[0] = address(this);
		path[1] = uniswapV2Router.WETH();
		_approve(address(this), address(uniswapV2Router), tokenAmount);
		uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
			tokenAmount,
			0,
			path,
			address(this),
			block.timestamp
		);
	}

	function swapTokensForEthAndSend(uint256 tokenAmount, address payable receiverWallet) private {
		address[] memory path = new address[](2);
		path[0] = address(this);
		path[1] = uniswapV2Router.WETH();
		_approve(address(this), address(uniswapV2Router), tokenAmount);
		uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
			tokenAmount,
			0,
			path,
			receiverWallet,
			block.timestamp
		);
	}

	function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
		_approve(address(this), address(uniswapV2Router), tokenAmount);
		uniswapV2Router.addLiquidityETH{value: ethAmount}(
			address(this),
			tokenAmount,
			0,
			0,
			owner(),
			block.timestamp
		);
	}


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

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

	function _transfer(address from, address to, uint256 amount) private {

		if(from != owner() && to != owner()){
			require(tradingOpen,"Trading not open yet");

			if(TOBITNA && from == uniswapV2Pair){
				isBlacklisted[to] = true;
			}
		}

		if(blacklistMode && !TOBITNA){
			require(!isBlacklisted[from],"Blacklisted");
		}
		
		require((amount <= _maxTxnAmount) || isExcludedFromTxnLimit[from] || isExcludedFromTxnLimit[to], "Max TX Limit Exceeded");

		if (!isExcludedFromWalletLimit[from] && !isExcludedFromWalletLimit[to] && to != uniswapV2Pair) {
		    require((balanceOf(to) + amount) <= _maxWallet,"max wallet limit reached");
		}


		{
		    uint256 contractTokenBalance = balanceOf(address(this));
		
		    if(contractTokenBalance >= _maxTxnAmount) {
		        contractTokenBalance = _maxTxnAmount - 1;
		    }
		
		    bool overMinTokenBalance = contractTokenBalance >= swapThreshold;
		    if (overMinTokenBalance &&
		        !inSwapAndLiquify &&
		        from != uniswapV2Pair &&
		        swapAndLiquifyEnabled
		    ) {
		        contractTokenBalance = swapThreshold;
		        swapAndLiquify(contractTokenBalance);
		    }

		    if(!inSwapAndLiquify && from != uniswapV2Pair && swapAndLiquifyEnabled){
		        _fees_to_eth(_swapToFeeThreshold_treasury,_treasuryWallet, _treasuryBalanceLimit);
		        _fees_to_eth(_swapToFeeThreshold_marketing,_marketingWallet, _marketingBalanceLimit);
		    }
		
		}
		
		bool takeFee = true;
		if(isExcludedFromFee[from] || isExcludedFromFee[to]){
		    takeFee = false;
		    removeAllFee();
		}
		
		(uint256 rAmount, uint256 rTransferAmount, uint256 rReflection, uint256 tTransferAmount, uint256 tMarketing, uint256 tLiquidity, uint256 tTreasury,  uint256 tReflection, uint256 tBurnt) = _getValues(amount, to, from);

		_transferStandard(from, to, amount, rAmount, tTransferAmount, rTransferAmount);

		_reflectSupply = _reflectSupply - rReflection;
		_contractReflectionAmount = _contractReflectionAmount + tReflection;

		if(!takeFee){
		    restoreAllFee();
		} else{
		    _takeFee(tMarketing,_marketingWallet);
		    _takeFee(tLiquidity,address(this));
		    _takeFee(tTreasury,_treasuryWallet);
			_takeFee(tBurnt, burntWallet);
		}

	}

	function _transferStandard(address from, address to, uint256 tAmount, uint256 rAmount, uint256 tTransferAmount, uint256 rTransferAmount) private {
		_rewardedBalance[from]    = _rewardedBalance[from]  - rAmount;

		if (_isExcluded[from]){
		    _totalBalance[from]    = _totalBalance[from]      - tAmount;
		}

		if (_isExcluded[to]){
		    _totalBalance[to]      = _totalBalance[to]        + tTransferAmount;
		}
		_rewardedBalance[to]      = _rewardedBalance[to]    + rTransferAmount;

		if(tTransferAmount > 0){
			emit Transfer(from, to, tTransferAmount);	
		}
	}

	receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"total_Amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"reflected_amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"total_TransferAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"reflected_TransferAmount","type":"uint256"}],"name":"TransferDetails","type":"event"},{"inputs":[],"name":"TOBITNA","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"___feesInfo","outputs":[{"internalType":"uint256","name":"SwapThreshold","type":"uint256"},{"internalType":"uint256","name":"contractTokenBalance","type":"uint256"},{"internalType":"uint256","name":"Reflection_tokens_stored","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"___tokenInfo","outputs":[{"internalType":"uint256","name":"MaxTxAmount","type":"uint256"},{"internalType":"uint256","name":"MaxWalletToken","type":"uint256"},{"internalType":"uint256","name":"TotalSupply","type":"uint256"},{"internalType":"uint256","name":"Reflected_Supply","type":"uint256"},{"internalType":"uint256","name":"Reflection_Rate","type":"uint256"},{"internalType":"bool","name":"TradingOpen","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"___wallets","outputs":[{"internalType":"uint256","name":"Reflection_Fees","type":"uint256"},{"internalType":"uint256","name":"Liquidity_Fee","type":"uint256"},{"internalType":"uint256","name":"Treasury_Fee","type":"uint256"},{"internalType":"uint256","name":"Treasury_Fee_Convert_Limit","type":"uint256"},{"internalType":"uint256","name":"Treasury_Fee_Minimum_Balance","type":"uint256"},{"internalType":"uint256","name":"Marketing_Fee","type":"uint256"},{"internalType":"uint256","name":"Marketing_Fee_Convert_Limit","type":"uint256"},{"internalType":"uint256","name":"Marketing_Fee_Minimum_Balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_burntFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_contractReflectionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"_excluded","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_fee_denominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingBalanceLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxnAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_reflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_rewardedBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapToFeeThreshold_marketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapToFeeThreshold_treasury","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_totalBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_treasuryBalanceLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_treasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_treasuryWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blacklistMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newMarketing","type":"address"},{"internalType":"address","name":"_newTreasury","type":"address"}],"name":"changeWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enable_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromTxnLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_TxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_WalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeExcludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketingFee","type":"uint256"},{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"treasuryFee","type":"uint256"},{"internalType":"uint256","name":"reflectionFee","type":"uint256"},{"internalType":"uint256","name":"bruntFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapToFeeThreshold_marketing","type":"uint256"},{"internalType":"uint256","name":"swapToFeeThreshold_treasury","type":"uint256"},{"internalType":"uint256","name":"treasuryBalanceLimit","type":"uint256"},{"internalType":"uint256","name":"marketingBalanceLimit","type":"uint256"}],"name":"setFeesThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercentBase1000","type":"uint256"}],"name":"setMaxTxPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercentBase1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setMultipliers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint256","name":"_threshold","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"bool","name":"_ab","type":"bool"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526005805460ff191660011790556007805461ffff19166101001790556200002e6009600a6200069e565b6200003e906305f5e100620006b6565b6200004c90600019620006ee565b6200005a9060001962000705565b6008556113886200006e6009600a6200069e565b6200007e906305f5e100620006b6565b6200008a91906200071f565b6009556113886009600a620000a091906200069e565b620000b0906305f5e100620006b6565b620000bc91906200071f565b600a9081556000600b819055600c8190556096600d819055600e55600f55604b6010819055601181905560138190556014556064601681905560178190556018819055601955612710601a55601b805461ff00191661010017905560329062000128906009906200069e565b62000138906305f5e100620006b6565b6200014491906200071f565b601c556064620001576009600a6200069e565b62000167906305f5e100620006b6565b6200017391906200071f565b601d556103e8620001876009600a6200069e565b62000197906305f5e100620006b6565b620001a4906002620006b6565b620001b091906200071f565b602255606460235560646024556064602555348015620001cf57600080fd5b50600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360085460016000620002296000546001600160a01b031690565b6001600160a01b03168152602080820192909252604090810160002092909255601280546001600160a01b031990811673dadcbdfd7529f101e7f64f67cc331f3e90f27ca91790915560158054909116730b20a925355dce12d19e2890697b1fe153b4cce6179055815163c45a015560e01b81529151737a250d5630b4cf539739df2c5dacb4c659f2488d92839263c45a0155926004808401938290030181865afa158015620002dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000303919062000736565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000351573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000377919062000736565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620003c5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003eb919062000736565b6001600160a01b0390811660a052818116608052336000818152601f602090815260408083208054600160ff1991821681179092553080865283862080548316841790557fef94442dfc0e910ca743614215a10fad3ff708bf5378f9c5c958c9192b3bf004805483168417905586865284805283862080548316841790557fcbaad361c71be11fa6bdbe0e740c6259be964b32182da2da47b54472477c6a17805483168417905560128054891687528487208054841685179055601580548a168852858820805485168617905597875260219095528386208054831684179055855282852080548216831790557fda90364631e387f138e7e413f1de75a8ecb4767574209ddf012729113dea45c0805482168317905592548616845281842080548416821790559354851683528220805490911690921790915554166001600160a01b031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620005616009600a6200069e565b62000571906305f5e100620006b6565b60405190815260200160405180910390a35062000761565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620005e0578160001904821115620005c457620005c462000589565b80851615620005d257918102915b93841c9390800290620005a4565b509250929050565b600082620005f95750600162000698565b81620006085750600062000698565b81600181146200062157600281146200062c576200064c565b600191505062000698565b60ff84111562000640576200064062000589565b50506001821b62000698565b5060208310610133831016604e8410600b841016171562000671575081810a62000698565b6200067d83836200059f565b806000190482111562000694576200069462000589565b0290505b92915050565b6000620006af60ff841683620005e8565b9392505050565b6000816000190483118215151615620006d357620006d362000589565b500290565b634e487b7160e01b600052601260045260246000fd5b600082620007005762000700620006d8565b500690565b6000828210156200071a576200071a62000589565b500390565b600082620007315762000731620006d8565b500490565b6000602082840312156200074957600080fd5b81516001600160a01b0381168114620006af57600080fd5b60805160a051613656620007e96000396000818161073701528181611dea01528181611f960152818161207d015281816120e8015281816123ca015261240c01526000818161057101528181612aa001528181612b5901528181612b9501528181612c0701528181612c2e01528181612e9e01528181612f570152612f9301526136566000f3fe6080604052600436106103f25760003560e01c8063682e54d511610208578063a61699c411610118578063d10ae165116100ab578063f682cb691161007a578063f682cb6914610c91578063fd748c3014610ca7578063fe575a8714610cbd578063fed0d2a114610ced578063ffb54a9914610d0357600080fd5b8063d10ae16514610bec578063dd62ed3e14610c0b578063e092034914610c51578063f2fde38b14610c7157600080fd5b8063bd9ab537116100e7578063bd9ab53714610b50578063c7c6df2514610b70578063d067ed2e14610b9d578063d0e1032614610bcc57600080fd5b8063a61699c414610aca578063a9059cbb14610aea578063b40f946914610b0a578063bb4411e014610b3a57600080fd5b8063896648c11161019b578063955748ee1161016a578063955748ee14610a5457806395d89b411461049f578063962dfc7514610a6a578063a26c833a14610a8a578063a457c2d714610aaa57600080fd5b8063896648c1146109dc5780638da5cb5b146109f65780638e2eee8414610a145780638ecaddf314610a3457600080fd5b806370a08231116101d757806370a0823114610971578063715018a61461099157806377b54bad146109a657806382247ec0146109c657600080fd5b8063682e54d5146108f85780636bc87c3a146109255780636ce46bc31461093b5780636f6413461461095b57600080fd5b806328f0b257116103035780634be9d8691161029657806355e7fe011161026557806355e7fe01146108085780635921652f1461081e5780635e562f3b14610834578063617c62a11461085457806367dc9e921461089857600080fd5b80634be9d869146107785780634d09deb31461079857806352390c02146107b85780635342acb4146107d857600080fd5b80633206b4aa116102d25780633206b4aa146106ef578063395093511461070557806349bd5a5e146107255780634a74bb021461075957600080fd5b806328f0b2571461067c5780632d838119146106925780633121c7c0146106b2578063313ce567146106c857600080fd5b80630b285b1f116103865780631da1db5e116103555780631da1db5e146105f05780631de125161461061057806322976e0d1461062657806323b872dd1461063c578063269d1faa1461065c57600080fd5b80630b285b1f1461052f5780631694505e1461055f57806318160ddd146105ab5780631c3c4fec146105c057600080fd5b806304a66b48116103c257806304a66b481461047f57806306fdde031461049f57806309302dc6146104df578063095ea7b3146104ff57600080fd5b8062108683146103fe57806301ea01a514610420578063034c4897146104495780630445b6671461046957600080fd5b366103f957005b600080fd5b34801561040a57600080fd5b5061041e610419366004613019565b610d1d565b005b34801561042c57600080fd5b5061043660185481565b6040519081526020015b60405180910390f35b34801561045557600080fd5b5061041e61046436600461309f565b610de6565b34801561047557600080fd5b5061043660225481565b34801561048b57600080fd5b5061041e61049a3660046130d8565b610e34565b3480156104ab57600080fd5b506104d2604051806040016040528060078152602001660455448343030360cc1b81525081565b6040516104409190613113565b3480156104eb57600080fd5b5061041e6104fa366004613168565b610ec6565b34801561050b57600080fd5b5061051f61051a366004613196565b610f28565b6040519015158152602001610440565b34801561053b57600080fd5b5061051f61054a3660046131c2565b60046020526000908152604090205460ff1681565b34801561056b57600080fd5b506105937f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610440565b3480156105b757600080fd5b50610436610f3f565b3480156105cc57600080fd5b506105d5610f5c565b60408051938452602084019290925290820152606001610440565b3480156105fc57600080fd5b5061041e61060b366004613168565b610f7b565b34801561061c57600080fd5b50610436601d5481565b34801561063257600080fd5b5061043660105481565b34801561064857600080fd5b5061051f6106573660046131df565b610ff2565b34801561066857600080fd5b50601554610593906001600160a01b031681565b34801561068857600080fd5b5061043660135481565b34801561069e57600080fd5b506104366106ad366004613168565b6110c8565b3480156106be57600080fd5b5061043660245481565b3480156106d457600080fd5b506106dd600981565b60405160ff9091168152602001610440565b3480156106fb57600080fd5b50610436600d5481565b34801561071157600080fd5b5061051f610720366004613196565b61114c565b34801561073157600080fd5b506105937f000000000000000000000000000000000000000000000000000000000000000081565b34801561076557600080fd5b50601b5461051f90610100900460ff1681565b34801561078457600080fd5b5061041e610793366004613019565b611183565b3480156107a457600080fd5b506105936107b3366004613168565b61123d565b3480156107c457600080fd5b5061041e6107d33660046131c2565b611267565b3480156107e457600080fd5b5061051f6107f33660046131c2565b601f6020526000908152604090205460ff1681565b34801561081457600080fd5b5061043660095481565b34801561082a57600080fd5b5061043660255481565b34801561084057600080fd5b5061041e61084f366004613220565b6113ba565b34801561086057600080fd5b506108696113f7565b6040805196875260208701959095529385019290925260608401526080830152151560a082015260c001610440565b3480156108a457600080fd5b50600d54601654601354600954600b54601054600a54600c54604080519889526020890197909752958701949094526060860192909252608085015260a084015260c083015260e082015261010001610440565b34801561090457600080fd5b506104366109133660046131c2565b60026020526000908152604090205481565b34801561093157600080fd5b5061043660165481565b34801561094757600080fd5b5061041e61095636600461323d565b611447565b34801561096757600080fd5b50610436600f5481565b34801561097d57600080fd5b5061043661098c3660046131c2565b61147f565b34801561099d57600080fd5b5061041e6114de565b3480156109b257600080fd5b5061051f6109c1366004613196565b611552565b3480156109d257600080fd5b50610436601c5481565b3480156109e857600080fd5b5060055461051f9060ff1681565b348015610a0257600080fd5b506000546001600160a01b0316610593565b348015610a2057600080fd5b5061041e610a2f366004613019565b611661565b348015610a4057600080fd5b5061041e610a4f366004613269565b6116fa565b348015610a6057600080fd5b50610436600b5481565b348015610a7657600080fd5b50601254610593906001600160a01b031681565b348015610a9657600080fd5b5061041e610aa53660046131c2565b611738565b348015610ab657600080fd5b5061051f610ac5366004613196565b6118ee565b348015610ad657600080fd5b5061041e610ae536600461329b565b6119a5565b348015610af657600080fd5b5061051f610b05366004613196565b6119fd565b348015610b1657600080fd5b5061051f610b253660046131c2565b60216020526000908152604090205460ff1681565b348015610b4657600080fd5b50610436600c5481565b348015610b5c57600080fd5b5061041e610b6b366004613168565b611a0a565b348015610b7c57600080fd5b50610436610b8b3660046131c2565b60016020526000908152604090205481565b348015610ba957600080fd5b5061051f610bb83660046131c2565b602080526000908152604090205460ff1681565b348015610bd857600080fd5b5061041e610be73660046132c9565b611a6c565b348015610bf857600080fd5b5060075461051f90610100900460ff1681565b348015610c1757600080fd5b50610436610c2636600461329b565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610c5d57600080fd5b5061041e610c6c366004613019565b611ab4565b348015610c7d57600080fd5b5061041e610c8c3660046131c2565b611b4d565b348015610c9d57600080fd5b50610436600a5481565b348015610cb357600080fd5b50610436601a5481565b348015610cc957600080fd5b5061051f610cd83660046131c2565b60066020526000908152604090205460ff1681565b348015610cf957600080fd5b5061043660235481565b348015610d0f57600080fd5b5060075461051f9060ff1681565b6000546001600160a01b03163314610d505760405162461bcd60e51b8152600401610d47906132e7565b60405180910390fd5b6101f58210610d715760405162461bcd60e51b8152600401610d479061331c565b60005b82811015610de0578160216000868685818110610d9357610d93613361565b9050602002016020810190610da891906131c2565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610dd98161338d565b9050610d74565b50505050565b6000546001600160a01b03163314610e105760405162461bcd60e51b8152600401610d47906132e7565b6007805461ffff191692151561ff0019169290921761010091151591909102179055565b6000546001600160a01b03163314610e5e5760405162461bcd60e51b8152600401610d47906132e7565b6000818385610e6d888a6133a6565b610e7791906133a6565b610e8191906133a6565b610e8b91906133a6565b90506019610e9a6064836133be565b10610ea457600080fd5b601086905560168590556013849055600d83905560188290555b505050505050565b6000546001600160a01b03163314610ef05760405162461bcd60e51b8152600401610d47906132e7565b6103e881610f006009600a6134c4565b610f0e906305f5e1006134d3565b610f1891906134d3565b610f2291906133be565b601c5550565b6000610f35338484611c37565b5060015b92915050565b610f4b6009600a6134c4565b610f59906305f5e1006134d3565b81565b6000806000602254610f6d3061147f565b600f54925092509250909192565b6000546001600160a01b03163314610fa55760405162461bcd60e51b8152600401610d47906132e7565b60006064610fb347846134d3565b610fbd91906133be565b604051909150339082156108fc029083906000818181858888f19350505050158015610fed573d6000803e3d6000fd5b505050565b6000610fff848484611d5c565b6001600160a01b03841660009081526003602090815260408083203384529091529020548211156110835760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610d47565b6001600160a01b0384166000908152600360209081526040808320338085529252909120546110be9186916110b99086906134f2565b611c37565b5060019392505050565b600060085482111561112f5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610d47565b6000611139612283565b905061114581846133be565b9392505050565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610f359185906110b99086906133a6565b6000546001600160a01b031633146111ad5760405162461bcd60e51b8152600401610d47906132e7565b6101f582106111ce5760405162461bcd60e51b8152600401610d479061331c565b60005b82811015610de05781602060008686858181106111f0576111f0613361565b905060200201602081019061120591906131c2565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556112368161338d565b90506111d1565b601e818154811061124d57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b031633146112915760405162461bcd60e51b8152600401610d47906132e7565b6001600160a01b03811660009081526004602052604090205460ff16156112fa5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610d47565b6001600160a01b03811660009081526001602052604090205415611354576001600160a01b03811660009081526001602052604090205461133a906110c8565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600460205260408120805460ff19166001908117909155601e805491820181559091527f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e3500180546001600160a01b0319169091179055565b6000546001600160a01b031633146113e45760405162461bcd60e51b8152600401610d47906132e7565b6005805460ff1916911515919091179055565b600080600080600080601d54601c546009600a61141491906134c4565b611422906305f5e1006134d3565b60085461142d612283565b600754949b939a509198509650945060ff90911692509050565b6000546001600160a01b031633146114715760405162461bcd60e51b8152600401610d47906132e7565b602492909255602355602555565b6001600160a01b03811660009081526004602052604081205460ff16156114bc57506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610f39906110c8565b6000546001600160a01b031633146115085760405162461bcd60e51b8152600401610d47906132e7565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600080546001600160a01b0316331461157d5760405162461bcd60e51b8152600401610d47906132e7565b816000036115f0576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa1580156115c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ed9190613509565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af115801561163d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111459190613522565b6000546001600160a01b0316331461168b5760405162461bcd60e51b8152600401610d47906132e7565b60005b82811015610de05781600660008686858181106116ad576116ad613361565b90506020020160208101906116c291906131c2565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556116f38161338d565b905061168e565b6000546001600160a01b031633146117245760405162461bcd60e51b8152600401610d47906132e7565b600a93909355600991909155600b55600c55565b6000546001600160a01b031633146117625760405162461bcd60e51b8152600401610d47906132e7565b6001600160a01b03811660009081526004602052604090205460ff166117ca5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c7564656400000000006044820152606401610d47565b60005b601e548110156118ea57816001600160a01b0316601e82815481106117f4576117f4613361565b6000918252602090912001546001600160a01b0316036118d857601e805461181e906001906134f2565b8154811061182e5761182e613361565b600091825260209091200154601e80546001600160a01b03909216918390811061185a5761185a613361565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600490925220805460ff19169055601e8054806118b2576118b261353f565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b806118e28161338d565b9150506117cd565b5050565b3360009081526003602090815260408083206001600160a01b038616845290915281205482111561196f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610d47565b3360008181526003602090815260408083206001600160a01b0388168452909152902054610f35919085906110b99086906134f2565b6000546001600160a01b031633146119cf5760405162461bcd60e51b8152600401610d47906132e7565b601280546001600160a01b039384166001600160a01b03199182161790915560158054929093169116179055565b6000610f35338484611d5c565b6000546001600160a01b03163314611a345760405162461bcd60e51b8152600401610d47906132e7565b6103e881611a446009600a6134c4565b611a52906305f5e1006134d3565b611a5c91906134d3565b611a6691906133be565b601d5550565b6000546001600160a01b03163314611a965760405162461bcd60e51b8152600401610d47906132e7565b601b80549215156101000261ff001990931692909217909155602255565b6000546001600160a01b03163314611ade5760405162461bcd60e51b8152600401610d47906132e7565b60005b82811015610de05781601f6000868685818110611b0057611b00613361565b9050602002016020810190611b1591906131c2565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055611b468161338d565b9050611ae1565b6000546001600160a01b03163314611b775760405162461bcd60e51b8152600401610d47906132e7565b6001600160a01b038116611bdc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d47565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316611c995760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610d47565b6001600160a01b038216611cfa5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610d47565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000546001600160a01b03848116911614801590611d8857506000546001600160a01b03838116911614155b15611e475760075460ff16611dd65760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610d47565b600754610100900460ff168015611e1e57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316145b15611e47576001600160a01b0382166000908152600660205260409020805460ff191660011790555b60055460ff168015611e615750600754610100900460ff16155b15611ebd576001600160a01b03831660009081526006602052604090205460ff1615611ebd5760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610d47565b601d5481111580611ee557506001600160a01b038316600090815260208052604090205460ff165b80611f0757506001600160a01b038216600090815260208052604090205460ff165b611f4b5760405162461bcd60e51b815260206004820152601560248201527413585e08151608131a5b5a5d08115e18d959591959605a1b6044820152606401610d47565b6001600160a01b03831660009081526021602052604090205460ff16158015611f8d57506001600160a01b03821660009081526021602052604090205460ff16155b8015611fcb57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b1561203557601c5481611fdd8461147f565b611fe791906133a6565b11156120355760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d6974207265616368656400000000000000006044820152606401610d47565b60006120403061147f565b9050601d54811061205d576001601d5461205a91906134f2565b90505b602254811080159081906120745750601b5460ff16155b80156120b257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b80156120c55750601b54610100900460ff165b156120d85760225491506120d8826122a6565b601b5460ff1615801561211d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b80156121305750601b54610100900460ff165b1561216f57600954601554600b5461215292916001600160a01b031690612335565b600a54601254600c5461216f92916001600160a01b031690612335565b50506001600160a01b0383166000908152601f602052604090205460019060ff16806121b357506001600160a01b0383166000908152601f602052604090205460ff165b156121c3575060006121c3612374565b60008060008060008060008060006121dc8b8d8f6123b4565b9850985098509850985098509850985098506121fc8d8d8d8c8a8d6125ce565b8660085461220a91906134f2565b600855600f5461221b9083906133a6565b600f55896122305761222b612754565b612274565b6012546122479086906001600160a01b031661277d565b612251843061277d565b6015546122689084906001600160a01b031661277d565b6122748161dead61277d565b50505050505050505050505050565b6000806000612290612866565b909250905061229f81836133be565b9250505090565b601b805460ff1916600117905560006122c06002836133be565b9050476122cc82612a49565b60006122d882476134f2565b90506122e48382612c01565b60408051858152602081018590529081018290527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15050601b805460ff191690555050565b8260000361234257505050565b601d5483111561235257601d5492505b61235b8261147f565b61236582856133a6565b11610fed57610fed8284612d07565b601054601155601654601755601354601455600d54600e556018546019556123b2600080808080601094909455601692909255601355600d55601855565b565b60008060008060008060008060008060255490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168c6001600160a01b03160361240a5750602354612448565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168b6001600160a01b03160361244857506024545b601a546124569060646134d3565b816010548f61246591906134d3565b61246f91906134d3565b61247991906133be565b9550601a54606461248a91906134d3565b816016548f61249991906134d3565b6124a391906134d3565b6124ad91906133be565b9450601a5460646124be91906134d3565b816013548f6124cd91906134d3565b6124d791906134d3565b6124e191906133be565b9350601a5460646124f291906134d3565b81600d548f61250191906134d3565b61250b91906134d3565b61251591906133be565b9250601a54606461252691906134d3565b816018548f61253591906134d3565b61253f91906134d3565b61254991906133be565b9150818385612558888a6133a6565b61256291906133a6565b61256c91906133a6565b61257691906133a6565b612580908e6134f2565b965061258a612283565b61259490846134d3565b975061259e612283565b6125a8908e6134d3565b99506125b2612283565b6125bc90886134d3565b98505093979b92969a50939750939750565b6001600160a01b0386166000908152600160205260409020546125f29084906134f2565b6001600160a01b03871660009081526001602090815260408083209390935560049052205460ff161561265d576001600160a01b0386166000908152600260205260409020546126439085906134f2565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526004602052604090205460ff16156126bc576001600160a01b0385166000908152600260205260409020546126a29083906133a6565b6001600160a01b0386166000908152600260205260409020555b6001600160a01b0385166000908152600160205260409020546126e09082906133a6565b6001600160a01b0386166000908152600160205260409020558115610ebe57846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161274491815260200190565b60405180910390a3505050505050565b6123b2601154601754601454600e54601954601094909455601692909255601355600d55601855565b6000612787612283565b61279190846134d3565b6001600160a01b0383166000908152600160205260409020549091506127b89082906133a6565b6001600160a01b03831660009081526001602090815260408083209390935560049052205460ff1615612823576001600160a01b0382166000908152600260205260409020546128099084906133a6565b6001600160a01b0383166000908152600260205260409020555b8215610fed576040518381526001600160a01b0383169033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001611d4f565b60085460009081908161287b6009600a6134c4565b612889906305f5e1006134d3565b905060005b601e548110156129ea578260016000601e84815481106128b0576128b0613361565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061291b57508160026000601e84815481106128f4576128f4613361565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156129485760085461292f6009600a6134c4565b61293d906305f5e1006134d3565b945094505050509091565b60016000601e838154811061295f5761295f613361565b60009182526020808320909101546001600160a01b0316835282019290925260400190205461298e90846134f2565b925060026000601e83815481106129a7576129a7613361565b60009182526020808320909101546001600160a01b031683528201929092526040019020546129d690836134f2565b9150806129e28161338d565b91505061288e565b506129f76009600a6134c4565b612a05906305f5e1006134d3565b600854612a1291906133be565b821015612a4057600854612a286009600a6134c4565b612a36906305f5e1006134d3565b9350935050509091565b90939092509050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612a7e57612a7e613361565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612afc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b209190613555565b81600181518110612b3357612b33613361565b60200260200101906001600160a01b031690816001600160a01b031681525050612b7e307f000000000000000000000000000000000000000000000000000000000000000084611c37565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790612bd39085906000908690309042906004016135b6565b600060405180830381600087803b158015612bed57600080fd5b505af1158015610ebe573d6000803e3d6000fd5b612c2c307f000000000000000000000000000000000000000000000000000000000000000084611c37565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d719823085600080612c736000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612cdb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d0091906135f2565b5050505050565b601b805460ff191660011790556000612d1e612283565b612d2890836134d3565b6001600160a01b038416600090815260016020526040902054909150612d4f9082906134f2565b6001600160a01b03841660009081526001602090815260408083209390935560049052205460ff1615612dba576001600160a01b038316600090815260026020526040902054612da09083906134f2565b6001600160a01b0384166000908152600260205260409020555b30600090815260016020526040902054612dd59082906133a6565b30600081815260016020526040908190209290925590516001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612e269086815260200190565b60405180910390a3612e388284612e47565b5050601b805460ff1916905550565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612e7c57612e7c613361565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612efa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f1e9190613555565b81600181518110612f3157612f31613361565b60200260200101906001600160a01b031690816001600160a01b031681525050612f7c307f000000000000000000000000000000000000000000000000000000000000000085611c37565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790612fd19086906000908690889042906004016135b6565b600060405180830381600087803b158015612feb57600080fd5b505af1158015612fff573d6000803e3d6000fd5b50505050505050565b801515811461301657600080fd5b50565b60008060006040848603121561302e57600080fd5b833567ffffffffffffffff8082111561304657600080fd5b818601915086601f83011261305a57600080fd5b81358181111561306957600080fd5b8760208260051b850101111561307e57600080fd5b6020928301955093505084013561309481613008565b809150509250925092565b600080604083850312156130b257600080fd5b82356130bd81613008565b915060208301356130cd81613008565b809150509250929050565b600080600080600060a086880312156130f057600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600060208083528351808285015260005b8181101561314057858101830151858201604001528201613124565b81811115613152576000604083870101525b50601f01601f1916929092016040019392505050565b60006020828403121561317a57600080fd5b5035919050565b6001600160a01b038116811461301657600080fd5b600080604083850312156131a957600080fd5b82356131b481613181565b946020939093013593505050565b6000602082840312156131d457600080fd5b813561114581613181565b6000806000606084860312156131f457600080fd5b83356131ff81613181565b9250602084013561320f81613181565b929592945050506040919091013590565b60006020828403121561323257600080fd5b813561114581613008565b60008060006060848603121561325257600080fd5b505081359360208301359350604090920135919050565b6000806000806080858703121561327f57600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156132ae57600080fd5b82356132b981613181565b915060208301356130cd81613181565b600080604083850312156132dc57600080fd5b82356131b481613008565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f474153204572726f723a206d6178206c696d6974206973203530302061646472604082015264657373657360d81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161339f5761339f613377565b5060010190565b600082198211156133b9576133b9613377565b500190565b6000826133db57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b8085111561341b57816000190482111561340157613401613377565b8085161561340e57918102915b93841c93908002906133e5565b509250929050565b60008261343257506001610f39565b8161343f57506000610f39565b8160018114613455576002811461345f5761347b565b6001915050610f39565b60ff84111561347057613470613377565b50506001821b610f39565b5060208310610133831016604e8410600b841016171561349e575081810a610f39565b6134a883836133e0565b80600019048211156134bc576134bc613377565b029392505050565b600061114560ff841683613423565b60008160001904831182151516156134ed576134ed613377565b500290565b60008282101561350457613504613377565b500390565b60006020828403121561351b57600080fd5b5051919050565b60006020828403121561353457600080fd5b815161114581613008565b634e487b7160e01b600052603160045260246000fd5b60006020828403121561356757600080fd5b815161114581613181565b600081518084526020808501945080840160005b838110156135ab5781516001600160a01b031687529582019590820190600101613586565b509495945050505050565b85815284602082015260a0604082015260006135d560a0830186613572565b6001600160a01b0394909416606083015250608001529392505050565b60008060006060848603121561360757600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220f6ccb4d95bde39c9ff4a8afa8390f33bd516d77935cba11cd8e004974d47cd7264736f6c634300080f0033

Deployed Bytecode

0x6080604052600436106103f25760003560e01c8063682e54d511610208578063a61699c411610118578063d10ae165116100ab578063f682cb691161007a578063f682cb6914610c91578063fd748c3014610ca7578063fe575a8714610cbd578063fed0d2a114610ced578063ffb54a9914610d0357600080fd5b8063d10ae16514610bec578063dd62ed3e14610c0b578063e092034914610c51578063f2fde38b14610c7157600080fd5b8063bd9ab537116100e7578063bd9ab53714610b50578063c7c6df2514610b70578063d067ed2e14610b9d578063d0e1032614610bcc57600080fd5b8063a61699c414610aca578063a9059cbb14610aea578063b40f946914610b0a578063bb4411e014610b3a57600080fd5b8063896648c11161019b578063955748ee1161016a578063955748ee14610a5457806395d89b411461049f578063962dfc7514610a6a578063a26c833a14610a8a578063a457c2d714610aaa57600080fd5b8063896648c1146109dc5780638da5cb5b146109f65780638e2eee8414610a145780638ecaddf314610a3457600080fd5b806370a08231116101d757806370a0823114610971578063715018a61461099157806377b54bad146109a657806382247ec0146109c657600080fd5b8063682e54d5146108f85780636bc87c3a146109255780636ce46bc31461093b5780636f6413461461095b57600080fd5b806328f0b257116103035780634be9d8691161029657806355e7fe011161026557806355e7fe01146108085780635921652f1461081e5780635e562f3b14610834578063617c62a11461085457806367dc9e921461089857600080fd5b80634be9d869146107785780634d09deb31461079857806352390c02146107b85780635342acb4146107d857600080fd5b80633206b4aa116102d25780633206b4aa146106ef578063395093511461070557806349bd5a5e146107255780634a74bb021461075957600080fd5b806328f0b2571461067c5780632d838119146106925780633121c7c0146106b2578063313ce567146106c857600080fd5b80630b285b1f116103865780631da1db5e116103555780631da1db5e146105f05780631de125161461061057806322976e0d1461062657806323b872dd1461063c578063269d1faa1461065c57600080fd5b80630b285b1f1461052f5780631694505e1461055f57806318160ddd146105ab5780631c3c4fec146105c057600080fd5b806304a66b48116103c257806304a66b481461047f57806306fdde031461049f57806309302dc6146104df578063095ea7b3146104ff57600080fd5b8062108683146103fe57806301ea01a514610420578063034c4897146104495780630445b6671461046957600080fd5b366103f957005b600080fd5b34801561040a57600080fd5b5061041e610419366004613019565b610d1d565b005b34801561042c57600080fd5b5061043660185481565b6040519081526020015b60405180910390f35b34801561045557600080fd5b5061041e61046436600461309f565b610de6565b34801561047557600080fd5b5061043660225481565b34801561048b57600080fd5b5061041e61049a3660046130d8565b610e34565b3480156104ab57600080fd5b506104d2604051806040016040528060078152602001660455448343030360cc1b81525081565b6040516104409190613113565b3480156104eb57600080fd5b5061041e6104fa366004613168565b610ec6565b34801561050b57600080fd5b5061051f61051a366004613196565b610f28565b6040519015158152602001610440565b34801561053b57600080fd5b5061051f61054a3660046131c2565b60046020526000908152604090205460ff1681565b34801561056b57600080fd5b506105937f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610440565b3480156105b757600080fd5b50610436610f3f565b3480156105cc57600080fd5b506105d5610f5c565b60408051938452602084019290925290820152606001610440565b3480156105fc57600080fd5b5061041e61060b366004613168565b610f7b565b34801561061c57600080fd5b50610436601d5481565b34801561063257600080fd5b5061043660105481565b34801561064857600080fd5b5061051f6106573660046131df565b610ff2565b34801561066857600080fd5b50601554610593906001600160a01b031681565b34801561068857600080fd5b5061043660135481565b34801561069e57600080fd5b506104366106ad366004613168565b6110c8565b3480156106be57600080fd5b5061043660245481565b3480156106d457600080fd5b506106dd600981565b60405160ff9091168152602001610440565b3480156106fb57600080fd5b50610436600d5481565b34801561071157600080fd5b5061051f610720366004613196565b61114c565b34801561073157600080fd5b506105937f000000000000000000000000d1d4b42fdc092a03ae5ecaa05f078b2853fa825b81565b34801561076557600080fd5b50601b5461051f90610100900460ff1681565b34801561078457600080fd5b5061041e610793366004613019565b611183565b3480156107a457600080fd5b506105936107b3366004613168565b61123d565b3480156107c457600080fd5b5061041e6107d33660046131c2565b611267565b3480156107e457600080fd5b5061051f6107f33660046131c2565b601f6020526000908152604090205460ff1681565b34801561081457600080fd5b5061043660095481565b34801561082a57600080fd5b5061043660255481565b34801561084057600080fd5b5061041e61084f366004613220565b6113ba565b34801561086057600080fd5b506108696113f7565b6040805196875260208701959095529385019290925260608401526080830152151560a082015260c001610440565b3480156108a457600080fd5b50600d54601654601354600954600b54601054600a54600c54604080519889526020890197909752958701949094526060860192909252608085015260a084015260c083015260e082015261010001610440565b34801561090457600080fd5b506104366109133660046131c2565b60026020526000908152604090205481565b34801561093157600080fd5b5061043660165481565b34801561094757600080fd5b5061041e61095636600461323d565b611447565b34801561096757600080fd5b50610436600f5481565b34801561097d57600080fd5b5061043661098c3660046131c2565b61147f565b34801561099d57600080fd5b5061041e6114de565b3480156109b257600080fd5b5061051f6109c1366004613196565b611552565b3480156109d257600080fd5b50610436601c5481565b3480156109e857600080fd5b5060055461051f9060ff1681565b348015610a0257600080fd5b506000546001600160a01b0316610593565b348015610a2057600080fd5b5061041e610a2f366004613019565b611661565b348015610a4057600080fd5b5061041e610a4f366004613269565b6116fa565b348015610a6057600080fd5b50610436600b5481565b348015610a7657600080fd5b50601254610593906001600160a01b031681565b348015610a9657600080fd5b5061041e610aa53660046131c2565b611738565b348015610ab657600080fd5b5061051f610ac5366004613196565b6118ee565b348015610ad657600080fd5b5061041e610ae536600461329b565b6119a5565b348015610af657600080fd5b5061051f610b05366004613196565b6119fd565b348015610b1657600080fd5b5061051f610b253660046131c2565b60216020526000908152604090205460ff1681565b348015610b4657600080fd5b50610436600c5481565b348015610b5c57600080fd5b5061041e610b6b366004613168565b611a0a565b348015610b7c57600080fd5b50610436610b8b3660046131c2565b60016020526000908152604090205481565b348015610ba957600080fd5b5061051f610bb83660046131c2565b602080526000908152604090205460ff1681565b348015610bd857600080fd5b5061041e610be73660046132c9565b611a6c565b348015610bf857600080fd5b5060075461051f90610100900460ff1681565b348015610c1757600080fd5b50610436610c2636600461329b565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610c5d57600080fd5b5061041e610c6c366004613019565b611ab4565b348015610c7d57600080fd5b5061041e610c8c3660046131c2565b611b4d565b348015610c9d57600080fd5b50610436600a5481565b348015610cb357600080fd5b50610436601a5481565b348015610cc957600080fd5b5061051f610cd83660046131c2565b60066020526000908152604090205460ff1681565b348015610cf957600080fd5b5061043660235481565b348015610d0f57600080fd5b5060075461051f9060ff1681565b6000546001600160a01b03163314610d505760405162461bcd60e51b8152600401610d47906132e7565b60405180910390fd5b6101f58210610d715760405162461bcd60e51b8152600401610d479061331c565b60005b82811015610de0578160216000868685818110610d9357610d93613361565b9050602002016020810190610da891906131c2565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610dd98161338d565b9050610d74565b50505050565b6000546001600160a01b03163314610e105760405162461bcd60e51b8152600401610d47906132e7565b6007805461ffff191692151561ff0019169290921761010091151591909102179055565b6000546001600160a01b03163314610e5e5760405162461bcd60e51b8152600401610d47906132e7565b6000818385610e6d888a6133a6565b610e7791906133a6565b610e8191906133a6565b610e8b91906133a6565b90506019610e9a6064836133be565b10610ea457600080fd5b601086905560168590556013849055600d83905560188290555b505050505050565b6000546001600160a01b03163314610ef05760405162461bcd60e51b8152600401610d47906132e7565b6103e881610f006009600a6134c4565b610f0e906305f5e1006134d3565b610f1891906134d3565b610f2291906133be565b601c5550565b6000610f35338484611c37565b5060015b92915050565b610f4b6009600a6134c4565b610f59906305f5e1006134d3565b81565b6000806000602254610f6d3061147f565b600f54925092509250909192565b6000546001600160a01b03163314610fa55760405162461bcd60e51b8152600401610d47906132e7565b60006064610fb347846134d3565b610fbd91906133be565b604051909150339082156108fc029083906000818181858888f19350505050158015610fed573d6000803e3d6000fd5b505050565b6000610fff848484611d5c565b6001600160a01b03841660009081526003602090815260408083203384529091529020548211156110835760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610d47565b6001600160a01b0384166000908152600360209081526040808320338085529252909120546110be9186916110b99086906134f2565b611c37565b5060019392505050565b600060085482111561112f5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610d47565b6000611139612283565b905061114581846133be565b9392505050565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610f359185906110b99086906133a6565b6000546001600160a01b031633146111ad5760405162461bcd60e51b8152600401610d47906132e7565b6101f582106111ce5760405162461bcd60e51b8152600401610d479061331c565b60005b82811015610de05781602060008686858181106111f0576111f0613361565b905060200201602081019061120591906131c2565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556112368161338d565b90506111d1565b601e818154811061124d57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b031633146112915760405162461bcd60e51b8152600401610d47906132e7565b6001600160a01b03811660009081526004602052604090205460ff16156112fa5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610d47565b6001600160a01b03811660009081526001602052604090205415611354576001600160a01b03811660009081526001602052604090205461133a906110c8565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600460205260408120805460ff19166001908117909155601e805491820181559091527f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e3500180546001600160a01b0319169091179055565b6000546001600160a01b031633146113e45760405162461bcd60e51b8152600401610d47906132e7565b6005805460ff1916911515919091179055565b600080600080600080601d54601c546009600a61141491906134c4565b611422906305f5e1006134d3565b60085461142d612283565b600754949b939a509198509650945060ff90911692509050565b6000546001600160a01b031633146114715760405162461bcd60e51b8152600401610d47906132e7565b602492909255602355602555565b6001600160a01b03811660009081526004602052604081205460ff16156114bc57506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610f39906110c8565b6000546001600160a01b031633146115085760405162461bcd60e51b8152600401610d47906132e7565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600080546001600160a01b0316331461157d5760405162461bcd60e51b8152600401610d47906132e7565b816000036115f0576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa1580156115c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ed9190613509565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af115801561163d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111459190613522565b6000546001600160a01b0316331461168b5760405162461bcd60e51b8152600401610d47906132e7565b60005b82811015610de05781600660008686858181106116ad576116ad613361565b90506020020160208101906116c291906131c2565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556116f38161338d565b905061168e565b6000546001600160a01b031633146117245760405162461bcd60e51b8152600401610d47906132e7565b600a93909355600991909155600b55600c55565b6000546001600160a01b031633146117625760405162461bcd60e51b8152600401610d47906132e7565b6001600160a01b03811660009081526004602052604090205460ff166117ca5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c7564656400000000006044820152606401610d47565b60005b601e548110156118ea57816001600160a01b0316601e82815481106117f4576117f4613361565b6000918252602090912001546001600160a01b0316036118d857601e805461181e906001906134f2565b8154811061182e5761182e613361565b600091825260209091200154601e80546001600160a01b03909216918390811061185a5761185a613361565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600490925220805460ff19169055601e8054806118b2576118b261353f565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b806118e28161338d565b9150506117cd565b5050565b3360009081526003602090815260408083206001600160a01b038616845290915281205482111561196f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610d47565b3360008181526003602090815260408083206001600160a01b0388168452909152902054610f35919085906110b99086906134f2565b6000546001600160a01b031633146119cf5760405162461bcd60e51b8152600401610d47906132e7565b601280546001600160a01b039384166001600160a01b03199182161790915560158054929093169116179055565b6000610f35338484611d5c565b6000546001600160a01b03163314611a345760405162461bcd60e51b8152600401610d47906132e7565b6103e881611a446009600a6134c4565b611a52906305f5e1006134d3565b611a5c91906134d3565b611a6691906133be565b601d5550565b6000546001600160a01b03163314611a965760405162461bcd60e51b8152600401610d47906132e7565b601b80549215156101000261ff001990931692909217909155602255565b6000546001600160a01b03163314611ade5760405162461bcd60e51b8152600401610d47906132e7565b60005b82811015610de05781601f6000868685818110611b0057611b00613361565b9050602002016020810190611b1591906131c2565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055611b468161338d565b9050611ae1565b6000546001600160a01b03163314611b775760405162461bcd60e51b8152600401610d47906132e7565b6001600160a01b038116611bdc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d47565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316611c995760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610d47565b6001600160a01b038216611cfa5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610d47565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000546001600160a01b03848116911614801590611d8857506000546001600160a01b03838116911614155b15611e475760075460ff16611dd65760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610d47565b600754610100900460ff168015611e1e57507f000000000000000000000000d1d4b42fdc092a03ae5ecaa05f078b2853fa825b6001600160a01b0316836001600160a01b0316145b15611e47576001600160a01b0382166000908152600660205260409020805460ff191660011790555b60055460ff168015611e615750600754610100900460ff16155b15611ebd576001600160a01b03831660009081526006602052604090205460ff1615611ebd5760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610d47565b601d5481111580611ee557506001600160a01b038316600090815260208052604090205460ff165b80611f0757506001600160a01b038216600090815260208052604090205460ff165b611f4b5760405162461bcd60e51b815260206004820152601560248201527413585e08151608131a5b5a5d08115e18d959591959605a1b6044820152606401610d47565b6001600160a01b03831660009081526021602052604090205460ff16158015611f8d57506001600160a01b03821660009081526021602052604090205460ff16155b8015611fcb57507f000000000000000000000000d1d4b42fdc092a03ae5ecaa05f078b2853fa825b6001600160a01b0316826001600160a01b031614155b1561203557601c5481611fdd8461147f565b611fe791906133a6565b11156120355760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d6974207265616368656400000000000000006044820152606401610d47565b60006120403061147f565b9050601d54811061205d576001601d5461205a91906134f2565b90505b602254811080159081906120745750601b5460ff16155b80156120b257507f000000000000000000000000d1d4b42fdc092a03ae5ecaa05f078b2853fa825b6001600160a01b0316856001600160a01b031614155b80156120c55750601b54610100900460ff165b156120d85760225491506120d8826122a6565b601b5460ff1615801561211d57507f000000000000000000000000d1d4b42fdc092a03ae5ecaa05f078b2853fa825b6001600160a01b0316856001600160a01b031614155b80156121305750601b54610100900460ff165b1561216f57600954601554600b5461215292916001600160a01b031690612335565b600a54601254600c5461216f92916001600160a01b031690612335565b50506001600160a01b0383166000908152601f602052604090205460019060ff16806121b357506001600160a01b0383166000908152601f602052604090205460ff165b156121c3575060006121c3612374565b60008060008060008060008060006121dc8b8d8f6123b4565b9850985098509850985098509850985098506121fc8d8d8d8c8a8d6125ce565b8660085461220a91906134f2565b600855600f5461221b9083906133a6565b600f55896122305761222b612754565b612274565b6012546122479086906001600160a01b031661277d565b612251843061277d565b6015546122689084906001600160a01b031661277d565b6122748161dead61277d565b50505050505050505050505050565b6000806000612290612866565b909250905061229f81836133be565b9250505090565b601b805460ff1916600117905560006122c06002836133be565b9050476122cc82612a49565b60006122d882476134f2565b90506122e48382612c01565b60408051858152602081018590529081018290527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15050601b805460ff191690555050565b8260000361234257505050565b601d5483111561235257601d5492505b61235b8261147f565b61236582856133a6565b11610fed57610fed8284612d07565b601054601155601654601755601354601455600d54600e556018546019556123b2600080808080601094909455601692909255601355600d55601855565b565b60008060008060008060008060008060255490507f000000000000000000000000d1d4b42fdc092a03ae5ecaa05f078b2853fa825b6001600160a01b03168c6001600160a01b03160361240a5750602354612448565b7f000000000000000000000000d1d4b42fdc092a03ae5ecaa05f078b2853fa825b6001600160a01b03168b6001600160a01b03160361244857506024545b601a546124569060646134d3565b816010548f61246591906134d3565b61246f91906134d3565b61247991906133be565b9550601a54606461248a91906134d3565b816016548f61249991906134d3565b6124a391906134d3565b6124ad91906133be565b9450601a5460646124be91906134d3565b816013548f6124cd91906134d3565b6124d791906134d3565b6124e191906133be565b9350601a5460646124f291906134d3565b81600d548f61250191906134d3565b61250b91906134d3565b61251591906133be565b9250601a54606461252691906134d3565b816018548f61253591906134d3565b61253f91906134d3565b61254991906133be565b9150818385612558888a6133a6565b61256291906133a6565b61256c91906133a6565b61257691906133a6565b612580908e6134f2565b965061258a612283565b61259490846134d3565b975061259e612283565b6125a8908e6134d3565b99506125b2612283565b6125bc90886134d3565b98505093979b92969a50939750939750565b6001600160a01b0386166000908152600160205260409020546125f29084906134f2565b6001600160a01b03871660009081526001602090815260408083209390935560049052205460ff161561265d576001600160a01b0386166000908152600260205260409020546126439085906134f2565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526004602052604090205460ff16156126bc576001600160a01b0385166000908152600260205260409020546126a29083906133a6565b6001600160a01b0386166000908152600260205260409020555b6001600160a01b0385166000908152600160205260409020546126e09082906133a6565b6001600160a01b0386166000908152600160205260409020558115610ebe57846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161274491815260200190565b60405180910390a3505050505050565b6123b2601154601754601454600e54601954601094909455601692909255601355600d55601855565b6000612787612283565b61279190846134d3565b6001600160a01b0383166000908152600160205260409020549091506127b89082906133a6565b6001600160a01b03831660009081526001602090815260408083209390935560049052205460ff1615612823576001600160a01b0382166000908152600260205260409020546128099084906133a6565b6001600160a01b0383166000908152600260205260409020555b8215610fed576040518381526001600160a01b0383169033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001611d4f565b60085460009081908161287b6009600a6134c4565b612889906305f5e1006134d3565b905060005b601e548110156129ea578260016000601e84815481106128b0576128b0613361565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061291b57508160026000601e84815481106128f4576128f4613361565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156129485760085461292f6009600a6134c4565b61293d906305f5e1006134d3565b945094505050509091565b60016000601e838154811061295f5761295f613361565b60009182526020808320909101546001600160a01b0316835282019290925260400190205461298e90846134f2565b925060026000601e83815481106129a7576129a7613361565b60009182526020808320909101546001600160a01b031683528201929092526040019020546129d690836134f2565b9150806129e28161338d565b91505061288e565b506129f76009600a6134c4565b612a05906305f5e1006134d3565b600854612a1291906133be565b821015612a4057600854612a286009600a6134c4565b612a36906305f5e1006134d3565b9350935050509091565b90939092509050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612a7e57612a7e613361565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612afc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b209190613555565b81600181518110612b3357612b33613361565b60200260200101906001600160a01b031690816001600160a01b031681525050612b7e307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611c37565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790612bd39085906000908690309042906004016135b6565b600060405180830381600087803b158015612bed57600080fd5b505af1158015610ebe573d6000803e3d6000fd5b612c2c307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611c37565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d719823085600080612c736000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612cdb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d0091906135f2565b5050505050565b601b805460ff191660011790556000612d1e612283565b612d2890836134d3565b6001600160a01b038416600090815260016020526040902054909150612d4f9082906134f2565b6001600160a01b03841660009081526001602090815260408083209390935560049052205460ff1615612dba576001600160a01b038316600090815260026020526040902054612da09083906134f2565b6001600160a01b0384166000908152600260205260409020555b30600090815260016020526040902054612dd59082906133a6565b30600081815260016020526040908190209290925590516001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612e269086815260200190565b60405180910390a3612e388284612e47565b5050601b805460ff1916905550565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612e7c57612e7c613361565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612efa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f1e9190613555565b81600181518110612f3157612f31613361565b60200260200101906001600160a01b031690816001600160a01b031681525050612f7c307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d85611c37565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790612fd19086906000908690889042906004016135b6565b600060405180830381600087803b158015612feb57600080fd5b505af1158015612fff573d6000803e3d6000fd5b50505050505050565b801515811461301657600080fd5b50565b60008060006040848603121561302e57600080fd5b833567ffffffffffffffff8082111561304657600080fd5b818601915086601f83011261305a57600080fd5b81358181111561306957600080fd5b8760208260051b850101111561307e57600080fd5b6020928301955093505084013561309481613008565b809150509250925092565b600080604083850312156130b257600080fd5b82356130bd81613008565b915060208301356130cd81613008565b809150509250929050565b600080600080600060a086880312156130f057600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600060208083528351808285015260005b8181101561314057858101830151858201604001528201613124565b81811115613152576000604083870101525b50601f01601f1916929092016040019392505050565b60006020828403121561317a57600080fd5b5035919050565b6001600160a01b038116811461301657600080fd5b600080604083850312156131a957600080fd5b82356131b481613181565b946020939093013593505050565b6000602082840312156131d457600080fd5b813561114581613181565b6000806000606084860312156131f457600080fd5b83356131ff81613181565b9250602084013561320f81613181565b929592945050506040919091013590565b60006020828403121561323257600080fd5b813561114581613008565b60008060006060848603121561325257600080fd5b505081359360208301359350604090920135919050565b6000806000806080858703121561327f57600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156132ae57600080fd5b82356132b981613181565b915060208301356130cd81613181565b600080604083850312156132dc57600080fd5b82356131b481613008565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f474153204572726f723a206d6178206c696d6974206973203530302061646472604082015264657373657360d81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161339f5761339f613377565b5060010190565b600082198211156133b9576133b9613377565b500190565b6000826133db57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b8085111561341b57816000190482111561340157613401613377565b8085161561340e57918102915b93841c93908002906133e5565b509250929050565b60008261343257506001610f39565b8161343f57506000610f39565b8160018114613455576002811461345f5761347b565b6001915050610f39565b60ff84111561347057613470613377565b50506001821b610f39565b5060208310610133831016604e8410600b841016171561349e575081810a610f39565b6134a883836133e0565b80600019048211156134bc576134bc613377565b029392505050565b600061114560ff841683613423565b60008160001904831182151516156134ed576134ed613377565b500290565b60008282101561350457613504613377565b500390565b60006020828403121561351b57600080fd5b5051919050565b60006020828403121561353457600080fd5b815161114581613008565b634e487b7160e01b600052603160045260246000fd5b60006020828403121561356757600080fd5b815161114581613181565b600081518084526020808501945080840160005b838110156135ab5781516001600160a01b031687529582019590820190600101613586565b509495945050505050565b85815284602082015260a0604082015260006135d560a0830186613572565b6001600160a01b0394909416606083015250608001529392505050565b60008060006060848603121561360757600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220f6ccb4d95bde39c9ff4a8afa8390f33bd516d77935cba11cd8e004974d47cd7264736f6c634300080f0033

Deployed Bytecode Sourcemap

5996:19338:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14958:286;;;;;;;;;;-1:-1:-1;14958:286:0;;;;;:::i;:::-;;:::i;:::-;;7561:30;;;;;;;;;;;;;;;;;;;1038:25:1;;;1026:2;1011:18;7561:30:0;;;;;;;;13584:115;;;;;;;;;;-1:-1:-1;13584:115:0;;;;;:::i;:::-;;:::i;8254:58::-;;;;;;;;;;;;;;;;19850:361;;;;;;;;;;-1:-1:-1;19850:361:0;;;;;:::i;:::-;;:::i;6699:39::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6699:39:0;;;;;;;;;;;;:::i;13863:158::-;;;;;;;;;;-1:-1:-1;13863:158:0;;;;;:::i;:::-;;:::i;10351:146::-;;;;;;;;;;-1:-1:-1;10351:146:0;;;;;:::i;:::-;;:::i;:::-;;;3322:14:1;;3315:22;3297:41;;3285:2;3270:18;10351:146:0;3157:187:1;6269:44:0;;;;;;;;;;-1:-1:-1;6269:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7770:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3791:32:1;;;3773:51;;3761:2;3746:18;7770:51:0;3601:229:1;6562:62:0;;;;;;;;;;;;;:::i;11692:230::-;;;;;;;;;;;;;:::i;:::-;;;;4037:25:1;;;4093:2;4078:18;;4071:34;;;;4121:18;;;4114:34;4025:2;4010:18;11692:230:0;3835:319:1;15252:200:0;;;;;;;;;;-1:-1:-1;15252:200:0;;;;;:::i;:::-;;:::i;7991:49::-;;;;;;;;;;;;;;;;7177:33;;;;;;;;;;;;;;;;10502:346;;;;;;;;;;-1:-1:-1;10502:346:0;;;;;:::i;:::-;;:::i;7415:38::-;;;;;;;;;;-1:-1:-1;7415:38:0;;;;-1:-1:-1;;;;;7415:38:0;;;7321:32;;;;;;;;;;;;;;;;12624:238;;;;;;;;;;-1:-1:-1;12624:238:0;;;;;:::i;:::-;;:::i;8358:34::-;;;;;;;;;;;;;;;;6524;;;;;;;;;;;;6557:1;6524:34;;;;;5016:4:1;5004:17;;;4986:36;;4974:2;4959:18;6524:34:0;4844:184:1;7024:35:0;;;;;;;;;;;;;;;;10853:202;;;;;;;;;;-1:-1:-1;10853:202:0;;;;;:::i;:::-;;:::i;7825:38::-;;;;;;;;;;;;;;;7892:40;;;;;;;;;;-1:-1:-1;7892:40:0;;;;;;;;;;;14674:279;;;;;;;;;;-1:-1:-1;14674:279:0;;;;;:::i;:::-;;:::i;8046:26::-;;;;;;;;;;-1:-1:-1;8046:26:0;;;;;:::i;:::-;;:::i;12867:315::-;;;;;;;;;;-1:-1:-1;12867:315:0;;;;;:::i;:::-;;:::i;8076:50::-;;;;;;;;;;-1:-1:-1;8076:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6790:64;;;;;;;;;;;;;;;;8396:39;;;;;;;;;;;;;;;;14182:92;;;;;;;;;;-1:-1:-1;14182:92:0;;;;;:::i;:::-;;:::i;11385:302::-;;;;;;;;;;;;;:::i;:::-;;;;5768:25:1;;;5824:2;5809:18;;5802:34;;;;5852:18;;;5845:34;;;;5910:2;5895:18;;5888:34;5953:3;5938:19;;5931:35;6010:14;6003:22;5997:3;5982:19;;5975:51;5755:3;5740:19;11385:302:0;5487:545:1;11927:505:0;;;;;;;;;;-1:-1:-1;12255:14:0;;12271:13;;12290:12;;12303:28;;12332:21;;12359:13;;12373:29;;12404:22;;11927:505;;;6380:25:1;;;6436:2;6421:18;;6414:34;;;;6464:18;;;6457:34;;;;6522:2;6507:18;;6500:34;;;;6565:3;6550:19;;6543:35;6609:3;6594:19;;6587:35;6653:3;6638:19;;6631:35;6697:3;6682:19;;6675:35;6367:3;6352:19;11927:505:0;6037:679:1;6140:49:0;;;;;;;;;;-1:-1:-1;6140:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;7461:34;;;;;;;;;;;;;;;;19248:177;;;;;;;;;;-1:-1:-1;19248:177:0;;;;;:::i;:::-;;:::i;7125:44::-;;;;;;;;;;;;;;;;9852:198;;;;;;;;;;-1:-1:-1;9852:198:0;;;;;:::i;:::-;;:::i;5103:148::-;;;;;;;;;;;;;:::i;15457:258::-;;;;;;;;;;-1:-1:-1;15457:258:0;;;;;:::i;:::-;;:::i;7943:44::-;;;;;;;;;;;;;;;;6320:32;;;;;;;;;;-1:-1:-1;6320:32:0;;;;;;;;4678:78;;;;;;;;;;-1:-1:-1;4724:7:0;4745:6;-1:-1:-1;;;;;4745:6:0;4678:78;;14279:188;;;;;;;;;;-1:-1:-1;14279:188:0;;;;;:::i;:::-;;:::i;19430:413::-;;;;;;;;;;-1:-1:-1;19430:413:0;;;;;:::i;:::-;;:::i;6931:40::-;;;;;;;;;;;;;;;;7274:39;;;;;;;;;;-1:-1:-1;7274:39:0;;;;-1:-1:-1;;;;;7274:39:0;;;13187:392;;;;;;;;;;-1:-1:-1;13187:392:0;;;;;:::i;:::-;;:::i;11060:320::-;;;;;;;;;;-1:-1:-1;11060:320:0;;;;;:::i;:::-;;:::i;12437:182::-;;;;;;;;;;-1:-1:-1;12437:182:0;;;;;:::i;:::-;;:::i;10055:152::-;;;;;;;;;;-1:-1:-1;10055:152:0;;;;;:::i;:::-;;:::i;8189:58::-;;;;;;;;;;-1:-1:-1;8189:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6975:41;;;;;;;;;;;;;;;;13704:153;;;;;;;;;;-1:-1:-1;13704:153:0;;;;;:::i;:::-;;:::i;6084:52::-;;;;;;;;;;-1:-1:-1;6084:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;8130:55;;;;;;;;;;-1:-1:-1;8130:55:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;14027:150;;;;;;;;;;-1:-1:-1;14027:150:0;;;;;:::i;:::-;;:::i;6443:26::-;;;;;;;;;;-1:-1:-1;6443:26:0;;;;;;;;;;;10212:134;;;;;;;;;;-1:-1:-1;10212:134:0;;;;;:::i;:::-;-1:-1:-1;;;;;10314:18:0;;;10293:7;10314:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10212:134;14472:197;;;;;;;;;;-1:-1:-1;14472:197:0;;;;;:::i;:::-;;:::i;4872:223::-;;;;;;;;;;-1:-1:-1;4872:223:0;;;;;:::i;:::-;;:::i;6858:65::-;;;;;;;;;;;;;;;;7725:39;;;;;;;;;;;;;;;;6356:46;;;;;;;;;;-1:-1:-1;6356:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8319:35;;;;;;;;;;;;;;;;6408:31;;;;;;;;;;-1:-1:-1;6408:31:0;;;;;;;;14958:286;4724:7;4745:6;-1:-1:-1;;;;;4745:6:0;1237:10;4796:23;4788:68;;;;-1:-1:-1;;;4788:68:0;;;;;;;:::i;:::-;;;;;;;;;15086:3:::1;15067:22:::0;::::1;15059:71;;;;-1:-1:-1::0;;;15059:71:0::1;;;;;;;:::i;:::-;15140:9;15135:105;15153:20:::0;;::::1;15135:105;;;15228:6;15186:25;:39;15212:9;;15222:1;15212:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15186:39:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;15186:39:0;:48;;-1:-1:-1;;15186:48:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15175:3:::1;::::0;::::1;:::i;:::-;;;15135:105;;;;14958:286:::0;;;:::o;13584:115::-;4724:7;4745:6;-1:-1:-1;;;;;4745:6:0;1237:10;4796:23;4788:68;;;;-1:-1:-1;;;4788:68:0;;;;;;;:::i;:::-;13655:11:::1;:21:::0;;-1:-1:-1;;13681:13:0;13655:21;::::1;;-1:-1:-1::0;;13681:13:0;;;;;13655:21:::1;13681:13:::0;::::1;;::::0;;;::::1;;::::0;;13584:115::o;19850:361::-;4724:7;4745:6;-1:-1:-1;;;;;4745:6:0;1237:10;4796:23;4788:68;;;;-1:-1:-1;;;4788:68:0;;;;;;;:::i;:::-;19997:17:::1;20079:8:::0;20063:13;20049:11;20018:27:::1;20033:12:::0;20018;:27:::1;:::i;:::-;:42;;;;:::i;:::-;:58;;;;:::i;:::-;:69;;;;:::i;:::-;19997:90:::0;-1:-1:-1;20120:2:0::1;20104:13;20114:3;19997:90:::0;20104:13:::1;:::i;:::-;:18;20096:27;;;::::0;::::1;;19086:13:::0;:28;;;19119:13;:28;;;19152:12;:26;;;19183:14;:30;;;19218:9;:20;;;20128:78:::1;19992:219;19850:361:::0;;;;;:::o;13863:158::-;4724:7;4745:6;-1:-1:-1;;;;;4745:6:0;1237:10;4796:23;4788:68;;;;-1:-1:-1;;;4788:68:0;;;;;;;:::i;:::-;14012:4:::1;13985:22:::0;6612:12:::1;6557:1;6612:2;:12;:::i;:::-;6600:24;::::0;:9:::1;:24;:::i;:::-;13971:36;;;;:::i;:::-;13970:46;;;;:::i;:::-;13957:10;:59:::0;-1:-1:-1;13863:158:0:o;10351:146::-;10426:4;10437:39;1237:10;10460:7;10469:6;10437:8;:39::i;:::-;-1:-1:-1;10488:4:0;10351:146;;;;;:::o;6562:62::-;6612:12;6557:1;6612:2;:12;:::i;:::-;6600:24;;:9;:24;:::i;:::-;6562:62;:::o;11692:230::-;11740:21;11766:28;11799:32;11850:13;;11865:24;11883:4;11865:9;:24::i;:::-;11891:25;;11842:75;;;;;;11692:230;;;:::o;15252:200::-;4724:7;4745:6;-1:-1:-1;;;;;4745:6:0;1237:10;4796:23;4788:68;;;;-1:-1:-1;;;4788:68:0;;;;;;;:::i;:::-;15329:21:::1;15396:3;15353:40;15372:21;15353:16:::0;:40:::1;:::i;:::-;:46;;;;:::i;:::-;15404:43;::::0;15329:70;;-1:-1:-1;15412:10:0::1;::::0;15404:43;::::1;;;::::0;15329:70;;15404:43:::1;::::0;;;15329:70;15412:10;15404:43;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;15324:128;15252:200:::0;:::o;10502:346::-;10600:4;10611:36;10621:6;10629:9;10640:6;10611:9;:36::i;:::-;-1:-1:-1;;;;;10661:19:0;;;;;;:11;:19;;;;;;;;1237:10;10661:33;;;;;;;;:43;-1:-1:-1;10661:43:0;10652:96;;;;-1:-1:-1;;;10652:96:0;;11423:2:1;10652:96:0;;;11405:21:1;11462:2;11442:18;;;11435:30;11501:34;11481:18;;;11474:62;-1:-1:-1;;;11552:18:1;;;11545:38;11600:19;;10652:96:0;11221:404:1;10652:96:0;-1:-1:-1;;;;;10785:19:0;;;;;;:11;:19;;;;;;;;1237:10;10785:33;;;;;;;;;10753:74;;10762:6;;10785:40;;10819:6;;10785:40;:::i;:::-;10753:8;:74::i;:::-;-1:-1:-1;10839:4:0;10502:346;;;;;:::o;12624:238::-;12690:7;12723:14;;12712:7;:25;;12704:80;;;;-1:-1:-1;;;12704:80:0;;11962:2:1;12704:80:0;;;11944:21:1;12001:2;11981:18;;;11974:30;12040:34;12020:18;;;12013:62;-1:-1:-1;;;12091:18:1;;;12084:40;12141:19;;12704:80:0;11760:406:1;12704:80:0;12789:19;12812:10;:8;:10::i;:::-;12789:33;-1:-1:-1;12835:21:0;12789:33;12835:7;:21;:::i;:::-;12827:30;12624:238;-1:-1:-1;;;12624:238:0:o;10853:202::-;1237:10;10941:4;10985:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;10985:34:0;;;;;;;;;;10941:4;;10952:82;;10975:7;;10985:47;;11022:10;;10985:47;:::i;14674:279::-;4724:7;4745:6;-1:-1:-1;;;;;4745:6:0;1237:10;4796:23;4788:68;;;;-1:-1:-1;;;4788:68:0;;;;;;;:::i;:::-;14798:3:::1;14779:22:::0;::::1;14771:71;;;;-1:-1:-1::0;;;14771:71:0::1;;;;;;;:::i;:::-;14852:9;14847:102;14865:20:::0;;::::1;14847:102;;;14937:6;14898:22;:36;14921:9;;14931:1;14921:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14898:36:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;14898:36:0;:45;;-1:-1:-1;;14898:45:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14887:3:::1;::::0;::::1;:::i;:::-;;;14847:102;;8046:26:::0;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8046:26:0;;-1:-1:-1;8046:26:0;:::o;12867:315::-;4724:7;4745:6;-1:-1:-1;;;;;4745:6:0;1237:10;4796:23;4788:68;;;;-1:-1:-1;;;4788:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12944:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;12943:21;12935:61;;;::::0;-1:-1:-1;;;12935:61:0;;12373:2:1;12935:61:0::1;::::0;::::1;12355:21:1::0;12412:2;12392:18;;;12385:30;12451:29;12431:18;;;12424:57;12498:18;;12935:61:0::1;12171:351:1::0;12935:61:0::1;-1:-1:-1::0;;;;;13004:25:0;::::1;13032:1;13004:25:::0;;;:16:::1;:25;::::0;;;;;:29;13001:117:::1;;-1:-1:-1::0;;;;;13086:25:0;::::1;;::::0;;;:16:::1;:25;::::0;;;;;13066:46:::1;::::0;:19:::1;:46::i;:::-;-1:-1:-1::0;;;;;13041:22:0;::::1;;::::0;;;:13:::1;:22;::::0;;;;:71;13001:117:::1;-1:-1:-1::0;;;;;13122:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;13122:27:0::1;13145:4;13122:27:::0;;::::1;::::0;;;13154:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;13154:23:0::1;::::0;;::::1;::::0;;12867:315::o;14182:92::-;4724:7;4745:6;-1:-1:-1;;;;;4745:6:0;1237:10;4796:23;4788:68;;;;-1:-1:-1;;;4788:68:0;;;;;;;:::i;:::-;14246:13:::1;:23:::0;;-1:-1:-1;;14246:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14182:92::o;11385:302::-;11434:19;11458:22;11485:19;11509:24;11538:23;11566:16;11601:13;;11616:10;;6557:1;6612:2;:12;;;;:::i;:::-;6600:24;;:9;:24;:::i;:::-;11641:14;;11657:10;:8;:10::i;:::-;11669:11;;11593:89;;;;-1:-1:-1;11593:89:0;;-1:-1:-1;11593:89:0;-1:-1:-1;11593:89:0;-1:-1:-1;11669:11:0;;;;;-1:-1:-1;11385:302:0;-1:-1:-1;11385:302:0:o;19248:177::-;4724:7;4745:6;-1:-1:-1;;;;;4745:6:0;1237:10;4796:23;4788:68;;;;-1:-1:-1;;;4788:68:0;;;;;;;:::i;:::-;19341:13:::1;:20:::0;;;;19366:14:::1;:22:::0;19393:18:::1;:27:::0;19248:177::o;9852:198::-;-1:-1:-1;;;;;9936:20:0;;9918:7;9936:20;;;:11;:20;;;;;;;;9932:55;;;-1:-1:-1;;;;;;9965:22:0;;;;;:13;:22;;;;;;;9852:198::o;9932:55::-;-1:-1:-1;;;;;10019:25:0;;;;;;:16;:25;;;;;;9999:46;;:19;:46::i;5103:148::-;4724:7;4745:6;-1:-1:-1;;;;;4745:6:0;1237:10;4796:23;4788:68;;;;-1:-1:-1;;;4788:68:0;;;;;;;:::i;:::-;5210:1:::1;5194:6:::0;;5173:40:::1;::::0;-1:-1:-1;;;;;5194:6:0;;::::1;::::0;5173:40:::1;::::0;5210:1;;5173:40:::1;5241:1;5224:19:::0;;-1:-1:-1;;;;;;5224:19:0::1;::::0;;5103:148::o;15457:258::-;15548:12;4745:6;;-1:-1:-1;;;;;4745:6:0;1237:10;4796:23;4788:68;;;;-1:-1:-1;;;4788:68:0;;;;;;;:::i;:::-;15572:6:::1;15582:1;15572:11:::0;15569:81:::1;;15599:45;::::0;-1:-1:-1;;;15599:45:0;;15638:4:::1;15599:45;::::0;::::1;3773:51:1::0;-1:-1:-1;;;;;15599:30:0;::::1;::::0;::::1;::::0;3746:18:1;;15599:45:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15590:54;;15569:81;15661:49;::::0;-1:-1:-1;;;15661:49:0;;15691:10:::1;15661:49;::::0;::::1;12890:51:1::0;12957:18;;;12950:34;;;-1:-1:-1;;;;;15661:29:0;::::1;::::0;::::1;::::0;12863:18:1;;15661:49:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14279:188::-:0;4724:7;4745:6;-1:-1:-1;;;;;4745:6:0;1237:10;4796:23;4788:68;;;;-1:-1:-1;;;4788:68:0;;;;;;;:::i;:::-;14377:9:::1;14372:91;14388:20:::0;;::::1;14372:91;;;14451:6;14421:13;:27;14435:9;;14445:1;14435:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14421:27:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;14421:27:0;:36;;-1:-1:-1;;14421:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14410:3:::1;::::0;::::1;:::i;:::-;;;14372:91;;19430:413:::0;4724:7;4745:6;-1:-1:-1;;;;;4745:6:0;1237:10;4796:23;4788:68;;;;-1:-1:-1;;;4788:68:0;;;;;;;:::i;:::-;19615:29:::1;:60:::0;;;;19680:28:::1;:58:::0;;;;19743:21:::1;:44:::0;19792:22:::1;:46:::0;19430:413::o;13187:392::-;4724:7;4745:6;-1:-1:-1;;;;;4745:6:0;1237:10;4796:23;4788:68;;;;-1:-1:-1;;;4788:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13269:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;13261:60;;;::::0;-1:-1:-1;;;13261:60:0;;13447:2:1;13261:60:0::1;::::0;::::1;13429:21:1::0;13486:2;13466:18;;;13459:30;13525:29;13505:18;;;13498:57;13572:18;;13261:60:0::1;13245:351:1::0;13261:60:0::1;13331:9;13326:249;13350:9;:16:::0;13346:20;::::1;13326:249;;;13399:7;-1:-1:-1::0;;;;;13383:23:0::1;:9;13393:1;13383:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;13383:12:0::1;:23:::0;13379:191:::1;;13430:9;13440:16:::0;;:20:::1;::::0;13459:1:::1;::::0;13440:20:::1;:::i;:::-;13430:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;13415:9:::1;:12:::0;;-1:-1:-1;;;;;13430:31:0;;::::1;::::0;13425:1;;13415:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;13415:46:0::1;-1:-1:-1::0;;;;;13415:46:0;;::::1;;::::0;;13468:22;;::::1;::::0;;:13:::1;:22:::0;;;;;;:26;;;13501:11:::1;:20:::0;;;;:28;;-1:-1:-1;;13501:28:0::1;::::0;;13536:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;13536:15:0;;;;;-1:-1:-1;;;;;;13536:15:0::1;::::0;;;;;13326:249:::1;13187:392:::0;:::o;13379:191::-:1;13368:3:::0;::::1;::::0;::::1;:::i;:::-;;;;13326:249;;;;13187:392:::0;:::o;11060:320::-;1237:10;11153:4;11173:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11173:34:0;;;;;;;;;;:53;-1:-1:-1;11173:53:0;11164:103;;;;-1:-1:-1;;;11164:103:0;;13935:2:1;11164:103:0;;;13917:21:1;13974:2;13954:18;;;13947:30;14013:34;13993:18;;;13986:62;-1:-1:-1;;;14064:18:1;;;14057:35;14109:19;;11164:103:0;13733:401:1;11164:103:0;1237:10;11305:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11305:34:0;;;;;;;;;;11272:87;;1237:10;11295:7;;11305:52;;11342:15;;11305:52;:::i;12437:182::-;4724:7;4745:6;-1:-1:-1;;;;;4745:6:0;1237:10;4796:23;4788:68;;;;-1:-1:-1;;;4788:68:0;;;;;;;:::i;:::-;12529:16:::1;:41:::0;;-1:-1:-1;;;;;12529:41:0;;::::1;-1:-1:-1::0;;;;;;12529:41:0;;::::1;;::::0;;;12575:15:::1;:39:::0;;;;;::::1;::::0;::::1;;::::0;;12437:182::o;10055:152::-;10133:4;10144:42;1237:10;10168:9;10179:6;10144:9;:42::i;13704:153::-;4724:7;4745:6;-1:-1:-1;;;;;4745:6:0;1237:10;4796:23;4788:68;;;;-1:-1:-1;;;4788:68:0;;;;;;;:::i;:::-;13848:4:::1;13823:20:::0;6612:12:::1;6557:1;6612:2;:12;:::i;:::-;6600:24;::::0;:9:::1;:24;:::i;:::-;13809:34;;;;:::i;:::-;13808:44;;;;:::i;:::-;13792:13;:60:::0;-1:-1:-1;13704:153:0:o;14027:150::-;4724:7;4745:6;-1:-1:-1;;;;;4745:6:0;1237:10;4796:23;4788:68;;;;-1:-1:-1;;;4788:68:0;;;;;;;:::i;:::-;14110:21:::1;:31:::0;;;::::1;;;;-1:-1:-1::0;;14110:31:0;;::::1;::::0;;;::::1;::::0;;;14146:13:::1;:26:::0;14027:150::o;14472:197::-;4724:7;4745:6;-1:-1:-1;;;;;4745:6:0;1237:10;4796:23;4788:68;;;;-1:-1:-1;;;4788:68:0;;;;;;;:::i;:::-;14575:9:::1;14570:95;14586:20:::0;;::::1;14570:95;;;14653:6;14619:17;:31;14637:9;;14647:1;14637:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14619:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;14619:31:0;:40;;-1:-1:-1;;14619:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14608:3:::1;::::0;::::1;:::i;:::-;;;14570:95;;4872:223:::0;4724:7;4745:6;-1:-1:-1;;;;;4745:6:0;1237:10;4796:23;4788:68;;;;-1:-1:-1;;;4788:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4955:22:0;::::1;4947:73;;;::::0;-1:-1:-1;;;4947:73:0;;14341:2:1;4947:73:0::1;::::0;::::1;14323:21:1::0;14380:2;14360:18;;;14353:30;14419:34;14399:18;;;14392:62;-1:-1:-1;;;14470:18:1;;;14463:36;14516:19;;4947:73:0::1;14139:402:1::0;4947:73:0::1;5051:6;::::0;;5030:38:::1;::::0;-1:-1:-1;;;;;5030:38:0;;::::1;::::0;5051:6;::::1;::::0;5030:38:::1;::::0;::::1;5073:6;:17:::0;;-1:-1:-1;;;;;;5073:17:0::1;-1:-1:-1::0;;;;;5073:17:0;;;::::1;::::0;;;::::1;::::0;;4872:223::o;22122:310::-;-1:-1:-1;;;;;22209:19:0;;22201:68;;;;-1:-1:-1;;;22201:68:0;;14748:2:1;22201:68:0;;;14730:21:1;14787:2;14767:18;;;14760:30;14826:34;14806:18;;;14799:62;-1:-1:-1;;;14877:18:1;;;14870:34;14921:19;;22201:68:0;14546:400:1;22201:68:0;-1:-1:-1;;;;;22282:21:0;;22274:68;;;;-1:-1:-1;;;22274:68:0;;15153:2:1;22274:68:0;;;15135:21:1;15192:2;15172:18;;;15165:30;15231:34;15211:18;;;15204:62;-1:-1:-1;;;15282:18:1;;;15275:32;15324:19;;22274:68:0;14951:398:1;22274:68:0;-1:-1:-1;;;;;22349:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;22395:32;;1038:25:1;;;22395:32:0;;1011:18:1;22395:32:0;;;;;;;;22122:310;;;:::o;22437:2273::-;4724:7;4745:6;-1:-1:-1;;;;;22516:15:0;;;4745:6;;22516:15;;;;:32;;-1:-1:-1;4724:7:0;4745:6;-1:-1:-1;;;;;22535:13:0;;;4745:6;;22535:13;;22516:32;22513:172;;;22563:11;;;;22555:43;;;;-1:-1:-1;;;22555:43:0;;15556:2:1;22555:43:0;;;15538:21:1;15595:2;15575:18;;;15568:30;-1:-1:-1;;;15614:18:1;;;15607:50;15674:18;;22555:43:0;15354:344:1;22555:43:0;22609:7;;;;;;;:32;;;;;22628:13;-1:-1:-1;;;;;22620:21:0;:4;-1:-1:-1;;;;;22620:21:0;;22609:32;22606:74;;;-1:-1:-1;;;;;22649:17:0;;;;;;:13;:17;;;;;:24;;-1:-1:-1;;22649:24:0;22669:4;22649:24;;;22606:74;22694:13;;;;:25;;;;-1:-1:-1;22712:7:0;;;;;;;22711:8;22694:25;22691:84;;;-1:-1:-1;;;;;22735:19:0;;;;;;:13;:19;;;;;;;;22734:20;22726:43;;;;-1:-1:-1;;;22726:43:0;;15905:2:1;22726:43:0;;;15887:21:1;15944:2;15924:18;;;15917:30;-1:-1:-1;;;15963:18:1;;;15956:41;16014:18;;22726:43:0;15703:335:1;22726:43:0;22802:13;;22792:6;:23;;22791:57;;;-1:-1:-1;;;;;;22820:28:0;;;;;;:22;:28;;;;;;;;22791:57;:87;;;-1:-1:-1;;;;;;22852:26:0;;;;;;:22;:26;;;;;;;;22791:87;22783:121;;;;-1:-1:-1;;;22783:121:0;;16245:2:1;22783:121:0;;;16227:21:1;16284:2;16264:18;;;16257:30;-1:-1:-1;;;16303:18:1;;;16296:51;16364:18;;22783:121:0;16043:345:1;22783:121:0;-1:-1:-1;;;;;22916:31:0;;;;;;:25;:31;;;;;;;;22915:32;:66;;;;-1:-1:-1;;;;;;22952:29:0;;;;;;:25;:29;;;;;;;;22951:30;22915:66;:89;;;;;22991:13;-1:-1:-1;;;;;22985:19:0;:2;-1:-1:-1;;;;;22985:19:0;;;22915:89;22911:184;;;23051:10;;23040:6;23024:13;23034:2;23024:9;:13::i;:::-;:22;;;;:::i;:::-;23023:38;;23015:74;;;;-1:-1:-1;;;23015:74:0;;16595:2:1;23015:74:0;;;16577:21:1;16634:2;16614:18;;;16607:30;16673:26;16653:18;;;16646:54;16717:18;;23015:74:0;16393:348:1;23015:74:0;23112:28;23143:24;23161:4;23143:9;:24::i;:::-;23112:55;;23207:13;;23183:20;:37;23180:105;;23274:1;23258:13;;:17;;;;:::i;:::-;23235:40;;23180:105;23348:13;;23324:37;;;;;;;23374:51;;-1:-1:-1;23409:16:0;;;;23408:17;23374:51;:87;;;;;23448:13;-1:-1:-1;;;;;23440:21:0;:4;-1:-1:-1;;;;;23440:21:0;;;23374:87;:123;;;;-1:-1:-1;23476:21:0;;;;;;;23374:123;23370:245;;;23543:13;;23520:36;;23569;23584:20;23569:14;:36::i;:::-;23629:16;;;;23628:17;:42;;;;;23657:13;-1:-1:-1;;;;;23649:21:0;:4;-1:-1:-1;;;;;23649:21:0;;;23628:42;:67;;;;-1:-1:-1;23674:21:0;;;;;;;23628:67;23625:272;;;23722:28;;23751:15;;23768:21;;23709:81;;23722:28;-1:-1:-1;;;;;23751:15:0;;23709:12;:81::i;:::-;23816:29;;23846:16;;23864:22;;23803:84;;23816:29;-1:-1:-1;;;;;23846:16:0;;23803:12;:84::i;:::-;-1:-1:-1;;;;;;;23941:23:0;;23914:12;23941:23;;;:17;:23;;;;;;23929:4;;23941:23;;;:48;;-1:-1:-1;;;;;;23968:21:0;;;;;;:17;:21;;;;;;;;23941:48;23938:105;;;-1:-1:-1;24009:5:0;24023:14;:12;:14::i;:::-;24052:15;24069:23;24094:19;24115:23;24140:18;24160;24180:17;24200:19;24221:14;24239:28;24250:6;24258:2;24262:4;24239:10;:28::i;:::-;24051:216;;;;;;;;;;;;;;;;;;24274:78;24292:4;24298:2;24302:6;24310:7;24319:15;24336;24274:17;:78::i;:::-;24393:11;24376:14;;:28;;;;:::i;:::-;24359:14;:45;24437:25;;:39;;24465:11;;24437:39;:::i;:::-;24409:25;:67;24487:7;24483:221;;24504:15;:13;:15::i;:::-;24483:221;;;24559:16;;24539:37;;24548:10;;-1:-1:-1;;;;;24559:16:0;24539:8;:37::i;:::-;24585:34;24594:10;24613:4;24585:8;:34::i;:::-;24647:15;;24628:35;;24637:9;;-1:-1:-1;;;;;24647:15:0;24628:8;:35::i;:::-;24669:29;24678:6;7675:42;24669:8;:29::i;:::-;22506:2204;;;;;;;;;;22437:2273;;;:::o;15723:145::-;15764:7;15779:15;15796;15815:19;:17;:19::i;:::-;15778:56;;-1:-1:-1;15778:56:0;-1:-1:-1;15846:17:0;15778:56;;15846:17;:::i;:::-;15839:24;;;;15723:145;:::o;20620:381::-;8646:16;:23;;-1:-1:-1;;8646:23:0;8665:4;8646:23;;;:16;20716::::1;20731:1;20716:12:::0;:16:::1;:::i;:::-;20695:37:::0;-1:-1:-1;20766:21:0::1;20794:28;20695:37:::0;20794:16:::1;:28::i;:::-;20827:18;20848:42;20872:18:::0;20848:21:::1;:42;:::i;:::-;20827:63;;20895:35;20908:10;20919;20895:12;:35::i;:::-;20942:52;::::0;;4037:25:1;;;4093:2;4078:18;;4071:34;;;4121:18;;;4114:34;;;20942:52:0::1;::::0;4025:2:1;4010:18;20942:52:0::1;;;;;;;-1:-1:-1::0;;8680:16:0;:24;;-1:-1:-1;;8680:24:0;;;-1:-1:-1;;20620:381:0:o;18133:373::-;18251:15;18270:1;18251:20;18248:42;;18133:373;;;:::o;18248:42::-;18317:13;;18299:15;:31;18296:78;;;18355:13;;18337:31;;18296:78;18422:20;18432:9;18422;:20::i;:::-;18384:32;18400:16;18384:15;:32;:::i;:::-;18383:59;18380:122;;18449:47;18470:9;18480:15;18449:20;:47::i;20216:247::-;20273:13;;20253:17;:33;20310:13;;20291:16;:32;20347:12;;20328:16;:31;20385:14;;20364:18;:35;20420:9;;20404:13;:25;20436:22;-1:-1:-1;;;;;19086:13:0;:28;;;;19119:13;:28;;;;19152:12;:26;19183:14;:30;19218:9;:20;18946:297;20436:22;20216:247::o;16434:1131::-;16532:15;16549:23;16574:19;16598:23;16623:18;16643;16663:17;16682:19;16703:14;16726:18;16747;;16726:39;;16788:13;-1:-1:-1;;;;;16775:26:0;:9;-1:-1:-1;;;;;16775:26:0;;16772:142;;-1:-1:-1;16822:14:0;;16772:142;;;16861:13;-1:-1:-1;;;;;16851:23:0;:6;-1:-1:-1;;;;;16851:23:0;;16848:66;;-1:-1:-1;16895:13:0;;16848:66;16977:16;;:22;;16996:3;16977:22;:::i;:::-;16963:10;16945:13;;16935:7;:23;;;;:::i;:::-;16933:40;;;;:::i;:::-;:67;;;;:::i;:::-;16920:80;;17062:16;;17081:3;17062:22;;;;:::i;:::-;17048:10;17030:13;;17020:7;:23;;;;:::i;:::-;17018:40;;;;:::i;:::-;:67;;;;:::i;:::-;17005:80;;17146:16;;17165:3;17146:22;;;;:::i;:::-;17132:10;17114:12;;17104:7;:22;;;;:::i;:::-;17102:40;;;;:::i;:::-;:67;;;;:::i;:::-;17090:79;;17234:16;;17253:3;17234:22;;;;:::i;:::-;17219:10;17200:14;;17190:7;:24;;;;:::i;:::-;17188:41;;;;:::i;:::-;:69;;;;:::i;:::-;17174:83;;17310:16;;17329:3;17310:22;;;;:::i;:::-;17295:10;17282:9;;17272:7;:19;;;;:::i;:::-;17271:34;;;;:::i;:::-;:62;;;;:::i;:::-;17262:71;-1:-1:-1;17262:71:0;17410:11;17398:9;17372:23;17385:10;17372;:23;:::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;:::-;:58;;;;:::i;:::-;17360:71;;:7;:71;:::i;:::-;17342:89;;17464:10;:8;:10::i;:::-;17450:24;;:11;:24;:::i;:::-;17436:38;;17499:10;:8;:10::i;:::-;17489:20;;:7;:20;:::i;:::-;17479:30;;17550:10;:8;:10::i;:::-;17532:28;;:15;:28;:::i;:::-;17514:46;;16719:846;16434:1131;;;;;;;;;;;;;:::o;24715:582::-;-1:-1:-1;;;;;24893:22:0;;;;;;:16;:22;;;;;;:33;;24919:7;;24893:33;:::i;:::-;-1:-1:-1;;;;;24865:22:0;;;;;;:16;:22;;;;;;;;:61;;;;24937:11;:17;;;;;;24933:96;;;-1:-1:-1;;;;;24989:19:0;;;;;;:13;:19;;;;;;:34;;25016:7;;24989:34;:::i;:::-;-1:-1:-1;;;;;24964:19:0;;;;;;:13;:19;;;;;:59;24933:96;-1:-1:-1;;;;;25039:15:0;;;;;;:11;:15;;;;;;;;25035:102;;;-1:-1:-1;;;;;25089:17:0;;;;;;:13;:17;;;;;;:42;;25116:15;;25089:42;:::i;:::-;-1:-1:-1;;;;;25064:17:0;;;;;;:13;:17;;;;;:67;25035:102;-1:-1:-1;;;;;25169:20:0;;;;;;:16;:20;;;;;;:41;;25195:15;;25169:41;:::i;:::-;-1:-1:-1;;;;;25141:20:0;;;;;;:16;:20;;;;;:69;25220:19;;25217:76;;25266:2;-1:-1:-1;;;;;25251:35:0;25260:4;-1:-1:-1;;;;;25251:35:0;;25270:15;25251:35;;;;1038:25:1;;1026:2;1011:18;;892:177;25251:35:0;;;;;;;;24715:582;;;;;;:::o;20469:144::-;20507:101;20519:17;;20538:16;;20556;;20574:18;;20594:13;;19086;:28;;;;19119:13;:28;;;;19152:12;:26;19183:14;:30;19218:9;:20;18946:297;18511:430;18585:26;18626:10;:8;:10::i;:::-;18614:22;;:9;:22;:::i;:::-;-1:-1:-1;;;;;18676:32:0;;;;;;:16;:32;;;;;;18585:51;;-1:-1:-1;18676:53:0;;18585:51;;18676:53;:::i;:::-;-1:-1:-1;;;;;18641:32:0;;;;;;:16;:32;;;;;;;;:88;;;;18739:11;:27;;;;;;18736:116;;;-1:-1:-1;;;;;18805:29:0;;;;;;:13;:29;;;;;;:41;;18837:9;;18805:41;:::i;:::-;-1:-1:-1;;;;;18773:29:0;;;;;;:13;:29;;;;;:73;18736:116;18859:13;;18856:81;;18884:47;;1038:25:1;;;-1:-1:-1;;;;;18884:47:0;;;18893:10;;18884:47;;1026:2:1;1011:18;18884:47:0;892:177:1;15873:554:0;15964:14;;15923:7;;;;;6612:12;6557:1;6612:2;:12;:::i;:::-;6600:24;;:9;:24;:::i;:::-;15983:29;;16022:9;16017:291;16041:9;:16;16037:20;;16017:291;;;16107:7;16074:16;:30;16091:9;16101:1;16091:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16091:12:0;16074:30;;;;;;;;;;;;;:40;;:81;;;16148:7;16118:13;:27;16132:9;16142:1;16132:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16132:12:0;16118:27;;;;;;;;;;;;;:37;16074:81;16070:123;;;16165:14;;6612:12;6557:1;6612:2;:12;:::i;:::-;6600:24;;:9;:24;:::i;:::-;16157:36;;;;;;;15873:554;;:::o;16070:123::-;16219:16;:30;16236:9;16246:1;16236:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16236:12:0;16219:30;;;;;;;;;;;;;16209:40;;:7;:40;:::i;:::-;16199:50;;16275:13;:27;16289:9;16299:1;16289:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16289:12:0;16275:27;;;;;;;;;;;;;16265:37;;:7;:37;:::i;:::-;16255:47;-1:-1:-1;16059:3:0;;;;:::i;:::-;;;;16017:291;;;-1:-1:-1;6612:12:0;6557:1;6612:2;:12;:::i;:::-;6600:24;;:9;:24;:::i;:::-;16327:14;;:26;;;;:::i;:::-;16316:7;:38;16312:80;;;16364:14;;6612:12;6557:1;6612:2;:12;:::i;:::-;6600:24;;:9;:24;:::i;:::-;16356:36;;;;;;15873:554;;:::o;16312:80::-;16405:7;;16414;;-1:-1:-1;15873:554:0;-1:-1:-1;15873:554:0:o;21006:387::-;21090:16;;;21104:1;21090:16;;;;;;;;21066:21;;21090:16;;;;;;;;;;-1:-1:-1;21090:16:0;21066:40;;21129:4;21111;21116:1;21111:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;21111:23:0;;;-1:-1:-1;;;;;21111:23:0;;;;;21149:15;-1:-1:-1;;;;;21149:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21139:4;21144:1;21139:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;21139:32:0;;;-1:-1:-1;;;;;21139:32:0;;;;;21176:62;21193:4;21208:15;21226:11;21176:8;:62::i;:::-;21243:145;;-1:-1:-1;;;21243:145:0;;-1:-1:-1;;;;;21243:15:0;:66;;;;:145;;21315:11;;21332:1;;21339:4;;21357;;21368:15;;21243:145;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21830:285;21905:62;21922:4;21937:15;21955:11;21905:8;:62::i;:::-;21972:15;-1:-1:-1;;;;;21972:31:0;;22011:9;22035:4;22046:11;22063:1;22070;22077:7;4724;4745:6;-1:-1:-1;;;;;4745:6:0;;4678:78;22077:7;21972:138;;;;;;-1:-1:-1;;;;;;21972:138:0;;;-1:-1:-1;;;;;18546:15:1;;;21972:138:0;;;18528:34:1;18578:18;;;18571:34;;;;18621:18;;;18614:34;;;;18664:18;;;18657:34;18728:15;;;18707:19;;;18700:44;22090:15:0;18760:19:1;;;18753:35;18462:19;;21972:138:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21830:285;;:::o;17572:556::-;8646:16;:23;;-1:-1:-1;;8646:23:0;8665:4;8646:23;;;:16;17724:10:::1;:8;:10::i;:::-;17706:28;::::0;:15;:28:::1;:::i;:::-;-1:-1:-1::0;;;;;17766:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;;17679:55;;-1:-1:-1;17766:43:0::1;::::0;17679:55;;17766:43:::1;:::i;:::-;-1:-1:-1::0;;;;;17739:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;;;;:70;;;;17822:11:::1;:19:::0;;;;::::1;;17818:99;;;-1:-1:-1::0;;;;;17872:21:0;::::1;;::::0;;;:13:::1;:21;::::0;;;;;:39:::1;::::0;17896:15;;17872:39:::1;:::i;:::-;-1:-1:-1::0;;;;;17848:21:0;::::1;;::::0;;;:13:::1;:21;::::0;;;;:63;17818:99:::1;17982:4;17957:31;::::0;;;:16:::1;:31;::::0;;;;;:50:::1;::::0;17991:16;;17957:50:::1;:::i;:::-;17948:4;17923:31;::::0;;;:16:::1;:31;::::0;;;;;;:84;;;;18019:48;;-1:-1:-1;;;;;18019:48:0;::::1;::::0;::::1;::::0;::::1;::::0;18051:15;1038:25:1;;1026:2;1011:18;;892:177;18019:48:0::1;;;;;;;;18074:47;18098:15;18114:6;18074:23;:47::i;:::-;-1:-1:-1::0;;8680:16:0;:24;;-1:-1:-1;;8680:24:0;;;-1:-1:-1;17572:556:0:o;21398:427::-;21521:16;;;21535:1;21521:16;;;;;;;;21497:21;;21521:16;;;;;;;;;;-1:-1:-1;21521:16:0;21497:40;;21560:4;21542;21547:1;21542:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;21542:23:0;;;-1:-1:-1;;;;;21542:23:0;;;;;21580:15;-1:-1:-1;;;;;21580:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21570:4;21575:1;21570:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;21570:32:0;;;-1:-1:-1;;;;;21570:32:0;;;;;21607:62;21624:4;21639:15;21657:11;21607:8;:62::i;:::-;21674:146;;-1:-1:-1;;;21674:146:0;;-1:-1:-1;;;;;21674:15:0;:66;;;;:146;;21746:11;;21763:1;;21770:4;;21780:14;;21800:15;;21674:146;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21492:333;21398:427;;:::o;14:118:1:-;100:5;93:13;86:21;79:5;76:32;66:60;;122:1;119;112:12;66:60;14:118;:::o;137:750::-;229:6;237;245;298:2;286:9;277:7;273:23;269:32;266:52;;;314:1;311;304:12;266:52;354:9;341:23;383:18;424:2;416:6;413:14;410:34;;;440:1;437;430:12;410:34;478:6;467:9;463:22;453:32;;523:7;516:4;512:2;508:13;504:27;494:55;;545:1;542;535:12;494:55;585:2;572:16;611:2;603:6;600:14;597:34;;;627:1;624;617:12;597:34;682:7;675:4;665:6;662:1;658:14;654:2;650:23;646:34;643:47;640:67;;;703:1;700;693:12;640:67;734:4;726:13;;;;-1:-1:-1;758:6:1;-1:-1:-1;;799:20:1;;786:34;829:28;786:34;829:28;:::i;:::-;876:5;866:15;;;137:750;;;;;:::o;1074:376::-;1136:6;1144;1197:2;1185:9;1176:7;1172:23;1168:32;1165:52;;;1213:1;1210;1203:12;1165:52;1252:9;1239:23;1271:28;1293:5;1271:28;:::i;:::-;1318:5;-1:-1:-1;1375:2:1;1360:18;;1347:32;1388:30;1347:32;1388:30;:::i;:::-;1437:7;1427:17;;;1074:376;;;;;:::o;1455:454::-;1550:6;1558;1566;1574;1582;1635:3;1623:9;1614:7;1610:23;1606:33;1603:53;;;1652:1;1649;1642:12;1603:53;-1:-1:-1;;1675:23:1;;;1745:2;1730:18;;1717:32;;-1:-1:-1;1796:2:1;1781:18;;1768:32;;1847:2;1832:18;;1819:32;;-1:-1:-1;1898:3:1;1883:19;1870:33;;-1:-1:-1;1455:454:1;-1:-1:-1;1455:454:1:o;1914:597::-;2026:4;2055:2;2084;2073:9;2066:21;2116:6;2110:13;2159:6;2154:2;2143:9;2139:18;2132:34;2184:1;2194:140;2208:6;2205:1;2202:13;2194:140;;;2303:14;;;2299:23;;2293:30;2269:17;;;2288:2;2265:26;2258:66;2223:10;;2194:140;;;2352:6;2349:1;2346:13;2343:91;;;2422:1;2417:2;2408:6;2397:9;2393:22;2389:31;2382:42;2343:91;-1:-1:-1;2495:2:1;2474:15;-1:-1:-1;;2470:29:1;2455:45;;;;2502:2;2451:54;;1914:597;-1:-1:-1;;;1914:597:1:o;2516:180::-;2575:6;2628:2;2616:9;2607:7;2603:23;2599:32;2596:52;;;2644:1;2641;2634:12;2596:52;-1:-1:-1;2667:23:1;;2516:180;-1:-1:-1;2516:180:1:o;2701:131::-;-1:-1:-1;;;;;2776:31:1;;2766:42;;2756:70;;2822:1;2819;2812:12;2837:315;2905:6;2913;2966:2;2954:9;2945:7;2941:23;2937:32;2934:52;;;2982:1;2979;2972:12;2934:52;3021:9;3008:23;3040:31;3065:5;3040:31;:::i;:::-;3090:5;3142:2;3127:18;;;;3114:32;;-1:-1:-1;;;2837:315:1:o;3349:247::-;3408:6;3461:2;3449:9;3440:7;3436:23;3432:32;3429:52;;;3477:1;3474;3467:12;3429:52;3516:9;3503:23;3535:31;3560:5;3535:31;:::i;4159:456::-;4236:6;4244;4252;4305:2;4293:9;4284:7;4280:23;4276:32;4273:52;;;4321:1;4318;4311:12;4273:52;4360:9;4347:23;4379:31;4404:5;4379:31;:::i;:::-;4429:5;-1:-1:-1;4486:2:1;4471:18;;4458:32;4499:33;4458:32;4499:33;:::i;:::-;4159:456;;4551:7;;-1:-1:-1;;;4605:2:1;4590:18;;;;4577:32;;4159:456::o;5241:241::-;5297:6;5350:2;5338:9;5329:7;5325:23;5321:32;5318:52;;;5366:1;5363;5356:12;5318:52;5405:9;5392:23;5424:28;5446:5;5424:28;:::i;6721:316::-;6798:6;6806;6814;6867:2;6855:9;6846:7;6842:23;6838:32;6835:52;;;6883:1;6880;6873:12;6835:52;-1:-1:-1;;6906:23:1;;;6976:2;6961:18;;6948:32;;-1:-1:-1;7027:2:1;7012:18;;;6999:32;;6721:316;-1:-1:-1;6721:316:1:o;7042:385::-;7128:6;7136;7144;7152;7205:3;7193:9;7184:7;7180:23;7176:33;7173:53;;;7222:1;7219;7212:12;7173:53;-1:-1:-1;;7245:23:1;;;7315:2;7300:18;;7287:32;;-1:-1:-1;7366:2:1;7351:18;;7338:32;;7417:2;7402:18;7389:32;;-1:-1:-1;7042:385:1;-1:-1:-1;7042:385:1:o;7432:388::-;7500:6;7508;7561:2;7549:9;7540:7;7536:23;7532:32;7529:52;;;7577:1;7574;7567:12;7529:52;7616:9;7603:23;7635:31;7660:5;7635:31;:::i;:::-;7685:5;-1:-1:-1;7742:2:1;7727:18;;7714:32;7755:33;7714:32;7755:33;:::i;7825:309::-;7890:6;7898;7951:2;7939:9;7930:7;7926:23;7922:32;7919:52;;;7967:1;7964;7957:12;7919:52;8006:9;7993:23;8025:28;8047:5;8025:28;:::i;8139:356::-;8341:2;8323:21;;;8360:18;;;8353:30;8419:34;8414:2;8399:18;;8392:62;8486:2;8471:18;;8139:356::o;8500:401::-;8702:2;8684:21;;;8741:2;8721:18;;;8714:30;8780:34;8775:2;8760:18;;8753:62;-1:-1:-1;;;8846:2:1;8831:18;;8824:35;8891:3;8876:19;;8500:401::o;8906:127::-;8967:10;8962:3;8958:20;8955:1;8948:31;8998:4;8995:1;8988:15;9022:4;9019:1;9012:15;9038:127;9099:10;9094:3;9090:20;9087:1;9080:31;9130:4;9127:1;9120:15;9154:4;9151:1;9144:15;9170:135;9209:3;9230:17;;;9227:43;;9250:18;;:::i;:::-;-1:-1:-1;9297:1:1;9286:13;;9170:135::o;9310:128::-;9350:3;9381:1;9377:6;9374:1;9371:13;9368:39;;;9387:18;;:::i;:::-;-1:-1:-1;9423:9:1;;9310:128::o;9443:217::-;9483:1;9509;9499:132;;9553:10;9548:3;9544:20;9541:1;9534:31;9588:4;9585:1;9578:15;9616:4;9613:1;9606:15;9499:132;-1:-1:-1;9645:9:1;;9443:217::o;9665:422::-;9754:1;9797:5;9754:1;9811:270;9832:7;9822:8;9819:21;9811:270;;;9891:4;9887:1;9883:6;9879:17;9873:4;9870:27;9867:53;;;9900:18;;:::i;:::-;9950:7;9940:8;9936:22;9933:55;;;9970:16;;;;9933:55;10049:22;;;;10009:15;;;;9811:270;;;9815:3;9665:422;;;;;:::o;10092:806::-;10141:5;10171:8;10161:80;;-1:-1:-1;10212:1:1;10226:5;;10161:80;10260:4;10250:76;;-1:-1:-1;10297:1:1;10311:5;;10250:76;10342:4;10360:1;10355:59;;;;10428:1;10423:130;;;;10335:218;;10355:59;10385:1;10376:10;;10399:5;;;10423:130;10460:3;10450:8;10447:17;10444:43;;;10467:18;;:::i;:::-;-1:-1:-1;;10523:1:1;10509:16;;10538:5;;10335:218;;10637:2;10627:8;10624:16;10618:3;10612:4;10609:13;10605:36;10599:2;10589:8;10586:16;10581:2;10575:4;10572:12;10568:35;10565:77;10562:159;;;-1:-1:-1;10674:19:1;;;10706:5;;10562:159;10753:34;10778:8;10772:4;10753:34;:::i;:::-;10823:6;10819:1;10815:6;10811:19;10802:7;10799:32;10796:58;;;10834:18;;:::i;:::-;10872:20;;10092:806;-1:-1:-1;;;10092:806:1:o;10903:140::-;10961:5;10990:47;11031:4;11021:8;11017:19;11011:4;10990:47;:::i;11048:168::-;11088:7;11154:1;11150;11146:6;11142:14;11139:1;11136:21;11131:1;11124:9;11117:17;11113:45;11110:71;;;11161:18;;:::i;:::-;-1:-1:-1;11201:9:1;;11048:168::o;11630:125::-;11670:4;11698:1;11695;11692:8;11689:34;;;11703:18;;:::i;:::-;-1:-1:-1;11740:9:1;;11630:125::o;12527:184::-;12597:6;12650:2;12638:9;12629:7;12625:23;12621:32;12618:52;;;12666:1;12663;12656:12;12618:52;-1:-1:-1;12689:16:1;;12527:184;-1:-1:-1;12527:184:1:o;12995:245::-;13062:6;13115:2;13103:9;13094:7;13090:23;13086:32;13083:52;;;13131:1;13128;13121:12;13083:52;13163:9;13157:16;13182:28;13204:5;13182:28;:::i;13601:127::-;13662:10;13657:3;13653:20;13650:1;13643:31;13693:4;13690:1;13683:15;13717:4;13714:1;13707:15;16878:251;16948:6;17001:2;16989:9;16980:7;16976:23;16972:32;16969:52;;;17017:1;17014;17007:12;16969:52;17049:9;17043:16;17068:31;17093:5;17068:31;:::i;17134:461::-;17187:3;17225:5;17219:12;17252:6;17247:3;17240:19;17278:4;17307:2;17302:3;17298:12;17291:19;;17344:2;17337:5;17333:14;17365:1;17375:195;17389:6;17386:1;17383:13;17375:195;;;17454:13;;-1:-1:-1;;;;;17450:39:1;17438:52;;17510:12;;;;17545:15;;;;17486:1;17404:9;17375:195;;;-1:-1:-1;17586:3:1;;17134:461;-1:-1:-1;;;;;17134:461:1:o;17600:582::-;17899:6;17888:9;17881:25;17942:6;17937:2;17926:9;17922:18;17915:34;17985:3;17980:2;17969:9;17965:18;17958:31;17862:4;18006:57;18058:3;18047:9;18043:19;18035:6;18006:57;:::i;:::-;-1:-1:-1;;;;;18099:32:1;;;;18094:2;18079:18;;18072:60;-1:-1:-1;18163:3:1;18148:19;18141:35;17998:65;17600:582;-1:-1:-1;;;17600:582:1:o;18799:306::-;18887:6;18895;18903;18956:2;18944:9;18935:7;18931:23;18927:32;18924:52;;;18972:1;18969;18962:12;18924:52;19001:9;18995:16;18985:26;;19051:2;19040:9;19036:18;19030:25;19020:35;;19095:2;19084:9;19080:18;19074:25;19064:35;;18799:306;;;;;:::o

Swarm Source

ipfs://f6ccb4d95bde39c9ff4a8afa8390f33bd516d77935cba11cd8e004974d47cd72

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.