Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
10,000,000,000,000 SHINJOKI
Holders
85
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
160,051,558,869.344026193543217164 SHINJOKIValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
SHINJOKI
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-01-29 */ // SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.7; contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } contract ERC20Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "ERC20Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "ERC20Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } interface IERC20 { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } contract SHINJOKI is IERC20, Context, ERC20Ownable { using SafeMath for uint256; address dead = 0x000000000000000000000000000000000000dEaD; mapping(address => uint256) private _rOwned; mapping(address => uint256) private _tOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; mapping(address => bool) private _isExcluded; mapping(address => bool) private _maxWalletExclude; mapping (address => bool) private _isBot; mapping(address => bool) public boughtEarly; uint256 public tradingActiveBlock = 0; uint256 public earlyBuyPenaltyEnd; address[] private _excluded; uint256 private constant MAX = ~uint256(0); uint256 private constant _tTotal = 1e13 * 10**18; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _maxTxAmount = _tTotal; uint256 private _tFeeTotal; uint256 private _maxWalletSize = 300000000000 * 10**18; string private constant _names = "SHINJOKI"; string private constant _symbols = "SHINJOKI"; uint8 private constant _decimals = 18; uint8 private _refTax = 2; uint8 private _previousRefTax = _refTax; uint8 private _burnTax = 0; uint8 private _previouseBurnTax = _burnTax; uint8 private _liqTax = 3; uint8 private _previousLiqTax = _liqTax; uint8 private _devTax = 5; uint8 private _previousDevTax = _devTax; uint8 private _buyBack = 0; uint8 private _previousBuyBack = _buyBack; uint8 private _liqDiv = _liqTax + _devTax + _buyBack + _burnTax; uint256 private burnTokens; uint256 private MarketingTokens; uint256 private LiquidityTokens; uint256 private BuyBackTokens; IUniswapV2Router02 private pcsV2Router; address private pcsV2Pair; address payable private feeWallet; address payable private ownAddress; bool inSwapAndLiquify; bool private swapAndLiquifyEnabled = true; bool private _firstTrans = true; bool private _limitBuys = false; bool private _clearClog = false; bool private _maxWalletOn = false; uint256 private numTokensSellToAddToLiquidity; uint256 private buyBackUpperLimit = 1 * 10**18; event MaxTxAmountUpdated(uint _maxTxAmount); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity); event BoughtEarly(address indexed sniper); modifier lockTheSwap() { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor() { _rOwned[_msgSender()] = _rTotal; feeWallet = payable(0x13b3759B5dEe21991b5C9D43d677cE9b1480baea); ownAddress = payable(owner()); numTokensSellToAddToLiquidity = _tTotal.mul(1).div(1000); _isExcludedFromFee[_msgSender()] = true; _isExcludedFromFee[address(this)] = true; _maxWalletExclude[address(this)] = true; _maxWalletExclude[_msgSender()] = true; _maxWalletExclude[address(dead)] = true; addBot(0x41B0320bEb1563A048e2431c8C1cC155A0DFA967); addBot(0x91B305F0890Fd0534B66D8d479da6529C35A3eeC); emit Transfer(address(0), _msgSender(), _tTotal); } function name() public pure override returns (string memory) { return _names; } function symbol() public pure override returns (string memory) { return _symbols; } function decimals() public pure override returns (uint8) { return _decimals; } function totalSupply() public pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[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); _approve(sender,_msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance") ); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero") ); return true; } function isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns (uint256) { require(tAmount <= _tTotal, "Amt must be less than supply"); if (!deductTransferFee) { (uint256 rAmount, , , , , ) = _getValues(tAmount); return rAmount; } else { (, uint256 rTransferAmount, , , , ) = _getValues(tAmount); return rTransferAmount; } } function tokenFromReflection(uint256 rAmount) public view returns (uint256) { require(rAmount <= _rTotal, "Amt must be less than tot refl"); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } receive() external payable {} function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } function _getValues(uint256 tAmount) private view returns (uint256,uint256,uint256,uint256,uint256,uint256) { (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getTValues(tAmount); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, _getRate()); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity); } function _getTValues(uint256 tAmount)private view returns (uint256,uint256,uint256) { uint256 tFee = calculateTaxFee(tAmount); uint256 tLiquidity = calculateLiquidityFee(tAmount); uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity); return (tTransferAmount, tFee, tLiquidity); } function _getRValues(uint256 tAmount,uint256 tFee,uint256 tLiquidity,uint256 currentRate) private pure returns (uint256,uint256,uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rLiquidity = tLiquidity.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns (uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns (uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _takeLiquidity(uint256 tLiquidity) private { burnTokens += tLiquidity * _burnTax / _liqDiv; MarketingTokens += tLiquidity * _devTax / _liqDiv; LiquidityTokens += tLiquidity * _liqTax / _liqDiv; BuyBackTokens += tLiquidity * _buyBack / _liqDiv; uint256 currentRate = _getRate(); uint256 rLiquidity = tLiquidity.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity); if (_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity); } function calculateTaxFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_refTax).div(10**2); } function calculateLiquidityFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_devTax + _burnTax + _liqTax + _buyBack).div(10**2); } function removeAllFee() private { if (_refTax == 0 && _liqTax == 0 && _devTax == 0 && _burnTax == 0 && _buyBack == 0) return; _previousRefTax = _refTax; _previousLiqTax = _liqTax; _previousDevTax = _devTax; _previouseBurnTax = _burnTax; _previousBuyBack = _buyBack; _refTax = 0; _liqTax = 0; _devTax = 0; _burnTax = 0; _buyBack = 0; } function restoreAllFee() private { _refTax = _previousRefTax; _liqTax = _previousLiqTax; _devTax = _previousDevTax; _burnTax = _previouseBurnTax; _buyBack = _previousBuyBack; } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function isExcludedFromFee(address account) public view returns (bool) { return _isExcludedFromFee[account]; } function _approve(address owner,address spender,uint256 amount) private { require(owner != address(0), "ERC20: approve from zero address"); require(spender != address(0), "ERC20: approve to zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address from,address to,uint256 amount) private { require(from != address(0)); require(to != address(0)); require(amount > 0); require(!_isBot[from]); require(!boughtEarly[from] || earlyBuyPenaltyEnd <= block.timestamp); if (_maxWalletOn == true && ! _maxWalletExclude[to]) { require(balanceOf(to) + amount <= _maxWalletSize); } if (_limitBuys == true && from == pcsV2Pair) { require(amount <= 50000000000 * 10**18); } if (_clearClog == true && to != owner() && from != pcsV2Pair) { require(amount <= 0 * 10**18); } if(_firstTrans == true) { IUniswapV2Router02 _pcsV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); pcsV2Router = _pcsV2Router; pcsV2Pair = IUniswapV2Factory(_pcsV2Router.factory()).getPair(address(this), _pcsV2Router.WETH()); tradingActiveBlock = block.number; earlyBuyPenaltyEnd = block.timestamp + 72 hours; _maxWalletExclude[address(pcsV2Pair)] = true; _maxWalletExclude[address(pcsV2Router)] = true; _limitBuys = true; _maxWalletOn = true; _firstTrans = false; } if(from != owner() && to != pcsV2Pair && block.number == tradingActiveBlock){ boughtEarly[to] = true; emit BoughtEarly(to); } uint256 contractTokenBalance = balanceOf(address(this)); if (!inSwapAndLiquify && to == pcsV2Pair && swapAndLiquifyEnabled) { if (contractTokenBalance >= numTokensSellToAddToLiquidity) { swapBackLiq(); } } bool takeFee = true; if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) { takeFee = false; } if(boughtEarly[from] && earlyBuyPenaltyEnd > block.timestamp){ _refTax = _refTax * 5; _liqTax = _liqTax * 5; _devTax = _devTax * 5; _buyBack = _buyBack * 5; } _tokenTransfer(from, to, amount, takeFee); } function buyBackTokens(uint256 amount) public onlyOwner lockTheSwap { if (amount <= BuyBackTokens) { swapETHForTokens(amount); } } function swapETHForTokens(uint256 amount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = pcsV2Router.WETH(); path[1] = address(this); // make the swap pcsV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}( 0, // accept any amount of Tokens path, dead, // Burn address block.timestamp.add(300) ); } function addBot(address _user) public onlyOwner { require(_user != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); require(!_isBot[_user], "user already blacklisted"); _isBot[_user] = true; } function removeBot(address _user) public onlyOwner { require(_isBot[_user], "user already whitelisted"); _isBot[_user] = false; } function removeBoughtEarly(address account) external onlyOwner { boughtEarly[account] = false; } function swapBackLiq() private lockTheSwap { if(_burnTax != 0) { _transfer(address(this), dead, burnTokens); burnTokens = 0; } uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = MarketingTokens + LiquidityTokens + BuyBackTokens; // Halve the amount of liquidity tokens uint256 tokensForLiquidity = LiquidityTokens.div(2); uint256 amountToSwapForETH = contractBalance.sub(tokensForLiquidity); uint256 initialETHBalance = address(this).balance; swapTokensForETH(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMarketing = ethBalance.mul(MarketingTokens).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance.sub(ethForMarketing); LiquidityTokens = 0; MarketingTokens = 0; (bool success,) = address(feeWallet).call{value: ethForMarketing}(""); addLiquidity(tokensForLiquidity, ethForLiquidity); emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity); if(address(this).balance > 0 * 10**18){ (success,) = address(feeWallet).call{value: address(this).balance}(""); } } function swapTokensForETH(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = pcsV2Router.WETH(); _approve(address(this), address(pcsV2Router), tokenAmount); pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp.add(300) ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { _approve(address(this), address(pcsV2Router), tokenAmount); pcsV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable ownAddress, block.timestamp.add(300) ); } // Initiate true from deployment function Initiate() external onlyOwner { _firstTrans = true; } function TaxSwapEnable() external onlyOwner { swapAndLiquifyEnabled = true; } function TaxSwapDisable() external onlyOwner { swapAndLiquifyEnabled = false; } function LimitBuysOn() external onlyOwner { _limitBuys = true; } function LimitBuysOff() external onlyOwner { _limitBuys = false; } function turnMaxWalletOn() external onlyOwner { _maxWalletOn = true; } function turnMaxWalletOff() external onlyOwner { _maxWalletOn = false; } // FOR USE TO CLEAR IF CLOGS OCCUR IN THE ROUTER // STOPS ALL TRANSACTIONS SO OWNER CAN TRANSFER 1 TOKEN TO CLEAR CLOG function ClearClog() external onlyOwner { _clearClog = true; } function ClearClogReset() external onlyOwner { _clearClog = false; } function withdrawStuckETH() external onlyOwner { bool success; (success,) = address(msg.sender).call{value: address(this).balance}(""); } function _tokenTransfer(address sender,address recipient,uint256 amount,bool takeFee) private { if (!takeFee) removeAllFee(); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } if (!takeFee) restoreAllFee(); } function _transferStandard(address sender,address recipient,uint256 tAmount) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded(address sender,address recipient,uint256 tAmount) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded(address sender,address recipient,uint256 tAmount) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferBothExcluded(address sender,address recipient,uint256 tAmount) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _tokenTransferNoFee(address sender,address recipient,uint256 amount) private { _rOwned[sender] = _rOwned[sender].sub(amount); _rOwned[recipient] = _rOwned[recipient].add(amount); if (_isExcluded[sender]) { _tOwned[sender] = _tOwned[sender].sub(amount); } if (_isExcluded[recipient]) { _tOwned[recipient] = _tOwned[recipient].add(amount); } emit Transfer(sender, recipient, amount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"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":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"ClearClog","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ClearClogReset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"Initiate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"LimitBuysOff","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"LimitBuysOn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TaxSwapDisable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TaxSwapEnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"addBot","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"","type":"address"}],"name":"boughtEarly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"buyBackTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":[],"name":"earlyBuyPenaltyEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","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":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"removeBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBoughtEarly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":"pure","type":"function"},{"inputs":[],"name":"tradingActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"turnMaxWalletOff","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"turnMaxWalletOn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405261dead600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600a556c7e37be2022c0914b268000000060001962000069919062000bfb565b60001962000078919062000ba9565b600d556c7e37be2022c0914b2680000000600e556c03c95a2f0b4856475fe00000006010556002601160006101000a81548160ff021916908360ff160217905550601160009054906101000a900460ff16601160016101000a81548160ff021916908360ff1602179055506000601160026101000a81548160ff021916908360ff160217905550601160029054906101000a900460ff16601160036101000a81548160ff021916908360ff1602179055506003601160046101000a81548160ff021916908360ff160217905550601160049054906101000a900460ff16601160056101000a81548160ff021916908360ff1602179055506005601160066101000a81548160ff021916908360ff160217905550601160069054906101000a900460ff16601160076101000a81548160ff021916908360ff1602179055506000601160086101000a81548160ff021916908360ff160217905550601160089054906101000a900460ff16601160096101000a81548160ff021916908360ff160217905550601160029054906101000a900460ff16601160089054906101000a900460ff16601160069054906101000a900460ff16601160049054906101000a900460ff1662000247919062000ad2565b62000253919062000ad2565b6200025f919062000ad2565b6011600a6101000a81548160ff021916908360ff1602179055506001601960156101000a81548160ff0219169083151502179055506001601960166101000a81548160ff0219169083151502179055506000601960176101000a81548160ff0219169083151502179055506000601960186101000a81548160ff02191690831515021790555060006019806101000a81548160ff021916908315150217905550670de0b6b3a7640000601b553480156200031857600080fd5b5060006200032b620007d860201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600d5460026000620003e0620007d860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507313b3759b5dee21991b5c9d43d677ce9b1480baea601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000483620007e060201b60201c565b601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005066103e8620004f260016c7e37be2022c0914b26800000006200080960201b62001d711790919060201c565b6200082160201b62001d871790919060201c565b601a8190555060016005600062000522620007d860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600062000639620007d860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620007297341b0320beb1563a048e2431c8c1cc155a0dfa9676200083960201b60201c565b6200074e7391b305f0890fd0534b66d8d479da6529c35a3eec6200083960201b60201c565b6200075e620007d860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6c7e37be2022c0914b2680000000604051620007ca919062000aa4565b60405180910390a362000d09565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000818362000819919062000b48565b905092915050565b6000818362000831919062000b10565b905092915050565b62000849620007d860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200086f620007e060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620008c8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008bf9062000a82565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156200091657600080fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615620009a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200099d9062000a60565b60405180910390fd5b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600062000a1060188362000ac1565b915062000a1d8262000c91565b602082019050919050565b600062000a3760258362000ac1565b915062000a448262000cba565b604082019050919050565b62000a5a8162000be4565b82525050565b6000602082019050818103600083015262000a7b8162000a01565b9050919050565b6000602082019050818103600083015262000a9d8162000a28565b9050919050565b600060208201905062000abb600083018462000a4f565b92915050565b600082825260208201905092915050565b600062000adf8262000bee565b915062000aec8362000bee565b92508260ff0382111562000b055762000b0462000c33565b5b828201905092915050565b600062000b1d8262000be4565b915062000b2a8362000be4565b92508262000b3d5762000b3c62000c62565b5b828204905092915050565b600062000b558262000be4565b915062000b628362000be4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000b9e5762000b9d62000c33565b5b828202905092915050565b600062000bb68262000be4565b915062000bc38362000be4565b92508282101562000bd95762000bd862000c33565b5b828203905092915050565b6000819050919050565b600060ff82169050919050565b600062000c088262000be4565b915062000c158362000be4565b92508262000c285762000c2762000c62565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f7573657220616c726561647920626c61636b6c69737465640000000000000000600082015250565b7f45524332304f776e61626c653a2063616c6c6572206973206e6f74207468652060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6158cf8062000d196000396000f3fe6080604052600436106102135760003560e01c806370a0823111610118578063a9059cbb116100a0578063f2fde38b1161006f578063f2fde38b14610772578063f5648a4f1461079b578063f5eb223d146107b2578063fc155d1d146107c9578063ffecf516146107f25761021a565b8063a9059cbb146106b6578063d3dbc861146106f3578063dd62ed3e1461070a578063ee40166e146107475761021a565b806385ecfd28116100e757806385ecfd28146105a957806388f82020146105e65780638da5cb5b1461062357806395d89b411461064e578063a457c2d7146106795761021a565b806370a0823114610527578063715018a6146105645780637b7141e41461057b57806380f0f48b146105925761021a565b8063437823ec1161019b5780635c0fdd4c1161016a5780635c0fdd4c146104a25780635fecd926146104b9578063620b4bfc146104e25780636465de5d146104f95780636e86ea8b146105105761021a565b8063437823ec146103d65780634549b039146103ff5780635342acb41461043c5780635bb988c9146104795761021a565b806323b872dd116101e257806323b872dd146102dd5780632d8381191461031a578063313ce5671461035757806339509351146103825780633f97d3f4146103bf5761021a565b806306fdde031461021f578063095ea7b31461024a57806318160ddd146102875780631fc851bd146102b25761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b5061023461081b565b60405161024191906150b5565b60405180910390f35b34801561025657600080fd5b50610271600480360381019061026c9190614c41565b610858565b60405161027e919061504e565b60405180910390f35b34801561029357600080fd5b5061029c610876565b6040516102a991906151d7565b60405180910390f35b3480156102be57600080fd5b506102c761088b565b6040516102d491906151d7565b60405180910390f35b3480156102e957600080fd5b5061030460048036038101906102ff9190614bee565b610891565b604051610311919061504e565b60405180910390f35b34801561032657600080fd5b50610341600480360381019061033c9190614c81565b61096a565b60405161034e91906151d7565b60405180910390f35b34801561036357600080fd5b5061036c6109d8565b6040516103799190615283565b60405180910390f35b34801561038e57600080fd5b506103a960048036038101906103a49190614c41565b6109e1565b6040516103b6919061504e565b60405180910390f35b3480156103cb57600080fd5b506103d4610a94565b005b3480156103e257600080fd5b506103fd60048036038101906103f89190614b54565b610b2d565b005b34801561040b57600080fd5b5061042660048036038101906104219190614cae565b610c04565b60405161043391906151d7565b60405180910390f35b34801561044857600080fd5b50610463600480360381019061045e9190614b54565b610c93565b604051610470919061504e565b60405180910390f35b34801561048557600080fd5b506104a0600480360381019061049b9190614b54565b610ce9565b005b3480156104ae57600080fd5b506104b7610dc0565b005b3480156104c557600080fd5b506104e060048036038101906104db9190614b54565b610e58565b005b3480156104ee57600080fd5b506104f7610fbb565b005b34801561050557600080fd5b5061050e611054565b005b34801561051c57600080fd5b506105256110ed565b005b34801561053357600080fd5b5061054e60048036038101906105499190614b54565b611186565b60405161055b91906151d7565b60405180910390f35b34801561057057600080fd5b50610579611271565b005b34801561058757600080fd5b506105906113ab565b005b34801561059e57600080fd5b506105a7611444565b005b3480156105b557600080fd5b506105d060048036038101906105cb9190614b54565b6114dd565b6040516105dd919061504e565b60405180910390f35b3480156105f257600080fd5b5061060d60048036038101906106089190614b54565b6114fd565b60405161061a919061504e565b60405180910390f35b34801561062f57600080fd5b50610638611553565b6040516106459190614fa9565b60405180910390f35b34801561065a57600080fd5b5061066361157c565b60405161067091906150b5565b60405180910390f35b34801561068557600080fd5b506106a0600480360381019061069b9190614c41565b6115b9565b6040516106ad919061504e565b60405180910390f35b3480156106c257600080fd5b506106dd60048036038101906106d89190614c41565b611686565b6040516106ea919061504e565b60405180910390f35b3480156106ff57600080fd5b506107086116a4565b005b34801561071657600080fd5b50610731600480360381019061072c9190614bae565b61173d565b60405161073e91906151d7565b60405180910390f35b34801561075357600080fd5b5061075c6117c4565b60405161076991906151d7565b60405180910390f35b34801561077e57600080fd5b5061079960048036038101906107949190614b54565b6117ca565b005b3480156107a757600080fd5b506107b0611973565b005b3480156107be57600080fd5b506107c7611a60565b005b3480156107d557600080fd5b506107f060048036038101906107eb9190614c81565b611af8565b005b3480156107fe57600080fd5b5061081960048036038101906108149190614b54565b611bc0565b005b60606040518060400160405280600881526020017f5348494e4a4f4b49000000000000000000000000000000000000000000000000815250905090565b600061086c610865611d9d565b8484611da5565b6001905092915050565b60006c7e37be2022c0914b2680000000905090565b600b5481565b600061089e848484611f70565b61095f846108aa611d9d565b61095a8560405180606001604052806028815260200161584d60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610910611d9d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a119092919063ffffffff16565b611da5565b600190509392505050565b6000600d548211156109b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a890615117565b60405180910390fd5b60006109bb612a66565b90506109d08184611d8790919063ffffffff16565b915050919050565b60006012905090565b6000610a8a6109ee611d9d565b84610a8585600460006109ff611d9d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a9190919063ffffffff16565b611da5565b6001905092915050565b610a9c611d9d565b73ffffffffffffffffffffffffffffffffffffffff16610aba611553565b73ffffffffffffffffffffffffffffffffffffffff1614610b10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0790615197565b60405180910390fd5b6001601960176101000a81548160ff021916908315150217905550565b610b35611d9d565b73ffffffffffffffffffffffffffffffffffffffff16610b53611553565b73ffffffffffffffffffffffffffffffffffffffff1614610ba9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba090615197565b60405180910390fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006c7e37be2022c0914b2680000000831115610c56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4d906150f7565b60405180910390fd5b81610c76576000610c6684612aa7565b5050505050905080915050610c8d565b6000610c8184612aa7565b50505050915050809150505b92915050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610cf1611d9d565b73ffffffffffffffffffffffffffffffffffffffff16610d0f611553565b73ffffffffffffffffffffffffffffffffffffffff1614610d65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5c90615197565b60405180910390fd5b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610dc8611d9d565b73ffffffffffffffffffffffffffffffffffffffff16610de6611553565b73ffffffffffffffffffffffffffffffffffffffff1614610e3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3390615197565b60405180910390fd5b60006019806101000a81548160ff021916908315150217905550565b610e60611d9d565b73ffffffffffffffffffffffffffffffffffffffff16610e7e611553565b73ffffffffffffffffffffffffffffffffffffffff1614610ed4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecb90615197565b60405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610f60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5790615157565b60405180910390fd5b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610fc3611d9d565b73ffffffffffffffffffffffffffffffffffffffff16610fe1611553565b73ffffffffffffffffffffffffffffffffffffffff1614611037576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102e90615197565b60405180910390fd5b6000601960156101000a81548160ff021916908315150217905550565b61105c611d9d565b73ffffffffffffffffffffffffffffffffffffffff1661107a611553565b73ffffffffffffffffffffffffffffffffffffffff16146110d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c790615197565b60405180910390fd5b6000601960186101000a81548160ff021916908315150217905550565b6110f5611d9d565b73ffffffffffffffffffffffffffffffffffffffff16611113611553565b73ffffffffffffffffffffffffffffffffffffffff1614611169576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116090615197565b60405180910390fd5b6001601960156101000a81548160ff021916908315150217905550565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561122157600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061126c565b611269600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461096a565b90505b919050565b611279611d9d565b73ffffffffffffffffffffffffffffffffffffffff16611297611553565b73ffffffffffffffffffffffffffffffffffffffff16146112ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e490615197565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6113b3611d9d565b73ffffffffffffffffffffffffffffffffffffffff166113d1611553565b73ffffffffffffffffffffffffffffffffffffffff1614611427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141e90615197565b60405180910390fd5b6000601960176101000a81548160ff021916908315150217905550565b61144c611d9d565b73ffffffffffffffffffffffffffffffffffffffff1661146a611553565b73ffffffffffffffffffffffffffffffffffffffff16146114c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b790615197565b60405180910390fd5b6001601960186101000a81548160ff021916908315150217905550565b60096020528060005260406000206000915054906101000a900460ff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600881526020017f5348494e4a4f4b49000000000000000000000000000000000000000000000000815250905090565b600061167c6115c6611d9d565b846116778560405180606001604052806025815260200161587560259139600460006115f0611d9d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a119092919063ffffffff16565b611da5565b6001905092915050565b600061169a611693611d9d565b8484611f70565b6001905092915050565b6116ac611d9d565b73ffffffffffffffffffffffffffffffffffffffff166116ca611553565b73ffffffffffffffffffffffffffffffffffffffff1614611720576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171790615197565b60405180910390fd5b6001601960166101000a81548160ff021916908315150217905550565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b6117d2611d9d565b73ffffffffffffffffffffffffffffffffffffffff166117f0611553565b73ffffffffffffffffffffffffffffffffffffffff1614611846576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183d90615197565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ad90615177565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61197b611d9d565b73ffffffffffffffffffffffffffffffffffffffff16611999611553565b73ffffffffffffffffffffffffffffffffffffffff16146119ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e690615197565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051611a1590614f94565b60006040518083038185875af1925050503d8060008114611a52576040519150601f19603f3d011682016040523d82523d6000602084013e611a57565b606091505b50508091505050565b611a68611d9d565b73ffffffffffffffffffffffffffffffffffffffff16611a86611553565b73ffffffffffffffffffffffffffffffffffffffff1614611adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad390615197565b60405180910390fd5b60016019806101000a81548160ff021916908315150217905550565b611b00611d9d565b73ffffffffffffffffffffffffffffffffffffffff16611b1e611553565b73ffffffffffffffffffffffffffffffffffffffff1614611b74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6b90615197565b60405180910390fd5b6001601960146101000a81548160ff0219169083151502179055506015548111611ba257611ba181612b03565b5b6000601960146101000a81548160ff02191690831515021790555050565b611bc8611d9d565b73ffffffffffffffffffffffffffffffffffffffff16611be6611553565b73ffffffffffffffffffffffffffffffffffffffff1614611c3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3390615197565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611c8957600080fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611d16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0d90615137565b60405180910390fd5b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008183611d7f91906153bc565b905092915050565b60008183611d95919061538b565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611e15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0c906151b7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7c906150d7565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f6391906151d7565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611faa57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611fe457600080fd5b60008111611ff157600080fd5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561204857600080fd5b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615806120a3575042600b5411155b6120ac57600080fd5b6001151560198054906101000a900460ff1615151480156121175750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561213f576010548161212984611186565b61213391906152fe565b111561213e57600080fd5b5b60011515601960179054906101000a900460ff1615151480156121af5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156121ce576ba18f07d736b90be5500000008111156121cd57600080fd5b5b60011515601960189054906101000a900460ff16151514801561222457506121f4611553565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561227e5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561229257600081111561229157600080fd5b5b60011515601960169054906101000a900460ff161515141561262f576000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561234e57600080fd5b505afa158015612362573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123869190614b81565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156123e857600080fd5b505afa1580156123fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124209190614b81565b6040518363ffffffff1660e01b815260040161243d929190614fc4565b60206040518083038186803b15801561245557600080fd5b505afa158015612469573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061248d9190614b81565b601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555043600a819055506203f480426124e391906152fe565b600b81905550600160076000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601960176101000a81548160ff02191690831515021790555060016019806101000a81548160ff0219169083151502179055506000601960166101000a81548160ff021916908315150217905550505b612637611553565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156126c05750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156126cd5750600a5443145b1561276e576001600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fb90badc1cf1c52268f4fa9afb5276aebf640bcca3300cdfc9cf37db17daa13e260405160405180910390a25b600061277930611186565b9050601960149054906101000a900460ff161580156127e55750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80156127fd5750601960159054906101000a900460ff165b1561281557601a54811061281457612813612d5d565b5b5b600060019050600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128bc5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156128c657600090505b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612920575042600b54115b156129fe576005601160009054906101000a900460ff166129419190615416565b601160006101000a81548160ff021916908360ff1602179055506005601160049054906101000a900460ff166129779190615416565b601160046101000a81548160ff021916908360ff1602179055506005601160069054906101000a900460ff166129ad9190615416565b601160066101000a81548160ff021916908360ff1602179055506005601160089054906101000a900460ff166129e39190615416565b601160086101000a81548160ff021916908360ff1602179055505b612a0a85858584613031565b5050505050565b6000838311158290612a59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5091906150b5565b60405180910390fd5b5082840390509392505050565b6000806000612a73613342565b91509150612a8a8183611d8790919063ffffffff16565b9250505090565b60008183612a9f91906152fe565b905092915050565b6000806000806000806000806000612abe8a613621565b9250925092506000806000612adc8d8686612ad7612a66565b61367b565b9250925092508282828888889b509b509b509b509b509b5050505050505091939550919395565b6000600267ffffffffffffffff811115612b2057612b1f61562b565b5b604051908082528060200260200182016040528015612b4e5781602001602082028036833780820191505090505b509050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612bb957600080fd5b505afa158015612bcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bf19190614b81565b81600081518110612c0557612c046155fc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503081600181518110612c5457612c536155fc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de9583600084600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612d0861012c42612a9190919063ffffffff16565b6040518663ffffffff1660e01b8152600401612d279493929190615069565b6000604051808303818588803b158015612d4057600080fd5b505af1158015612d54573d6000803e3d6000fd5b50505050505050565b6001601960146101000a81548160ff0219169083151502179055506000601160029054906101000a900460ff1660ff1614612dca57612dc130600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601254611f70565b60006012819055505b6000612dd530611186565b90506000601554601454601354612dec91906152fe565b612df691906152fe565b90506000612e106002601454611d8790919063ffffffff16565b90506000612e27828561370490919063ffffffff16565b90506000479050612e378261371a565b6000612e4c824761370490919063ffffffff16565b90506000612e7786612e6960135485611d7190919063ffffffff16565b611d8790919063ffffffff16565b90506000612e8e828461370490919063ffffffff16565b9050600060148190555060006013819055506000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051612ee890614f94565b60006040518083038185875af1925050503d8060008114612f25576040519150601f19603f3d011682016040523d82523d6000602084013e612f2a565b606091505b50509050612f388783613980565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868389604051612f6b9392919061524c565b60405180910390a1600047111561300b57601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612fc290614f94565b60006040518083038185875af1925050503d8060008114612fff576040519150601f19603f3d011682016040523d82523d6000602084013e613004565b606091505b5050809150505b5050505050505050506000601960146101000a81548160ff021916908315150217905550565b8061303f5761303e613aa3565b5b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130e25750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156130f7576130f2848484613c9c565b61332e565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561319a5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156131af576131aa848484613efc565b61332d565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156132535750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156132685761326384848461415c565b61332c565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561330a5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561331f5761331a848484614327565b61332b565b61332a84848461415c565b5b5b5b5b8061333c5761333b61461c565b5b50505050565b6000806000600d54905060006c7e37be2022c0914b2680000000905060005b600c805490508110156135ce578260026000600c8481548110613387576133866155fc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061347557508160036000600c848154811061340d5761340c6155fc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561349757600d546c7e37be2022c0914b26800000009450945050505061361d565b61352760026000600c84815481106134b2576134b16155fc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461370490919063ffffffff16565b92506135b960036000600c8481548110613544576135436155fc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361370490919063ffffffff16565b915080806135c690615555565b915050613361565b506135f16c7e37be2022c0914b2680000000600d54611d8790919063ffffffff16565b82101561361457600d546c7e37be2022c0914b268000000093509350505061361d565b81819350935050505b9091565b600080600080613630856146f0565b9050600061363d86614731565b9050600061366682613658858a61370490919063ffffffff16565b61370490919063ffffffff16565b90508083839550955095505050509193909250565b6000806000806136948589611d7190919063ffffffff16565b905060006136ab8689611d7190919063ffffffff16565b905060006136c28789611d7190919063ffffffff16565b905060006136eb826136dd858761370490919063ffffffff16565b61370490919063ffffffff16565b9050838184965096509650505050509450945094915050565b600081836137129190615451565b905092915050565b6000600267ffffffffffffffff8111156137375761373661562b565b5b6040519080825280602002602001820160405280156137655781602001602082028036833780820191505090505b509050308160008151811061377d5761377c6155fc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561381f57600080fd5b505afa158015613833573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138579190614b81565b8160018151811061386b5761386a6155fc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506138d230601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611da5565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947836000843061392a61012c42612a9190919063ffffffff16565b6040518663ffffffff1660e01b815260040161394a9594939291906151f2565b600060405180830381600087803b15801561396457600080fd5b505af1158015613978573d6000803e3d6000fd5b505050505050565b6139ad30601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611da5565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613a2961012c42612a9190919063ffffffff16565b6040518863ffffffff1660e01b8152600401613a4a96959493929190614fed565b6060604051808303818588803b158015613a6357600080fd5b505af1158015613a77573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613a9c9190614cee565b5050505050565b6000601160009054906101000a900460ff1660ff16148015613ad757506000601160049054906101000a900460ff1660ff16145b8015613af557506000601160069054906101000a900460ff1660ff16145b8015613b1357506000601160029054906101000a900460ff1660ff16145b8015613b3157506000601160089054906101000a900460ff1660ff16145b15613b3b57613c9a565b601160009054906101000a900460ff16601160016101000a81548160ff021916908360ff160217905550601160049054906101000a900460ff16601160056101000a81548160ff021916908360ff160217905550601160069054906101000a900460ff16601160076101000a81548160ff021916908360ff160217905550601160029054906101000a900460ff16601160036101000a81548160ff021916908360ff160217905550601160089054906101000a900460ff16601160096101000a81548160ff021916908360ff1602179055506000601160006101000a81548160ff021916908360ff1602179055506000601160046101000a81548160ff021916908360ff1602179055506000601160066101000a81548160ff021916908360ff1602179055506000601160026101000a81548160ff021916908360ff1602179055506000601160086101000a81548160ff021916908360ff1602179055505b565b600080600080600080613cae87612aa7565b955095509550955095509550613d0c87600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461370490919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613da186600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461370490919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e3685600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a9190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e82816147c0565b613e8c8483614ab1565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613ee991906151d7565b60405180910390a3505050505050505050565b600080600080600080613f0e87612aa7565b955095509550955095509550613f6c86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461370490919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061400183600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a9190919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061409685600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a9190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506140e2816147c0565b6140ec8483614ab1565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161414991906151d7565b60405180910390a3505050505050505050565b60008060008060008061416e87612aa7565b9550955095509550955095506141cc86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461370490919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061426185600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a9190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506142ad816147c0565b6142b78483614ab1565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161431491906151d7565b60405180910390a3505050505050505050565b60008060008060008061433987612aa7565b95509550955095509550955061439787600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461370490919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061442c86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461370490919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506144c183600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a9190919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061455685600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a9190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506145a2816147c0565b6145ac8483614ab1565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161460991906151d7565b60405180910390a3505050505050505050565b601160019054906101000a900460ff16601160006101000a81548160ff021916908360ff160217905550601160059054906101000a900460ff16601160046101000a81548160ff021916908360ff160217905550601160079054906101000a900460ff16601160066101000a81548160ff021916908360ff160217905550601160039054906101000a900460ff16601160026101000a81548160ff021916908360ff160217905550601160099054906101000a900460ff16601160086101000a81548160ff021916908360ff160217905550565b600061472a606461471c601160009054906101000a900460ff1660ff1685611d7190919063ffffffff16565b611d8790919063ffffffff16565b9050919050565b60006147b960646147ab601160089054906101000a900460ff16601160049054906101000a900460ff16601160029054906101000a900460ff16601160069054906101000a900460ff166147859190615354565b61478f9190615354565b6147999190615354565b60ff1685611d7190919063ffffffff16565b611d8790919063ffffffff16565b9050919050565b6011600a9054906101000a900460ff1660ff16601160029054906101000a900460ff1660ff16826147f191906153bc565b6147fb919061538b565b6012600082825461480c91906152fe565b925050819055506011600a9054906101000a900460ff1660ff16601160069054906101000a900460ff1660ff168261484491906153bc565b61484e919061538b565b6013600082825461485f91906152fe565b925050819055506011600a9054906101000a900460ff1660ff16601160049054906101000a900460ff1660ff168261489791906153bc565b6148a1919061538b565b601460008282546148b291906152fe565b925050819055506011600a9054906101000a900460ff1660ff16601160089054906101000a900460ff1660ff16826148ea91906153bc565b6148f4919061538b565b6015600082825461490591906152fe565b925050819055506000614916612a66565b9050600061492d8284611d7190919063ffffffff16565b905061498181600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a9190919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614aac57614a6883600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a9190919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b614ac682600d5461370490919063ffffffff16565b600d81905550614ae181600f54612a9190919063ffffffff16565b600f819055505050565b600081359050614afa81615807565b92915050565b600081519050614b0f81615807565b92915050565b600081359050614b248161581e565b92915050565b600081359050614b3981615835565b92915050565b600081519050614b4e81615835565b92915050565b600060208284031215614b6a57614b6961565a565b5b6000614b7884828501614aeb565b91505092915050565b600060208284031215614b9757614b9661565a565b5b6000614ba584828501614b00565b91505092915050565b60008060408385031215614bc557614bc461565a565b5b6000614bd385828601614aeb565b9250506020614be485828601614aeb565b9150509250929050565b600080600060608486031215614c0757614c0661565a565b5b6000614c1586828701614aeb565b9350506020614c2686828701614aeb565b9250506040614c3786828701614b2a565b9150509250925092565b60008060408385031215614c5857614c5761565a565b5b6000614c6685828601614aeb565b9250506020614c7785828601614b2a565b9150509250929050565b600060208284031215614c9757614c9661565a565b5b6000614ca584828501614b2a565b91505092915050565b60008060408385031215614cc557614cc461565a565b5b6000614cd385828601614b2a565b9250506020614ce485828601614b15565b9150509250929050565b600080600060608486031215614d0757614d0661565a565b5b6000614d1586828701614b3f565b9350506020614d2686828701614b3f565b9250506040614d3786828701614b3f565b9150509250925092565b6000614d4d8383614d68565b60208301905092915050565b614d62816154da565b82525050565b614d7181615485565b82525050565b614d8081615485565b82525050565b6000614d91826152ae565b614d9b81856152d1565b9350614da68361529e565b8060005b83811015614dd7578151614dbe8882614d41565b9750614dc9836152c4565b925050600181019050614daa565b5085935050505092915050565b614ded81615497565b82525050565b614dfc816154ec565b82525050565b6000614e0d826152b9565b614e1781856152ed565b9350614e27818560208601615522565b614e308161565f565b840191505092915050565b6000614e48601e836152ed565b9150614e5382615670565b602082019050919050565b6000614e6b601c836152ed565b9150614e7682615699565b602082019050919050565b6000614e8e601e836152ed565b9150614e99826156c2565b602082019050919050565b6000614eb16018836152ed565b9150614ebc826156eb565b602082019050919050565b6000614ed46018836152ed565b9150614edf82615714565b602082019050919050565b6000614ef7602b836152ed565b9150614f028261573d565b604082019050919050565b6000614f1a6025836152ed565b9150614f258261578c565b604082019050919050565b6000614f3d6000836152e2565b9150614f48826157db565b600082019050919050565b6000614f606020836152ed565b9150614f6b826157de565b602082019050919050565b614f7f816154c3565b82525050565b614f8e816154cd565b82525050565b6000614f9f82614f30565b9150819050919050565b6000602082019050614fbe6000830184614d77565b92915050565b6000604082019050614fd96000830185614d77565b614fe66020830184614d77565b9392505050565b600060c0820190506150026000830189614d77565b61500f6020830188614f76565b61501c6040830187614df3565b6150296060830186614df3565b6150366080830185614d59565b61504360a0830184614f76565b979650505050505050565b60006020820190506150636000830184614de4565b92915050565b600060808201905061507e6000830187614df3565b81810360208301526150908186614d86565b905061509f6040830185614d77565b6150ac6060830184614f76565b95945050505050565b600060208201905081810360008301526150cf8184614e02565b905092915050565b600060208201905081810360008301526150f081614e3b565b9050919050565b6000602082019050818103600083015261511081614e5e565b9050919050565b6000602082019050818103600083015261513081614e81565b9050919050565b6000602082019050818103600083015261515081614ea4565b9050919050565b6000602082019050818103600083015261517081614ec7565b9050919050565b6000602082019050818103600083015261519081614eea565b9050919050565b600060208201905081810360008301526151b081614f0d565b9050919050565b600060208201905081810360008301526151d081614f53565b9050919050565b60006020820190506151ec6000830184614f76565b92915050565b600060a0820190506152076000830188614f76565b6152146020830187614df3565b81810360408301526152268186614d86565b90506152356060830185614d77565b6152426080830184614f76565b9695505050505050565b60006060820190506152616000830186614f76565b61526e6020830185614f76565b61527b6040830184614f76565b949350505050565b60006020820190506152986000830184614f85565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000615309826154c3565b9150615314836154c3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156153495761534861559e565b5b828201905092915050565b600061535f826154cd565b915061536a836154cd565b92508260ff038211156153805761537f61559e565b5b828201905092915050565b6000615396826154c3565b91506153a1836154c3565b9250826153b1576153b06155cd565b5b828204905092915050565b60006153c7826154c3565b91506153d2836154c3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561540b5761540a61559e565b5b828202905092915050565b6000615421826154cd565b915061542c836154cd565b92508160ff04831182151516156154465761544561559e565b5b828202905092915050565b600061545c826154c3565b9150615467836154c3565b92508282101561547a5761547961559e565b5b828203905092915050565b6000615490826154a3565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006154e5826154fe565b9050919050565b60006154f7826154c3565b9050919050565b600061550982615510565b9050919050565b600061551b826154a3565b9050919050565b60005b83811015615540578082015181840152602081019050615525565b8381111561554f576000848401525b50505050565b6000615560826154c3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156155935761559261559e565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a20617070726f766520746f207a65726f20616464726573730000600082015250565b7f416d74206d757374206265206c657373207468616e20737570706c7900000000600082015250565b7f416d74206d757374206265206c657373207468616e20746f74207265666c0000600082015250565b7f7573657220616c726561647920626c61636b6c69737465640000000000000000600082015250565b7f7573657220616c72656164792077686974656c69737465640000000000000000600082015250565b7f45524332304f776e61626c653a206e6577206f776e657220697320746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f45524332304f776e61626c653a2063616c6c6572206973206e6f74207468652060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d207a65726f2061646472657373600082015250565b61581081615485565b811461581b57600080fd5b50565b61582781615497565b811461583257600080fd5b50565b61583e816154c3565b811461584957600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220487594cb4c1e5dae91253d9f539e7819df91600f8a0204f94e88e4048c36a71864736f6c63430008070033
Deployed Bytecode
0x6080604052600436106102135760003560e01c806370a0823111610118578063a9059cbb116100a0578063f2fde38b1161006f578063f2fde38b14610772578063f5648a4f1461079b578063f5eb223d146107b2578063fc155d1d146107c9578063ffecf516146107f25761021a565b8063a9059cbb146106b6578063d3dbc861146106f3578063dd62ed3e1461070a578063ee40166e146107475761021a565b806385ecfd28116100e757806385ecfd28146105a957806388f82020146105e65780638da5cb5b1461062357806395d89b411461064e578063a457c2d7146106795761021a565b806370a0823114610527578063715018a6146105645780637b7141e41461057b57806380f0f48b146105925761021a565b8063437823ec1161019b5780635c0fdd4c1161016a5780635c0fdd4c146104a25780635fecd926146104b9578063620b4bfc146104e25780636465de5d146104f95780636e86ea8b146105105761021a565b8063437823ec146103d65780634549b039146103ff5780635342acb41461043c5780635bb988c9146104795761021a565b806323b872dd116101e257806323b872dd146102dd5780632d8381191461031a578063313ce5671461035757806339509351146103825780633f97d3f4146103bf5761021a565b806306fdde031461021f578063095ea7b31461024a57806318160ddd146102875780631fc851bd146102b25761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b5061023461081b565b60405161024191906150b5565b60405180910390f35b34801561025657600080fd5b50610271600480360381019061026c9190614c41565b610858565b60405161027e919061504e565b60405180910390f35b34801561029357600080fd5b5061029c610876565b6040516102a991906151d7565b60405180910390f35b3480156102be57600080fd5b506102c761088b565b6040516102d491906151d7565b60405180910390f35b3480156102e957600080fd5b5061030460048036038101906102ff9190614bee565b610891565b604051610311919061504e565b60405180910390f35b34801561032657600080fd5b50610341600480360381019061033c9190614c81565b61096a565b60405161034e91906151d7565b60405180910390f35b34801561036357600080fd5b5061036c6109d8565b6040516103799190615283565b60405180910390f35b34801561038e57600080fd5b506103a960048036038101906103a49190614c41565b6109e1565b6040516103b6919061504e565b60405180910390f35b3480156103cb57600080fd5b506103d4610a94565b005b3480156103e257600080fd5b506103fd60048036038101906103f89190614b54565b610b2d565b005b34801561040b57600080fd5b5061042660048036038101906104219190614cae565b610c04565b60405161043391906151d7565b60405180910390f35b34801561044857600080fd5b50610463600480360381019061045e9190614b54565b610c93565b604051610470919061504e565b60405180910390f35b34801561048557600080fd5b506104a0600480360381019061049b9190614b54565b610ce9565b005b3480156104ae57600080fd5b506104b7610dc0565b005b3480156104c557600080fd5b506104e060048036038101906104db9190614b54565b610e58565b005b3480156104ee57600080fd5b506104f7610fbb565b005b34801561050557600080fd5b5061050e611054565b005b34801561051c57600080fd5b506105256110ed565b005b34801561053357600080fd5b5061054e60048036038101906105499190614b54565b611186565b60405161055b91906151d7565b60405180910390f35b34801561057057600080fd5b50610579611271565b005b34801561058757600080fd5b506105906113ab565b005b34801561059e57600080fd5b506105a7611444565b005b3480156105b557600080fd5b506105d060048036038101906105cb9190614b54565b6114dd565b6040516105dd919061504e565b60405180910390f35b3480156105f257600080fd5b5061060d60048036038101906106089190614b54565b6114fd565b60405161061a919061504e565b60405180910390f35b34801561062f57600080fd5b50610638611553565b6040516106459190614fa9565b60405180910390f35b34801561065a57600080fd5b5061066361157c565b60405161067091906150b5565b60405180910390f35b34801561068557600080fd5b506106a0600480360381019061069b9190614c41565b6115b9565b6040516106ad919061504e565b60405180910390f35b3480156106c257600080fd5b506106dd60048036038101906106d89190614c41565b611686565b6040516106ea919061504e565b60405180910390f35b3480156106ff57600080fd5b506107086116a4565b005b34801561071657600080fd5b50610731600480360381019061072c9190614bae565b61173d565b60405161073e91906151d7565b60405180910390f35b34801561075357600080fd5b5061075c6117c4565b60405161076991906151d7565b60405180910390f35b34801561077e57600080fd5b5061079960048036038101906107949190614b54565b6117ca565b005b3480156107a757600080fd5b506107b0611973565b005b3480156107be57600080fd5b506107c7611a60565b005b3480156107d557600080fd5b506107f060048036038101906107eb9190614c81565b611af8565b005b3480156107fe57600080fd5b5061081960048036038101906108149190614b54565b611bc0565b005b60606040518060400160405280600881526020017f5348494e4a4f4b49000000000000000000000000000000000000000000000000815250905090565b600061086c610865611d9d565b8484611da5565b6001905092915050565b60006c7e37be2022c0914b2680000000905090565b600b5481565b600061089e848484611f70565b61095f846108aa611d9d565b61095a8560405180606001604052806028815260200161584d60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610910611d9d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a119092919063ffffffff16565b611da5565b600190509392505050565b6000600d548211156109b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a890615117565b60405180910390fd5b60006109bb612a66565b90506109d08184611d8790919063ffffffff16565b915050919050565b60006012905090565b6000610a8a6109ee611d9d565b84610a8585600460006109ff611d9d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a9190919063ffffffff16565b611da5565b6001905092915050565b610a9c611d9d565b73ffffffffffffffffffffffffffffffffffffffff16610aba611553565b73ffffffffffffffffffffffffffffffffffffffff1614610b10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0790615197565b60405180910390fd5b6001601960176101000a81548160ff021916908315150217905550565b610b35611d9d565b73ffffffffffffffffffffffffffffffffffffffff16610b53611553565b73ffffffffffffffffffffffffffffffffffffffff1614610ba9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba090615197565b60405180910390fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006c7e37be2022c0914b2680000000831115610c56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4d906150f7565b60405180910390fd5b81610c76576000610c6684612aa7565b5050505050905080915050610c8d565b6000610c8184612aa7565b50505050915050809150505b92915050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610cf1611d9d565b73ffffffffffffffffffffffffffffffffffffffff16610d0f611553565b73ffffffffffffffffffffffffffffffffffffffff1614610d65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5c90615197565b60405180910390fd5b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610dc8611d9d565b73ffffffffffffffffffffffffffffffffffffffff16610de6611553565b73ffffffffffffffffffffffffffffffffffffffff1614610e3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3390615197565b60405180910390fd5b60006019806101000a81548160ff021916908315150217905550565b610e60611d9d565b73ffffffffffffffffffffffffffffffffffffffff16610e7e611553565b73ffffffffffffffffffffffffffffffffffffffff1614610ed4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecb90615197565b60405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610f60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5790615157565b60405180910390fd5b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610fc3611d9d565b73ffffffffffffffffffffffffffffffffffffffff16610fe1611553565b73ffffffffffffffffffffffffffffffffffffffff1614611037576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102e90615197565b60405180910390fd5b6000601960156101000a81548160ff021916908315150217905550565b61105c611d9d565b73ffffffffffffffffffffffffffffffffffffffff1661107a611553565b73ffffffffffffffffffffffffffffffffffffffff16146110d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c790615197565b60405180910390fd5b6000601960186101000a81548160ff021916908315150217905550565b6110f5611d9d565b73ffffffffffffffffffffffffffffffffffffffff16611113611553565b73ffffffffffffffffffffffffffffffffffffffff1614611169576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116090615197565b60405180910390fd5b6001601960156101000a81548160ff021916908315150217905550565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561122157600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061126c565b611269600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461096a565b90505b919050565b611279611d9d565b73ffffffffffffffffffffffffffffffffffffffff16611297611553565b73ffffffffffffffffffffffffffffffffffffffff16146112ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e490615197565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6113b3611d9d565b73ffffffffffffffffffffffffffffffffffffffff166113d1611553565b73ffffffffffffffffffffffffffffffffffffffff1614611427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141e90615197565b60405180910390fd5b6000601960176101000a81548160ff021916908315150217905550565b61144c611d9d565b73ffffffffffffffffffffffffffffffffffffffff1661146a611553565b73ffffffffffffffffffffffffffffffffffffffff16146114c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b790615197565b60405180910390fd5b6001601960186101000a81548160ff021916908315150217905550565b60096020528060005260406000206000915054906101000a900460ff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600881526020017f5348494e4a4f4b49000000000000000000000000000000000000000000000000815250905090565b600061167c6115c6611d9d565b846116778560405180606001604052806025815260200161587560259139600460006115f0611d9d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a119092919063ffffffff16565b611da5565b6001905092915050565b600061169a611693611d9d565b8484611f70565b6001905092915050565b6116ac611d9d565b73ffffffffffffffffffffffffffffffffffffffff166116ca611553565b73ffffffffffffffffffffffffffffffffffffffff1614611720576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171790615197565b60405180910390fd5b6001601960166101000a81548160ff021916908315150217905550565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b6117d2611d9d565b73ffffffffffffffffffffffffffffffffffffffff166117f0611553565b73ffffffffffffffffffffffffffffffffffffffff1614611846576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183d90615197565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ad90615177565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61197b611d9d565b73ffffffffffffffffffffffffffffffffffffffff16611999611553565b73ffffffffffffffffffffffffffffffffffffffff16146119ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e690615197565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051611a1590614f94565b60006040518083038185875af1925050503d8060008114611a52576040519150601f19603f3d011682016040523d82523d6000602084013e611a57565b606091505b50508091505050565b611a68611d9d565b73ffffffffffffffffffffffffffffffffffffffff16611a86611553565b73ffffffffffffffffffffffffffffffffffffffff1614611adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad390615197565b60405180910390fd5b60016019806101000a81548160ff021916908315150217905550565b611b00611d9d565b73ffffffffffffffffffffffffffffffffffffffff16611b1e611553565b73ffffffffffffffffffffffffffffffffffffffff1614611b74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6b90615197565b60405180910390fd5b6001601960146101000a81548160ff0219169083151502179055506015548111611ba257611ba181612b03565b5b6000601960146101000a81548160ff02191690831515021790555050565b611bc8611d9d565b73ffffffffffffffffffffffffffffffffffffffff16611be6611553565b73ffffffffffffffffffffffffffffffffffffffff1614611c3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3390615197565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611c8957600080fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611d16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0d90615137565b60405180910390fd5b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008183611d7f91906153bc565b905092915050565b60008183611d95919061538b565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611e15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0c906151b7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7c906150d7565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f6391906151d7565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611faa57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611fe457600080fd5b60008111611ff157600080fd5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561204857600080fd5b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615806120a3575042600b5411155b6120ac57600080fd5b6001151560198054906101000a900460ff1615151480156121175750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561213f576010548161212984611186565b61213391906152fe565b111561213e57600080fd5b5b60011515601960179054906101000a900460ff1615151480156121af5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156121ce576ba18f07d736b90be5500000008111156121cd57600080fd5b5b60011515601960189054906101000a900460ff16151514801561222457506121f4611553565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561227e5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561229257600081111561229157600080fd5b5b60011515601960169054906101000a900460ff161515141561262f576000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561234e57600080fd5b505afa158015612362573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123869190614b81565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156123e857600080fd5b505afa1580156123fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124209190614b81565b6040518363ffffffff1660e01b815260040161243d929190614fc4565b60206040518083038186803b15801561245557600080fd5b505afa158015612469573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061248d9190614b81565b601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555043600a819055506203f480426124e391906152fe565b600b81905550600160076000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601960176101000a81548160ff02191690831515021790555060016019806101000a81548160ff0219169083151502179055506000601960166101000a81548160ff021916908315150217905550505b612637611553565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156126c05750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156126cd5750600a5443145b1561276e576001600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fb90badc1cf1c52268f4fa9afb5276aebf640bcca3300cdfc9cf37db17daa13e260405160405180910390a25b600061277930611186565b9050601960149054906101000a900460ff161580156127e55750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80156127fd5750601960159054906101000a900460ff165b1561281557601a54811061281457612813612d5d565b5b5b600060019050600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128bc5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156128c657600090505b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612920575042600b54115b156129fe576005601160009054906101000a900460ff166129419190615416565b601160006101000a81548160ff021916908360ff1602179055506005601160049054906101000a900460ff166129779190615416565b601160046101000a81548160ff021916908360ff1602179055506005601160069054906101000a900460ff166129ad9190615416565b601160066101000a81548160ff021916908360ff1602179055506005601160089054906101000a900460ff166129e39190615416565b601160086101000a81548160ff021916908360ff1602179055505b612a0a85858584613031565b5050505050565b6000838311158290612a59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5091906150b5565b60405180910390fd5b5082840390509392505050565b6000806000612a73613342565b91509150612a8a8183611d8790919063ffffffff16565b9250505090565b60008183612a9f91906152fe565b905092915050565b6000806000806000806000806000612abe8a613621565b9250925092506000806000612adc8d8686612ad7612a66565b61367b565b9250925092508282828888889b509b509b509b509b509b5050505050505091939550919395565b6000600267ffffffffffffffff811115612b2057612b1f61562b565b5b604051908082528060200260200182016040528015612b4e5781602001602082028036833780820191505090505b509050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612bb957600080fd5b505afa158015612bcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bf19190614b81565b81600081518110612c0557612c046155fc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503081600181518110612c5457612c536155fc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de9583600084600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612d0861012c42612a9190919063ffffffff16565b6040518663ffffffff1660e01b8152600401612d279493929190615069565b6000604051808303818588803b158015612d4057600080fd5b505af1158015612d54573d6000803e3d6000fd5b50505050505050565b6001601960146101000a81548160ff0219169083151502179055506000601160029054906101000a900460ff1660ff1614612dca57612dc130600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601254611f70565b60006012819055505b6000612dd530611186565b90506000601554601454601354612dec91906152fe565b612df691906152fe565b90506000612e106002601454611d8790919063ffffffff16565b90506000612e27828561370490919063ffffffff16565b90506000479050612e378261371a565b6000612e4c824761370490919063ffffffff16565b90506000612e7786612e6960135485611d7190919063ffffffff16565b611d8790919063ffffffff16565b90506000612e8e828461370490919063ffffffff16565b9050600060148190555060006013819055506000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051612ee890614f94565b60006040518083038185875af1925050503d8060008114612f25576040519150601f19603f3d011682016040523d82523d6000602084013e612f2a565b606091505b50509050612f388783613980565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868389604051612f6b9392919061524c565b60405180910390a1600047111561300b57601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612fc290614f94565b60006040518083038185875af1925050503d8060008114612fff576040519150601f19603f3d011682016040523d82523d6000602084013e613004565b606091505b5050809150505b5050505050505050506000601960146101000a81548160ff021916908315150217905550565b8061303f5761303e613aa3565b5b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130e25750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156130f7576130f2848484613c9c565b61332e565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561319a5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156131af576131aa848484613efc565b61332d565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156132535750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156132685761326384848461415c565b61332c565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561330a5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561331f5761331a848484614327565b61332b565b61332a84848461415c565b5b5b5b5b8061333c5761333b61461c565b5b50505050565b6000806000600d54905060006c7e37be2022c0914b2680000000905060005b600c805490508110156135ce578260026000600c8481548110613387576133866155fc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061347557508160036000600c848154811061340d5761340c6155fc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561349757600d546c7e37be2022c0914b26800000009450945050505061361d565b61352760026000600c84815481106134b2576134b16155fc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461370490919063ffffffff16565b92506135b960036000600c8481548110613544576135436155fc565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361370490919063ffffffff16565b915080806135c690615555565b915050613361565b506135f16c7e37be2022c0914b2680000000600d54611d8790919063ffffffff16565b82101561361457600d546c7e37be2022c0914b268000000093509350505061361d565b81819350935050505b9091565b600080600080613630856146f0565b9050600061363d86614731565b9050600061366682613658858a61370490919063ffffffff16565b61370490919063ffffffff16565b90508083839550955095505050509193909250565b6000806000806136948589611d7190919063ffffffff16565b905060006136ab8689611d7190919063ffffffff16565b905060006136c28789611d7190919063ffffffff16565b905060006136eb826136dd858761370490919063ffffffff16565b61370490919063ffffffff16565b9050838184965096509650505050509450945094915050565b600081836137129190615451565b905092915050565b6000600267ffffffffffffffff8111156137375761373661562b565b5b6040519080825280602002602001820160405280156137655781602001602082028036833780820191505090505b509050308160008151811061377d5761377c6155fc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561381f57600080fd5b505afa158015613833573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138579190614b81565b8160018151811061386b5761386a6155fc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506138d230601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611da5565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947836000843061392a61012c42612a9190919063ffffffff16565b6040518663ffffffff1660e01b815260040161394a9594939291906151f2565b600060405180830381600087803b15801561396457600080fd5b505af1158015613978573d6000803e3d6000fd5b505050505050565b6139ad30601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611da5565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613a2961012c42612a9190919063ffffffff16565b6040518863ffffffff1660e01b8152600401613a4a96959493929190614fed565b6060604051808303818588803b158015613a6357600080fd5b505af1158015613a77573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613a9c9190614cee565b5050505050565b6000601160009054906101000a900460ff1660ff16148015613ad757506000601160049054906101000a900460ff1660ff16145b8015613af557506000601160069054906101000a900460ff1660ff16145b8015613b1357506000601160029054906101000a900460ff1660ff16145b8015613b3157506000601160089054906101000a900460ff1660ff16145b15613b3b57613c9a565b601160009054906101000a900460ff16601160016101000a81548160ff021916908360ff160217905550601160049054906101000a900460ff16601160056101000a81548160ff021916908360ff160217905550601160069054906101000a900460ff16601160076101000a81548160ff021916908360ff160217905550601160029054906101000a900460ff16601160036101000a81548160ff021916908360ff160217905550601160089054906101000a900460ff16601160096101000a81548160ff021916908360ff1602179055506000601160006101000a81548160ff021916908360ff1602179055506000601160046101000a81548160ff021916908360ff1602179055506000601160066101000a81548160ff021916908360ff1602179055506000601160026101000a81548160ff021916908360ff1602179055506000601160086101000a81548160ff021916908360ff1602179055505b565b600080600080600080613cae87612aa7565b955095509550955095509550613d0c87600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461370490919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613da186600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461370490919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e3685600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a9190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e82816147c0565b613e8c8483614ab1565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613ee991906151d7565b60405180910390a3505050505050505050565b600080600080600080613f0e87612aa7565b955095509550955095509550613f6c86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461370490919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061400183600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a9190919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061409685600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a9190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506140e2816147c0565b6140ec8483614ab1565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161414991906151d7565b60405180910390a3505050505050505050565b60008060008060008061416e87612aa7565b9550955095509550955095506141cc86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461370490919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061426185600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a9190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506142ad816147c0565b6142b78483614ab1565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161431491906151d7565b60405180910390a3505050505050505050565b60008060008060008061433987612aa7565b95509550955095509550955061439787600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461370490919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061442c86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461370490919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506144c183600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a9190919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061455685600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a9190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506145a2816147c0565b6145ac8483614ab1565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161460991906151d7565b60405180910390a3505050505050505050565b601160019054906101000a900460ff16601160006101000a81548160ff021916908360ff160217905550601160059054906101000a900460ff16601160046101000a81548160ff021916908360ff160217905550601160079054906101000a900460ff16601160066101000a81548160ff021916908360ff160217905550601160039054906101000a900460ff16601160026101000a81548160ff021916908360ff160217905550601160099054906101000a900460ff16601160086101000a81548160ff021916908360ff160217905550565b600061472a606461471c601160009054906101000a900460ff1660ff1685611d7190919063ffffffff16565b611d8790919063ffffffff16565b9050919050565b60006147b960646147ab601160089054906101000a900460ff16601160049054906101000a900460ff16601160029054906101000a900460ff16601160069054906101000a900460ff166147859190615354565b61478f9190615354565b6147999190615354565b60ff1685611d7190919063ffffffff16565b611d8790919063ffffffff16565b9050919050565b6011600a9054906101000a900460ff1660ff16601160029054906101000a900460ff1660ff16826147f191906153bc565b6147fb919061538b565b6012600082825461480c91906152fe565b925050819055506011600a9054906101000a900460ff1660ff16601160069054906101000a900460ff1660ff168261484491906153bc565b61484e919061538b565b6013600082825461485f91906152fe565b925050819055506011600a9054906101000a900460ff1660ff16601160049054906101000a900460ff1660ff168261489791906153bc565b6148a1919061538b565b601460008282546148b291906152fe565b925050819055506011600a9054906101000a900460ff1660ff16601160089054906101000a900460ff1660ff16826148ea91906153bc565b6148f4919061538b565b6015600082825461490591906152fe565b925050819055506000614916612a66565b9050600061492d8284611d7190919063ffffffff16565b905061498181600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a9190919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614aac57614a6883600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a9190919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b614ac682600d5461370490919063ffffffff16565b600d81905550614ae181600f54612a9190919063ffffffff16565b600f819055505050565b600081359050614afa81615807565b92915050565b600081519050614b0f81615807565b92915050565b600081359050614b248161581e565b92915050565b600081359050614b3981615835565b92915050565b600081519050614b4e81615835565b92915050565b600060208284031215614b6a57614b6961565a565b5b6000614b7884828501614aeb565b91505092915050565b600060208284031215614b9757614b9661565a565b5b6000614ba584828501614b00565b91505092915050565b60008060408385031215614bc557614bc461565a565b5b6000614bd385828601614aeb565b9250506020614be485828601614aeb565b9150509250929050565b600080600060608486031215614c0757614c0661565a565b5b6000614c1586828701614aeb565b9350506020614c2686828701614aeb565b9250506040614c3786828701614b2a565b9150509250925092565b60008060408385031215614c5857614c5761565a565b5b6000614c6685828601614aeb565b9250506020614c7785828601614b2a565b9150509250929050565b600060208284031215614c9757614c9661565a565b5b6000614ca584828501614b2a565b91505092915050565b60008060408385031215614cc557614cc461565a565b5b6000614cd385828601614b2a565b9250506020614ce485828601614b15565b9150509250929050565b600080600060608486031215614d0757614d0661565a565b5b6000614d1586828701614b3f565b9350506020614d2686828701614b3f565b9250506040614d3786828701614b3f565b9150509250925092565b6000614d4d8383614d68565b60208301905092915050565b614d62816154da565b82525050565b614d7181615485565b82525050565b614d8081615485565b82525050565b6000614d91826152ae565b614d9b81856152d1565b9350614da68361529e565b8060005b83811015614dd7578151614dbe8882614d41565b9750614dc9836152c4565b925050600181019050614daa565b5085935050505092915050565b614ded81615497565b82525050565b614dfc816154ec565b82525050565b6000614e0d826152b9565b614e1781856152ed565b9350614e27818560208601615522565b614e308161565f565b840191505092915050565b6000614e48601e836152ed565b9150614e5382615670565b602082019050919050565b6000614e6b601c836152ed565b9150614e7682615699565b602082019050919050565b6000614e8e601e836152ed565b9150614e99826156c2565b602082019050919050565b6000614eb16018836152ed565b9150614ebc826156eb565b602082019050919050565b6000614ed46018836152ed565b9150614edf82615714565b602082019050919050565b6000614ef7602b836152ed565b9150614f028261573d565b604082019050919050565b6000614f1a6025836152ed565b9150614f258261578c565b604082019050919050565b6000614f3d6000836152e2565b9150614f48826157db565b600082019050919050565b6000614f606020836152ed565b9150614f6b826157de565b602082019050919050565b614f7f816154c3565b82525050565b614f8e816154cd565b82525050565b6000614f9f82614f30565b9150819050919050565b6000602082019050614fbe6000830184614d77565b92915050565b6000604082019050614fd96000830185614d77565b614fe66020830184614d77565b9392505050565b600060c0820190506150026000830189614d77565b61500f6020830188614f76565b61501c6040830187614df3565b6150296060830186614df3565b6150366080830185614d59565b61504360a0830184614f76565b979650505050505050565b60006020820190506150636000830184614de4565b92915050565b600060808201905061507e6000830187614df3565b81810360208301526150908186614d86565b905061509f6040830185614d77565b6150ac6060830184614f76565b95945050505050565b600060208201905081810360008301526150cf8184614e02565b905092915050565b600060208201905081810360008301526150f081614e3b565b9050919050565b6000602082019050818103600083015261511081614e5e565b9050919050565b6000602082019050818103600083015261513081614e81565b9050919050565b6000602082019050818103600083015261515081614ea4565b9050919050565b6000602082019050818103600083015261517081614ec7565b9050919050565b6000602082019050818103600083015261519081614eea565b9050919050565b600060208201905081810360008301526151b081614f0d565b9050919050565b600060208201905081810360008301526151d081614f53565b9050919050565b60006020820190506151ec6000830184614f76565b92915050565b600060a0820190506152076000830188614f76565b6152146020830187614df3565b81810360408301526152268186614d86565b90506152356060830185614d77565b6152426080830184614f76565b9695505050505050565b60006060820190506152616000830186614f76565b61526e6020830185614f76565b61527b6040830184614f76565b949350505050565b60006020820190506152986000830184614f85565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000615309826154c3565b9150615314836154c3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156153495761534861559e565b5b828201905092915050565b600061535f826154cd565b915061536a836154cd565b92508260ff038211156153805761537f61559e565b5b828201905092915050565b6000615396826154c3565b91506153a1836154c3565b9250826153b1576153b06155cd565b5b828204905092915050565b60006153c7826154c3565b91506153d2836154c3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561540b5761540a61559e565b5b828202905092915050565b6000615421826154cd565b915061542c836154cd565b92508160ff04831182151516156154465761544561559e565b5b828202905092915050565b600061545c826154c3565b9150615467836154c3565b92508282101561547a5761547961559e565b5b828203905092915050565b6000615490826154a3565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006154e5826154fe565b9050919050565b60006154f7826154c3565b9050919050565b600061550982615510565b9050919050565b600061551b826154a3565b9050919050565b60005b83811015615540578082015181840152602081019050615525565b8381111561554f576000848401525b50505050565b6000615560826154c3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156155935761559261559e565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a20617070726f766520746f207a65726f20616464726573730000600082015250565b7f416d74206d757374206265206c657373207468616e20737570706c7900000000600082015250565b7f416d74206d757374206265206c657373207468616e20746f74207265666c0000600082015250565b7f7573657220616c726561647920626c61636b6c69737465640000000000000000600082015250565b7f7573657220616c72656164792077686974656c69737465640000000000000000600082015250565b7f45524332304f776e61626c653a206e6577206f776e657220697320746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f45524332304f776e61626c653a2063616c6c6572206973206e6f74207468652060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d207a65726f2061646472657373600082015250565b61581081615485565b811461581b57600080fd5b50565b61582781615497565b811461583257600080fd5b50565b61583e816154c3565b811461584957600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220487594cb4c1e5dae91253d9f539e7819df91600f8a0204f94e88e4048c36a71864736f6c63430008070033
Deployed Bytecode Sourcemap
12889:20957:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16196:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17123:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16496:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13516:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17290:329;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18750:241;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16398:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17625:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29098:78;;;;;;;;;;;;;:::i;:::-;;22667:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18300:444;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22784:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26444:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29358:86;;;;;;;;;;;;;:::i;:::-;;26289:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28999:93;;;;;;;;;;;;;:::i;:::-;;29661:82;;;;;;;;;;;;;:::i;:::-;;28902:91;;;;;;;;;;;;;:::i;:::-;;16597:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;744:148;;;;;;;;;;;;;:::i;:::-;;29182:80;;;;;;;;;;;;;:::i;:::-;;29579:76;;;;;;;;;;;;;:::i;:::-;;13425:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18174:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;516:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16295:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17849:319;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16801:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28820:76;;;;;;;;;;;;;:::i;:::-;;16974:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13472:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;900:249;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29749:160;;;;;;;;;;;;;:::i;:::-;;29268:84;;;;;;;;;;;;;:::i;:::-;;25382:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26066:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16196:93;16242:13;16275:6;;;;;;;;;;;;;;;;;16268:13;;16196:93;:::o;17123:161::-;17198:4;17215:39;17224:12;:10;:12::i;:::-;17238:7;17247:6;17215:8;:39::i;:::-;17272:4;17265:11;;17123:161;;;;:::o;16496:95::-;16549:7;13674:13;16569:14;;16496:95;:::o;13516:33::-;;;;:::o;17290:329::-;17386:4;17403:36;17413:6;17421:9;17432:6;17403:9;:36::i;:::-;17450:139;17459:6;17466:12;:10;:12::i;:::-;17489:89;17527:6;17489:89;;;;;;;;;;;;;;;;;:11;:19;17501:6;17489:19;;;;;;;;;;;;;;;:33;17509:12;:10;:12::i;:::-;17489:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;17450:8;:139::i;:::-;17607:4;17600:11;;17290:329;;;;;:::o;18750:241::-;18817:7;18856;;18845;:18;;18837:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;18909:19;18931:10;:8;:10::i;:::-;18909:32;;18959:24;18971:11;18959:7;:11;;:24;;;;:::i;:::-;18952:31;;;18750:241;;;:::o;16398:92::-;16448:5;14026:2;16466:16;;16398:92;:::o;17625:218::-;17713:4;17730:83;17739:12;:10;:12::i;:::-;17753:7;17762:50;17801:10;17762:11;:25;17774:12;:10;:12::i;:::-;17762:25;;;;;;;;;;;;;;;:34;17788:7;17762:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;17730:8;:83::i;:::-;17831:4;17824:11;;17625:218;;;;:::o;29098:78::-;662:12;:10;:12::i;:::-;651:23;;:7;:5;:7::i;:::-;:23;;;643:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;29164:4:::1;29151:10;;:17;;;;;;;;;;;;;;;;;;29098:78::o:0;22667:111::-;662:12;:10;:12::i;:::-;651:23;;:7;:5;:7::i;:::-;:23;;;643:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;22766:4:::1;22736:18;:27;22755:7;22736:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;22667:111:::0;:::o;18300:444::-;18391:7;13674:13;18419:7;:18;;18411:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;18486:17;18481:256;;18521:15;18550:19;18561:7;18550:10;:19::i;:::-;18520:49;;;;;;;18591:7;18584:14;;;;;18481:256;18634:23;18669:19;18680:7;18669:10;:19::i;:::-;18631:57;;;;;;;18710:15;18703:22;;;18300:444;;;;;:::o;22784:124::-;22849:4;22873:18;:27;22892:7;22873:27;;;;;;;;;;;;;;;;;;;;;;;;;22866:34;;22784:124;;;:::o;26444:110::-;662:12;:10;:12::i;:::-;651:23;;:7;:5;:7::i;:::-;:23;;;643:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;26541:5:::1;26518:11;:20;26530:7;26518:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;26444:110:::0;:::o;29358:86::-;662:12;:10;:12::i;:::-;651:23;;:7;:5;:7::i;:::-;:23;;;643:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;29431:5:::1;29416:12;::::0;:20:::1;;;;;;;;;;;;;;;;;;29358:86::o:0;26289:152::-;662:12;:10;:12::i;:::-;651:23;;:7;:5;:7::i;:::-;:23;;;643:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;26359:6:::1;:13;26366:5;26359:13;;;;;;;;;;;;;;;;;;;;;;;;;26351:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;26428:5;26412:6;:13;26419:5;26412:13;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;26289:152:::0;:::o;28999:93::-;662:12;:10;:12::i;:::-;651:23;;:7;:5;:7::i;:::-;:23;;;643:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;29079:5:::1;29055:21;;:29;;;;;;;;;;;;;;;;;;28999:93::o:0;29661:82::-;662:12;:10;:12::i;:::-;651:23;;:7;:5;:7::i;:::-;:23;;;643:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;29730:5:::1;29717:10;;:18;;;;;;;;;;;;;;;;;;29661:82::o:0;28902:91::-;662:12;:10;:12::i;:::-;651:23;;:7;:5;:7::i;:::-;:23;;;643:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;28981:4:::1;28957:21;;:28;;;;;;;;;;;;;;;;;;28902:91::o:0;16597:198::-;16663:7;16687:11;:20;16699:7;16687:20;;;;;;;;;;;;;;;;;;;;;;;;;16683:49;;;16716:7;:16;16724:7;16716:16;;;;;;;;;;;;;;;;16709:23;;;;16683:49;16750:37;16770:7;:16;16778:7;16770:16;;;;;;;;;;;;;;;;16750:19;:37::i;:::-;16743:44;;16597:198;;;;:::o;744:148::-;662:12;:10;:12::i;:::-;651:23;;:7;:5;:7::i;:::-;:23;;;643:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;851:1:::1;814:40;;835:6;::::0;::::1;;;;;;;;814:40;;;;;;;;;;;;882:1;865:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;744:148::o:0;29182:80::-;662:12;:10;:12::i;:::-;651:23;;:7;:5;:7::i;:::-;:23;;;643:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;29249:5:::1;29236:10;;:18;;;;;;;;;;;;;;;;;;29182:80::o:0;29579:76::-;662:12;:10;:12::i;:::-;651:23;;:7;:5;:7::i;:::-;:23;;;643:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;29643:4:::1;29630:10;;:17;;;;;;;;;;;;;;;;;;29579:76::o:0;13425:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;18174:120::-;18242:4;18266:11;:20;18278:7;18266:20;;;;;;;;;;;;;;;;;;;;;;;;;18259:27;;18174:120;;;:::o;516:87::-;562:7;589:6;;;;;;;;;;;582:13;;516:87;:::o;16295:97::-;16343:13;16376:8;;;;;;;;;;;;;;;;;16369:15;;16295:97;:::o;17849:319::-;17942:4;17959:179;17982:12;:10;:12::i;:::-;18009:7;18031:96;18070:15;18031:96;;;;;;;;;;;;;;;;;:11;:25;18043:12;:10;:12::i;:::-;18031:25;;;;;;;;;;;;;;;:34;18057:7;18031:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;17959:8;:179::i;:::-;18156:4;18149:11;;17849:319;;;;:::o;16801:167::-;16879:4;16896:42;16906:12;:10;:12::i;:::-;16920:9;16931:6;16896:9;:42::i;:::-;16956:4;16949:11;;16801:167;;;;:::o;28820:76::-;662:12;:10;:12::i;:::-;651:23;;:7;:5;:7::i;:::-;:23;;;643:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;28884:4:::1;28870:11;;:18;;;;;;;;;;;;;;;;;;28820:76::o:0;16974:143::-;17055:7;17082:11;:18;17094:5;17082:18;;;;;;;;;;;;;;;:27;17101:7;17082:27;;;;;;;;;;;;;;;;17075:34;;16974:143;;;;:::o;13472:37::-;;;;:::o;900:249::-;662:12;:10;:12::i;:::-;651:23;;:7;:5;:7::i;:::-;:23;;;643:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1009:1:::1;989:22;;:8;:22;;;;981:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;1104:8;1075:38;;1096:6;::::0;::::1;;;;;;;;1075:38;;;;;;;;;;;;1133:8;1124:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;900:249:::0;:::o;29749:160::-;662:12;:10;:12::i;:::-;651:23;;:7;:5;:7::i;:::-;:23;;;643:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;29807:12:::1;29851:10;29843:24;;29875:21;29843:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29830:71;;;;;29796:113;29749:160::o:0;29268:84::-;662:12;:10;:12::i;:::-;651:23;;:7;:5;:7::i;:::-;:23;;;643:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;29340:4:::1;29325:12;::::0;:19:::1;;;;;;;;;;;;;;;;;;29268:84::o:0;25382:166::-;662:12;:10;:12::i;:::-;651:23;;:7;:5;:7::i;:::-;:23;;;643:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;15447:4:::1;15428:16;;:23;;;;;;;;;;;;;;;;;;25475:13:::2;;25465:6;:23;25461:80;;25505:24;25522:6;25505:16;:24::i;:::-;25461:80;15493:5:::1;15474:16;;:24;;;;;;;;;;;;;;;;;;25382:166:::0;:::o;26066:220::-;662:12;:10;:12::i;:::-;651:23;;:7;:5;:7::i;:::-;:23;;;643:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;26142:42:::1;26133:51;;:5;:51;;;;26125:60;;;::::0;::::1;;26205:6;:13;26212:5;26205:13;;;;;;;;;;;;;;;;;;;;;;;;;26204:14;26196:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;26274:4;26258:6;:13;26265:5;26258:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;26066:220:::0;:::o;2880:98::-;2938:7;2969:1;2965;:5;;;;:::i;:::-;2958:12;;2880:98;;;;:::o;2984:::-;3042:7;3073:1;3069;:5;;;;:::i;:::-;3062:12;;2984:98;;;;:::o;89:::-;142:7;169:10;162:17;;89:98;:::o;22914:325::-;23022:1;23005:19;;:5;:19;;;;22997:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23099:1;23080:21;;:7;:21;;;;23072:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23177:6;23147:11;:18;23159:5;23147:18;;;;;;;;;;;;;;;:27;23166:7;23147:27;;;;;;;;;;;;;;;:36;;;;23215:7;23199:32;;23208:5;23199:32;;;23224:6;23199:32;;;;;;:::i;:::-;;;;;;;;22914:325;;;:::o;23245:2131::-;23347:1;23331:18;;:4;:18;;;;23323:27;;;;;;23383:1;23369:16;;:2;:16;;;;23361:25;;;;;;23414:1;23405:6;:10;23397:19;;;;;;23430:6;:12;23437:4;23430:12;;;;;;;;;;;;;;;;;;;;;;;;;23429:13;23421:22;;;;;;23457:11;:17;23469:4;23457:17;;;;;;;;;;;;;;;;;;;;;;;;;23456:18;:59;;;;23500:15;23478:18;;:37;;23456:59;23448:68;;;;;;23541:4;23525:20;;:12;;;;;;;;;;:20;;;:47;;;;;23551:17;:21;23569:2;23551:21;;;;;;;;;;;;;;;;;;;;;;;;;23549:23;23525:47;23521:129;;;23623:14;;23613:6;23597:13;23607:2;23597:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;23589:49;;;;;;23521:129;23678:4;23664:18;;:10;;;;;;;;;;;:18;;;:39;;;;;23694:9;;;;;;;;;;;23686:17;;:4;:17;;;23664:39;23660:96;;;23729:20;23719:6;:30;;23711:39;;;;;;23660:96;23778:4;23764:18;;:10;;;;;;;;;;;:18;;;:35;;;;;23792:7;:5;:7::i;:::-;23786:13;;:2;:13;;;;23764:35;:56;;;;;23811:9;;;;;;;;;;;23803:17;;:4;:17;;;;23764:56;23760:103;;;23846:10;23836:6;:20;;23828:29;;;;;;23760:103;23891:4;23876:19;;:11;;;;;;;;;;;:19;;;23873:630;;;23912:31;23965:42;23912:96;;24037:12;24023:11;;:26;;;;;;;;;;;;;;;;;;24094:12;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24076:49;;;24134:4;24141:12;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24076:85;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24064:9;;:97;;;;;;;;;;;;;;;;;;24197:12;24176:18;:33;;;;24263:8;24245:15;:26;;;;:::i;:::-;24224:18;:47;;;;24326:4;24286:17;:37;24312:9;;;;;;;;;;;24286:37;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;24387:4;24345:17;:39;24371:11;;;;;;;;;;;24345:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;24419:4;24406:10;;:17;;;;;;;;;;;;;;;;;;24453:4;24438:12;;:19;;;;;;;;;;;;;;;;;;24486:5;24472:11;;:19;;;;;;;;;;;;;;;;;;23897:606;23873:630;24518:7;:5;:7::i;:::-;24510:15;;:4;:15;;;;:34;;;;;24535:9;;;;;;;;;;;24529:15;;:2;:15;;;;24510:34;:72;;;;;24564:18;;24548:12;:34;24510:72;24507:145;;;24607:4;24589:11;:15;24601:2;24589:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;24643:2;24631:15;;;;;;;;;;;;24507:145;24662:28;24693:24;24711:4;24693:9;:24::i;:::-;24662:55;;24733:16;;;;;;;;;;;24732:17;:36;;;;;24759:9;;;;;;;;;;;24753:15;;:2;:15;;;24732:36;:61;;;;;24772:21;;;;;;;;;;;24732:61;24728:188;;;24838:29;;24814:20;:53;24810:95;;24876:13;:11;:13::i;:::-;24810:95;24728:188;24926:12;24941:4;24926:19;;24960:18;:24;24979:4;24960:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;24988:18;:22;25007:2;24988:22;;;;;;;;;;;;;;;;;;;;;;;;;24960:50;24956:98;;;25037:5;25027:15;;24956:98;25061:11;:17;25073:4;25061:17;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;;25103:15;25082:18;;:36;25061:57;25058:259;;;25162:1;25152:7;;;;;;;;;;;:11;;;;:::i;:::-;25142:7;;:21;;;;;;;;;;;;;;;;;;25206:1;25196:7;;;;;;;;;;;:11;;;;:::i;:::-;25186:7;;:21;;;;;;;;;;;;;;;;;;25250:1;25240:7;;;;;;;;;;;:11;;;;:::i;:::-;25230:7;;:21;;;;;;;;;;;;;;;;;;25296:1;25285:8;;;;;;;;;;;:12;;;;:::i;:::-;25274:8;;:23;;;;;;;;;;;;;;;;;;25058:259;25327:41;25342:4;25348:2;25352:6;25360:7;25327:14;:41::i;:::-;23312:2064;;23245:2131;;;:::o;3192:206::-;3278:7;3336:1;3331;:6;;3339:12;3323:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3378:1;3374;:5;3367:12;;3192:206;;;;;:::o;20368:164::-;20410:7;20431:15;20448;20467:19;:17;:19::i;:::-;20430:56;;;;20504:20;20516:7;20504;:11;;:20;;;;:::i;:::-;20497:27;;;;20368:164;:::o;2672:98::-;2730:7;2761:1;2757;:5;;;;:::i;:::-;2750:12;;2672:98;;;;:::o;19185:414::-;19244:7;19252;19260;19268;19276;19284;19305:23;19330:12;19344:18;19366:20;19378:7;19366:11;:20::i;:::-;19304:82;;;;;;19398:15;19415:23;19440:12;19456:50;19468:7;19477:4;19483:10;19495;:8;:10::i;:::-;19456:11;:50::i;:::-;19397:109;;;;;;19525:7;19534:15;19551:4;19557:15;19574:4;19580:10;19517:74;;;;;;;;;;;;;;;;;;19185:414;;;;;;;:::o;25554:509::-;25675:21;25713:1;25699:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25675:40;;25736:11;;;;;;;;;;;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25726:4;25731:1;25726:7;;;;;;;;:::i;:::-;;;;;;;:28;;;;;;;;;;;25783:4;25765;25770:1;25765:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;25827:11;;;;;;;;;;;:62;;;25897:6;25919:1;25966:4;25985;;;;;;;;;;;26020:24;26040:3;26020:15;:19;;:24;;;;:::i;:::-;25827:228;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25604:459;25554:509;:::o;26557:1291::-;15447:4;15428:16;;:23;;;;;;;;;;;;;;;;;;26626:1:::1;26614:8;;;;;;;;;;;:13;;;26611:116;;26644:42;26662:4;26669;;;;;;;;;;;26675:10;;26644:9;:42::i;:::-;26714:1;26701:10;:14;;;;26611:116;26737:23;26763:24;26781:4;26763:9;:24::i;:::-;26737:50;;26798:25;26862:13;;26844:15;;26826;;:33;;;;:::i;:::-;:49;;;;:::i;:::-;26798:77;;26935:26;26964:22;26984:1;26964:15;;:19;;:22;;;;:::i;:::-;26935:51;;26997:26;27026:39;27046:18;27026:15;:19;;:39;;;;:::i;:::-;26997:68;;27076:25;27104:21;27076:49;;27136:36;27153:18;27136:16;:36::i;:::-;27184:18;27205:44;27231:17;27205:21;:25;;:44;;;;:::i;:::-;27184:65;;27260:23;27286:54;27322:17;27286:31;27301:15;;27286:10;:14;;:31;;;;:::i;:::-;:35;;:54;;;;:::i;:::-;27260:80;;27351:23;27377:31;27392:15;27377:10;:14;;:31;;;;:::i;:::-;27351:57;;27437:1;27419:15;:19;;;;27467:1;27449:15;:19;;;;27480:12;27505:9;;;;;;;;;;;27497:23;;27528:15;27497:51;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27479:69;;;27559:49;27572:18;27592:15;27559:12;:49::i;:::-;27624:71;27639:18;27659:15;27676:18;27624:71;;;;;;;;:::i;:::-;;;;;;;;27733:10;27709:21;:34;27706:135;;;27780:9;;;;;;;;;;;27772:23;;27803:21;27772:57;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27759:70;;;;;27706:135;26600:1248;;;;;;;;;15493:5:::0;15474:16;;:24;;;;;;;;;;;;;;;;;;26557:1291::o;29915:788::-;30025:7;30020:28;;30034:14;:12;:14::i;:::-;30020:28;30063:11;:19;30075:6;30063:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;30087:11;:22;30099:9;30087:22;;;;;;;;;;;;;;;;;;;;;;;;;30086:23;30063:46;30059:597;;;30126:48;30148:6;30156:9;30167:6;30126:21;:48::i;:::-;30059:597;;;30197:11;:19;30209:6;30197:19;;;;;;;;;;;;;;;;;;;;;;;;;30196:20;:46;;;;;30220:11;:22;30232:9;30220:22;;;;;;;;;;;;;;;;;;;;;;;;;30196:46;30192:464;;;30259:46;30279:6;30287:9;30298:6;30259:19;:46::i;:::-;30192:464;;;30328:11;:19;30340:6;30328:19;;;;;;;;;;;;;;;;;;;;;;;;;30327:20;:47;;;;;30352:11;:22;30364:9;30352:22;;;;;;;;;;;;;;;;;;;;;;;;;30351:23;30327:47;30323:333;;;30391:44;30409:6;30417:9;30428:6;30391:17;:44::i;:::-;30323:333;;;30457:11;:19;30469:6;30457:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;30480:11;:22;30492:9;30480:22;;;;;;;;;;;;;;;;;;;;;;;;;30457:45;30453:203;;;30519:48;30541:6;30549:9;30560:6;30519:21;:48::i;:::-;30453:203;;;30600:44;30618:6;30626:9;30637:6;30600:17;:44::i;:::-;30453:203;30323:333;30192:464;30059:597;30671:7;30666:29;;30680:15;:13;:15::i;:::-;30666:29;29915:788;;;;:::o;20538:556::-;20589:7;20598;20618:15;20636:7;;20618:25;;20654:15;13674:13;20654:25;;20695:9;20690:289;20714:9;:16;;;;20710:1;:20;20690:289;;;20780:7;20756;:21;20764:9;20774:1;20764:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20756:21;;;;;;;;;;;;;;;;:31;:66;;;;20815:7;20791;:21;20799:9;20809:1;20799:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20791:21;;;;;;;;;;;;;;;;:31;20756:66;20752:97;;;20832:7;;13674:13;20824:25;;;;;;;;;20752:97;20874:34;20886:7;:21;20894:9;20904:1;20894:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20886:21;;;;;;;;;;;;;;;;20874:7;:11;;:34;;;;:::i;:::-;20864:44;;20933:34;20945:7;:21;20953:9;20963:1;20953:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20945:21;;;;;;;;;;;;;;;;20933:7;:11;;:34;;;;:::i;:::-;20923:44;;20732:3;;;;;:::i;:::-;;;;20690:289;;;;21003:20;13674:13;21003:7;;:11;;:20;;;;:::i;:::-;20993:7;:30;20989:61;;;21033:7;;13674:13;21025:25;;;;;;;;20989:61;21069:7;21078;21061:25;;;;;;20538:556;;;:::o;19605:327::-;19664:7;19672;19680;19700:12;19715:24;19731:7;19715:15;:24::i;:::-;19700:39;;19750:18;19771:30;19793:7;19771:21;:30::i;:::-;19750:51;;19812:23;19838:33;19860:10;19838:17;19850:4;19838:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;19812:59;;19890:15;19907:4;19913:10;19882:42;;;;;;;;;19605:327;;;;;:::o;19938:424::-;20050:7;20058;20066;20086:15;20104:24;20116:11;20104:7;:11;;:24;;;;:::i;:::-;20086:42;;20139:12;20154:21;20163:11;20154:4;:8;;:21;;;;:::i;:::-;20139:36;;20186:18;20207:27;20222:11;20207:10;:14;;:27;;;;:::i;:::-;20186:48;;20245:23;20271:33;20293:10;20271:17;20283:4;20271:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;20245:59;;20323:7;20332:15;20349:4;20315:39;;;;;;;;;;19938:424;;;;;;;;:::o;2776:98::-;2834:7;2865:1;2861;:5;;;;:::i;:::-;2854:12;;2776:98;;;;:::o;27856:496::-;27922:21;27960:1;27946:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27922:40;;27991:4;27973;27978:1;27973:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;28017:11;;;;;;;;;;;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28007:4;28012:1;28007:7;;;;;;;;:::i;:::-;;;;;;;:28;;;;;;;;;;;28046:58;28063:4;28078:11;;;;;;;;;;;28092;28046:8;:58::i;:::-;28115:11;;;;;;;;;;;:62;;;28192:11;28218:1;28262:4;28289;28309:24;28329:3;28309:15;:19;;:24;;;;:::i;:::-;28115:229;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27911:441;27856:496;:::o;28358:418::-;28439:58;28456:4;28471:11;;;;;;;;;;;28485;28439:8;:58::i;:::-;28508:11;;;;;;;;;;;:27;;;28543:9;28576:4;28596:11;28622:1;28665;28708:10;;;;;;;;;;;28733:24;28753:3;28733:15;:19;;:24;;;;:::i;:::-;28508:260;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;28358:418;;:::o;21987:442::-;22045:1;22034:7;;;;;;;;;;;:12;;;:28;;;;;22061:1;22050:7;;;;;;;;;;;:12;;;22034:28;:44;;;;;22077:1;22066:7;;;;;;;;;;;:12;;;22034:44;:61;;;;;22094:1;22082:8;;;;;;;;;;;:13;;;22034:61;:78;;;;;22111:1;22099:8;;;;;;;;;;;:13;;;22034:78;22030:91;;;22114:7;;22030:91;22151:7;;;;;;;;;;;22133:15;;:25;;;;;;;;;;;;;;;;;;22187:7;;;;;;;;;;;22169:15;;:25;;;;;;;;;;;;;;;;;;22223:7;;;;;;;;;;;22205:15;;:25;;;;;;;;;;;;;;;;;;22261:8;;;;;;;;;;;22241:17;;:28;;;;;;;;;;;;;;;;;;22299:8;;;;;;;;;;;22280:16;;:27;;;;;;;;;;;;;;;;;;22330:1;22320:7;;:11;;;;;;;;;;;;;;;;;;22352:1;22342:7;;:11;;;;;;;;;;;;;;;;;;22374:1;22364:7;;:11;;;;;;;;;;;;;;;;;;22397:1;22386:8;;:12;;;;;;;;;;;;;;;;;;22420:1;22409:8;;:12;;;;;;;;;;;;;;;;;;21987:442;:::o;31972:650::-;32087:15;32117:23;32155:12;32182:23;32220:12;32247:18;32279:19;32290:7;32279:10;:19::i;:::-;32072:226;;;;;;;;;;;;32327:28;32347:7;32327;:15;32335:6;32327:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;32309:7;:15;32317:6;32309:15;;;;;;;;;;;;;;;:46;;;;32384:28;32404:7;32384;:15;32392:6;32384:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;32366:7;:15;32374:6;32366:15;;;;;;;;;;;;;;;:46;;;;32444:39;32467:15;32444:7;:18;32452:9;32444:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;32423:7;:18;32431:9;32423:18;;;;;;;;;;;;;;;:60;;;;32494:26;32509:10;32494:14;:26::i;:::-;32531:23;32543:4;32549;32531:11;:23::i;:::-;32587:9;32570:44;;32579:6;32570:44;;;32598:15;32570:44;;;;;;:::i;:::-;;;;;;;;32061:561;;;;;;31972:650;;;:::o;31304:662::-;31417:15;31447:23;31485:12;31512:23;31550:12;31577:18;31609:19;31620:7;31609:10;:19::i;:::-;31402:226;;;;;;;;;;;;31657:28;31677:7;31657;:15;31665:6;31657:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;31639:7;:15;31647:6;31639:15;;;;;;;;;;;;;;;:46;;;;31717:39;31740:15;31717:7;:18;31725:9;31717:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;31696:7;:18;31704:9;31696:18;;;;;;;;;;;;;;;:60;;;;31788:39;31811:15;31788:7;:18;31796:9;31788:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;31767:7;:18;31775:9;31767:18;;;;;;;;;;;;;;;:60;;;;31838:26;31853:10;31838:14;:26::i;:::-;31875:23;31887:4;31893;31875:11;:23::i;:::-;31931:9;31914:44;;31923:6;31914:44;;;31942:15;31914:44;;;;;;:::i;:::-;;;;;;;;31391:575;;;;;;31304:662;;;:::o;30709:589::-;30820:15;30850:23;30888:12;30915:23;30953:12;30980:18;31012:19;31023:7;31012:10;:19::i;:::-;30805:226;;;;;;;;;;;;31060:28;31080:7;31060;:15;31068:6;31060:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;31042:7;:15;31050:6;31042:15;;;;;;;;;;;;;;;:46;;;;31120:39;31143:15;31120:7;:18;31128:9;31120:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;31099:7;:18;31107:9;31099:18;;;;;;;;;;;;;;;:60;;;;31170:26;31185:10;31170:14;:26::i;:::-;31207:23;31219:4;31225;31207:11;:23::i;:::-;31263:9;31246:44;;31255:6;31246:44;;;31274:15;31246:44;;;;;;:::i;:::-;;;;;;;;30794:504;;;;;;30709:589;;;:::o;32628:721::-;32743:15;32773:23;32811:12;32838:23;32876:12;32903:18;32935:19;32946:7;32935:10;:19::i;:::-;32728:226;;;;;;;;;;;;32983:28;33003:7;32983;:15;32991:6;32983:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;32965:7;:15;32973:6;32965:15;;;;;;;;;;;;;;;:46;;;;33040:28;33060:7;33040;:15;33048:6;33040:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;33022:7;:15;33030:6;33022:15;;;;;;;;;;;;;;;:46;;;;33100:39;33123:15;33100:7;:18;33108:9;33100:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;33079:7;:18;33087:9;33079:18;;;;;;;;;;;;;;;:60;;;;33171:39;33194:15;33171:7;:18;33179:9;33171:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;33150:7;:18;33158:9;33150:18;;;;;;;;;;;;;;;:60;;;;33221:26;33236:10;33221:14;:26::i;:::-;33258:23;33270:4;33276;33258:11;:23::i;:::-;33314:9;33297:44;;33306:6;33297:44;;;33325:15;33297:44;;;;;;:::i;:::-;;;;;;;;32717:632;;;;;;32628:721;;;:::o;22435:226::-;22489:15;;;;;;;;;;;22479:7;;:25;;;;;;;;;;;;;;;;;;22525:15;;;;;;;;;;;22515:7;;:25;;;;;;;;;;;;;;;;;;22561:15;;;;;;;;;;;22551:7;;:25;;;;;;;;;;;;;;;;;;22598:17;;;;;;;;;;;22587:8;;:28;;;;;;;;;;;;;;;;;;22637:16;;;;;;;;;;;22626:8;;:27;;;;;;;;;;;;;;;;;;22435:226::o;21677:130::-;21741:7;21768:31;21793:5;21768:20;21780:7;;;;;;;;;;;21768:20;;:7;:11;;:20;;;;:::i;:::-;:24;;:31;;;;:::i;:::-;21761:38;;21677:130;;;:::o;21813:168::-;21883:7;21910:63;21967:5;21910:52;21953:8;;;;;;;;;;;21943:7;;;;;;;;;;;21932:8;;;;;;;;;;;21922:7;;;;;;;;;;;:18;;;;:::i;:::-;:28;;;;:::i;:::-;:39;;;;:::i;:::-;21910:52;;:7;:11;;:52;;;;:::i;:::-;:56;;:63;;;;:::i;:::-;21903:70;;21813:168;;;:::o;21100:571::-;21201:7;;;;;;;;;;;21177:31;;21190:8;;;;;;;;;;;21177:21;;:10;:21;;;;:::i;:::-;:31;;;;:::i;:::-;21163:10;;:45;;;;;;;:::i;:::-;;;;;;;;21261:7;;;;;;;;;;;21238:30;;21251:7;;;;;;;;;;;21238:20;;:10;:20;;;;:::i;:::-;:30;;;;:::i;:::-;21219:15;;:49;;;;;;;:::i;:::-;;;;;;;;21315:7;;;;;;;;;;;21292:30;;21305:7;;;;;;;;;;;21292:20;;:10;:20;;;;:::i;:::-;:30;;;;:::i;:::-;21273:15;;:49;;;;;;;:::i;:::-;;;;;;;;21374:7;;;;;;;;;;;21350:31;;21363:8;;;;;;;;;;;21350:21;;:10;:21;;;;:::i;:::-;:31;;;;:::i;:::-;21333:13;;:48;;;;;;;:::i;:::-;;;;;;;;21392:19;21414:10;:8;:10::i;:::-;21392:32;;21435:18;21456:27;21471:11;21456:10;:14;;:27;;;;:::i;:::-;21435:48;;21519:38;21546:10;21519:7;:22;21535:4;21519:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;21494:7;:22;21510:4;21494:22;;;;;;;;;;;;;;;:63;;;;21572:11;:26;21592:4;21572:26;;;;;;;;;;;;;;;;;;;;;;;;;21568:95;;;21625:38;21652:10;21625:7;:22;21641:4;21625:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;21600:7;:22;21616:4;21600:22;;;;;;;;;;;;;;;:63;;;;21568:95;21152:519;;21100:571;:::o;19032:147::-;19110:17;19122:4;19110:7;;:11;;:17;;;;:::i;:::-;19100:7;:27;;;;19151:20;19166:4;19151:10;;:14;;:20;;;;:::i;:::-;19138:10;:33;;;;19032:147;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;301:133;;;;:::o;440:139::-;486:5;524:6;511:20;502:29;;540:33;567:5;540:33;:::i;:::-;440:139;;;;:::o;585:143::-;642:5;673:6;667:13;658:22;;689:33;716:5;689:33;:::i;:::-;585:143;;;;:::o;734:329::-;793:6;842:2;830:9;821:7;817:23;813:32;810:119;;;848:79;;:::i;:::-;810:119;968:1;993:53;1038:7;1029:6;1018:9;1014:22;993:53;:::i;:::-;983:63;;939:117;734:329;;;;:::o;1069:351::-;1139:6;1188:2;1176:9;1167:7;1163:23;1159:32;1156:119;;;1194:79;;:::i;:::-;1156:119;1314:1;1339:64;1395:7;1386:6;1375:9;1371:22;1339:64;:::i;:::-;1329:74;;1285:128;1069:351;;;;:::o;1426:474::-;1494:6;1502;1551:2;1539:9;1530:7;1526:23;1522:32;1519:119;;;1557:79;;:::i;:::-;1519:119;1677:1;1702:53;1747:7;1738:6;1727:9;1723:22;1702:53;:::i;:::-;1692:63;;1648:117;1804:2;1830:53;1875:7;1866:6;1855:9;1851:22;1830:53;:::i;:::-;1820:63;;1775:118;1426:474;;;;;:::o;1906:619::-;1983:6;1991;1999;2048:2;2036:9;2027:7;2023:23;2019:32;2016:119;;;2054:79;;:::i;:::-;2016:119;2174:1;2199:53;2244:7;2235:6;2224:9;2220:22;2199:53;:::i;:::-;2189:63;;2145:117;2301:2;2327:53;2372:7;2363:6;2352:9;2348:22;2327:53;:::i;:::-;2317:63;;2272:118;2429:2;2455:53;2500:7;2491:6;2480:9;2476:22;2455:53;:::i;:::-;2445:63;;2400:118;1906:619;;;;;:::o;2531:474::-;2599:6;2607;2656:2;2644:9;2635:7;2631:23;2627:32;2624:119;;;2662:79;;:::i;:::-;2624:119;2782:1;2807:53;2852:7;2843:6;2832:9;2828:22;2807:53;:::i;:::-;2797:63;;2753:117;2909:2;2935:53;2980:7;2971:6;2960:9;2956:22;2935:53;:::i;:::-;2925:63;;2880:118;2531:474;;;;;:::o;3011:329::-;3070:6;3119:2;3107:9;3098:7;3094:23;3090:32;3087:119;;;3125:79;;:::i;:::-;3087:119;3245:1;3270:53;3315:7;3306:6;3295:9;3291:22;3270:53;:::i;:::-;3260:63;;3216:117;3011:329;;;;:::o;3346:468::-;3411:6;3419;3468:2;3456:9;3447:7;3443:23;3439:32;3436:119;;;3474:79;;:::i;:::-;3436:119;3594:1;3619:53;3664:7;3655:6;3644:9;3640:22;3619:53;:::i;:::-;3609:63;;3565:117;3721:2;3747:50;3789:7;3780:6;3769:9;3765:22;3747:50;:::i;:::-;3737:60;;3692:115;3346:468;;;;;:::o;3820:663::-;3908:6;3916;3924;3973:2;3961:9;3952:7;3948:23;3944:32;3941:119;;;3979:79;;:::i;:::-;3941:119;4099:1;4124:64;4180:7;4171:6;4160:9;4156:22;4124:64;:::i;:::-;4114:74;;4070:128;4237:2;4263:64;4319:7;4310:6;4299:9;4295:22;4263:64;:::i;:::-;4253:74;;4208:129;4376:2;4402:64;4458:7;4449:6;4438:9;4434:22;4402:64;:::i;:::-;4392:74;;4347:129;3820:663;;;;;:::o;4489:179::-;4558:10;4579:46;4621:3;4613:6;4579:46;:::i;:::-;4657:4;4652:3;4648:14;4634:28;;4489:179;;;;:::o;4674:147::-;4769:45;4808:5;4769:45;:::i;:::-;4764:3;4757:58;4674:147;;:::o;4827:108::-;4904:24;4922:5;4904:24;:::i;:::-;4899:3;4892:37;4827:108;;:::o;4941:118::-;5028:24;5046:5;5028:24;:::i;:::-;5023:3;5016:37;4941:118;;:::o;5095:732::-;5214:3;5243:54;5291:5;5243:54;:::i;:::-;5313:86;5392:6;5387:3;5313:86;:::i;:::-;5306:93;;5423:56;5473:5;5423:56;:::i;:::-;5502:7;5533:1;5518:284;5543:6;5540:1;5537:13;5518:284;;;5619:6;5613:13;5646:63;5705:3;5690:13;5646:63;:::i;:::-;5639:70;;5732:60;5785:6;5732:60;:::i;:::-;5722:70;;5578:224;5565:1;5562;5558:9;5553:14;;5518:284;;;5522:14;5818:3;5811:10;;5219:608;;;5095:732;;;;:::o;5833:109::-;5914:21;5929:5;5914:21;:::i;:::-;5909:3;5902:34;5833:109;;:::o;5948:147::-;6043:45;6082:5;6043:45;:::i;:::-;6038:3;6031:58;5948:147;;:::o;6101:364::-;6189:3;6217:39;6250:5;6217:39;:::i;:::-;6272:71;6336:6;6331:3;6272:71;:::i;:::-;6265:78;;6352:52;6397:6;6392:3;6385:4;6378:5;6374:16;6352:52;:::i;:::-;6429:29;6451:6;6429:29;:::i;:::-;6424:3;6420:39;6413:46;;6193:272;6101:364;;;;:::o;6471:366::-;6613:3;6634:67;6698:2;6693:3;6634:67;:::i;:::-;6627:74;;6710:93;6799:3;6710:93;:::i;:::-;6828:2;6823:3;6819:12;6812:19;;6471:366;;;:::o;6843:::-;6985:3;7006:67;7070:2;7065:3;7006:67;:::i;:::-;6999:74;;7082:93;7171:3;7082:93;:::i;:::-;7200:2;7195:3;7191:12;7184:19;;6843:366;;;:::o;7215:::-;7357:3;7378:67;7442:2;7437:3;7378:67;:::i;:::-;7371:74;;7454:93;7543:3;7454:93;:::i;:::-;7572:2;7567:3;7563:12;7556:19;;7215:366;;;:::o;7587:::-;7729:3;7750:67;7814:2;7809:3;7750:67;:::i;:::-;7743:74;;7826:93;7915:3;7826:93;:::i;:::-;7944:2;7939:3;7935:12;7928:19;;7587:366;;;:::o;7959:::-;8101:3;8122:67;8186:2;8181:3;8122:67;:::i;:::-;8115:74;;8198:93;8287:3;8198:93;:::i;:::-;8316:2;8311:3;8307:12;8300:19;;7959:366;;;:::o;8331:::-;8473:3;8494:67;8558:2;8553:3;8494:67;:::i;:::-;8487:74;;8570:93;8659:3;8570:93;:::i;:::-;8688:2;8683:3;8679:12;8672:19;;8331:366;;;:::o;8703:::-;8845:3;8866:67;8930:2;8925:3;8866:67;:::i;:::-;8859:74;;8942:93;9031:3;8942:93;:::i;:::-;9060:2;9055:3;9051:12;9044:19;;8703:366;;;:::o;9075:398::-;9234:3;9255:83;9336:1;9331:3;9255:83;:::i;:::-;9248:90;;9347:93;9436:3;9347:93;:::i;:::-;9465:1;9460:3;9456:11;9449:18;;9075:398;;;:::o;9479:366::-;9621:3;9642:67;9706:2;9701:3;9642:67;:::i;:::-;9635:74;;9718:93;9807:3;9718:93;:::i;:::-;9836:2;9831:3;9827:12;9820:19;;9479:366;;;:::o;9851:118::-;9938:24;9956:5;9938:24;:::i;:::-;9933:3;9926:37;9851:118;;:::o;9975:112::-;10058:22;10074:5;10058:22;:::i;:::-;10053:3;10046:35;9975:112;;:::o;10093:379::-;10277:3;10299:147;10442:3;10299:147;:::i;:::-;10292:154;;10463:3;10456:10;;10093:379;;;:::o;10478:222::-;10571:4;10609:2;10598:9;10594:18;10586:26;;10622:71;10690:1;10679:9;10675:17;10666:6;10622:71;:::i;:::-;10478:222;;;;:::o;10706:332::-;10827:4;10865:2;10854:9;10850:18;10842:26;;10878:71;10946:1;10935:9;10931:17;10922:6;10878:71;:::i;:::-;10959:72;11027:2;11016:9;11012:18;11003:6;10959:72;:::i;:::-;10706:332;;;;;:::o;11044:823::-;11301:4;11339:3;11328:9;11324:19;11316:27;;11353:71;11421:1;11410:9;11406:17;11397:6;11353:71;:::i;:::-;11434:72;11502:2;11491:9;11487:18;11478:6;11434:72;:::i;:::-;11516:80;11592:2;11581:9;11577:18;11568:6;11516:80;:::i;:::-;11606;11682:2;11671:9;11667:18;11658:6;11606:80;:::i;:::-;11696:81;11772:3;11761:9;11757:19;11748:6;11696:81;:::i;:::-;11787:73;11855:3;11844:9;11840:19;11831:6;11787:73;:::i;:::-;11044:823;;;;;;;;;:::o;11873:210::-;11960:4;11998:2;11987:9;11983:18;11975:26;;12011:65;12073:1;12062:9;12058:17;12049:6;12011:65;:::i;:::-;11873:210;;;;:::o;12089:720::-;12324:4;12362:3;12351:9;12347:19;12339:27;;12376:79;12452:1;12441:9;12437:17;12428:6;12376:79;:::i;:::-;12502:9;12496:4;12492:20;12487:2;12476:9;12472:18;12465:48;12530:108;12633:4;12624:6;12530:108;:::i;:::-;12522:116;;12648:72;12716:2;12705:9;12701:18;12692:6;12648:72;:::i;:::-;12730;12798:2;12787:9;12783:18;12774:6;12730:72;:::i;:::-;12089:720;;;;;;;:::o;12815:313::-;12928:4;12966:2;12955:9;12951:18;12943:26;;13015:9;13009:4;13005:20;13001:1;12990:9;12986:17;12979:47;13043:78;13116:4;13107:6;13043:78;:::i;:::-;13035:86;;12815:313;;;;:::o;13134:419::-;13300:4;13338:2;13327:9;13323:18;13315:26;;13387:9;13381:4;13377:20;13373:1;13362:9;13358:17;13351:47;13415:131;13541:4;13415:131;:::i;:::-;13407:139;;13134:419;;;:::o;13559:::-;13725:4;13763:2;13752:9;13748:18;13740:26;;13812:9;13806:4;13802:20;13798:1;13787:9;13783:17;13776:47;13840:131;13966:4;13840:131;:::i;:::-;13832:139;;13559:419;;;:::o;13984:::-;14150:4;14188:2;14177:9;14173:18;14165:26;;14237:9;14231:4;14227:20;14223:1;14212:9;14208:17;14201:47;14265:131;14391:4;14265:131;:::i;:::-;14257:139;;13984:419;;;:::o;14409:::-;14575:4;14613:2;14602:9;14598:18;14590:26;;14662:9;14656:4;14652:20;14648:1;14637:9;14633:17;14626:47;14690:131;14816:4;14690:131;:::i;:::-;14682:139;;14409:419;;;:::o;14834:::-;15000:4;15038:2;15027:9;15023:18;15015:26;;15087:9;15081:4;15077:20;15073:1;15062:9;15058:17;15051:47;15115:131;15241:4;15115:131;:::i;:::-;15107:139;;14834:419;;;:::o;15259:::-;15425:4;15463:2;15452:9;15448:18;15440:26;;15512:9;15506:4;15502:20;15498:1;15487:9;15483:17;15476:47;15540:131;15666:4;15540:131;:::i;:::-;15532:139;;15259:419;;;:::o;15684:::-;15850:4;15888:2;15877:9;15873:18;15865:26;;15937:9;15931:4;15927:20;15923:1;15912:9;15908:17;15901:47;15965:131;16091:4;15965:131;:::i;:::-;15957:139;;15684:419;;;:::o;16109:::-;16275:4;16313:2;16302:9;16298:18;16290:26;;16362:9;16356:4;16352:20;16348:1;16337:9;16333:17;16326:47;16390:131;16516:4;16390:131;:::i;:::-;16382:139;;16109:419;;;:::o;16534:222::-;16627:4;16665:2;16654:9;16650:18;16642:26;;16678:71;16746:1;16735:9;16731:17;16722:6;16678:71;:::i;:::-;16534:222;;;;:::o;16762:831::-;17025:4;17063:3;17052:9;17048:19;17040:27;;17077:71;17145:1;17134:9;17130:17;17121:6;17077:71;:::i;:::-;17158:80;17234:2;17223:9;17219:18;17210:6;17158:80;:::i;:::-;17285:9;17279:4;17275:20;17270:2;17259:9;17255:18;17248:48;17313:108;17416:4;17407:6;17313:108;:::i;:::-;17305:116;;17431:72;17499:2;17488:9;17484:18;17475:6;17431:72;:::i;:::-;17513:73;17581:3;17570:9;17566:19;17557:6;17513:73;:::i;:::-;16762:831;;;;;;;;:::o;17599:442::-;17748:4;17786:2;17775:9;17771:18;17763:26;;17799:71;17867:1;17856:9;17852:17;17843:6;17799:71;:::i;:::-;17880:72;17948:2;17937:9;17933:18;17924:6;17880:72;:::i;:::-;17962;18030:2;18019:9;18015:18;18006:6;17962:72;:::i;:::-;17599:442;;;;;;:::o;18047:214::-;18136:4;18174:2;18163:9;18159:18;18151:26;;18187:67;18251:1;18240:9;18236:17;18227:6;18187:67;:::i;:::-;18047:214;;;;:::o;18348:132::-;18415:4;18438:3;18430:11;;18468:4;18463:3;18459:14;18451:22;;18348:132;;;:::o;18486:114::-;18553:6;18587:5;18581:12;18571:22;;18486:114;;;:::o;18606:99::-;18658:6;18692:5;18686:12;18676:22;;18606:99;;;:::o;18711:113::-;18781:4;18813;18808:3;18804:14;18796:22;;18711:113;;;:::o;18830:184::-;18929:11;18963:6;18958:3;18951:19;19003:4;18998:3;18994:14;18979:29;;18830:184;;;;:::o;19020:147::-;19121:11;19158:3;19143:18;;19020:147;;;;:::o;19173:169::-;19257:11;19291:6;19286:3;19279:19;19331:4;19326:3;19322:14;19307:29;;19173:169;;;;:::o;19348:305::-;19388:3;19407:20;19425:1;19407:20;:::i;:::-;19402:25;;19441:20;19459:1;19441:20;:::i;:::-;19436:25;;19595:1;19527:66;19523:74;19520:1;19517:81;19514:107;;;19601:18;;:::i;:::-;19514:107;19645:1;19642;19638:9;19631:16;;19348:305;;;;:::o;19659:237::-;19697:3;19716:18;19732:1;19716:18;:::i;:::-;19711:23;;19748:18;19764:1;19748:18;:::i;:::-;19743:23;;19838:1;19832:4;19828:12;19825:1;19822:19;19819:45;;;19844:18;;:::i;:::-;19819:45;19888:1;19885;19881:9;19874:16;;19659:237;;;;:::o;19902:185::-;19942:1;19959:20;19977:1;19959:20;:::i;:::-;19954:25;;19993:20;20011:1;19993:20;:::i;:::-;19988:25;;20032:1;20022:35;;20037:18;;:::i;:::-;20022:35;20079:1;20076;20072:9;20067:14;;19902:185;;;;:::o;20093:348::-;20133:7;20156:20;20174:1;20156:20;:::i;:::-;20151:25;;20190:20;20208:1;20190:20;:::i;:::-;20185:25;;20378:1;20310:66;20306:74;20303:1;20300:81;20295:1;20288:9;20281:17;20277:105;20274:131;;;20385:18;;:::i;:::-;20274:131;20433:1;20430;20426:9;20415:20;;20093:348;;;;:::o;20447:280::-;20485:7;20508:18;20524:1;20508:18;:::i;:::-;20503:23;;20540:18;20556:1;20540:18;:::i;:::-;20535:23;;20664:1;20658:4;20654:12;20651:1;20648:19;20643:1;20636:9;20629:17;20625:43;20622:69;;;20671:18;;:::i;:::-;20622:69;20719:1;20716;20712:9;20701:20;;20447:280;;;;:::o;20733:191::-;20773:4;20793:20;20811:1;20793:20;:::i;:::-;20788:25;;20827:20;20845:1;20827:20;:::i;:::-;20822:25;;20866:1;20863;20860:8;20857:34;;;20871:18;;:::i;:::-;20857:34;20916:1;20913;20909:9;20901:17;;20733:191;;;;:::o;20930:96::-;20967:7;20996:24;21014:5;20996:24;:::i;:::-;20985:35;;20930:96;;;:::o;21032:90::-;21066:7;21109:5;21102:13;21095:21;21084:32;;21032:90;;;:::o;21128:126::-;21165:7;21205:42;21198:5;21194:54;21183:65;;21128:126;;;:::o;21260:77::-;21297:7;21326:5;21315:16;;21260:77;;;:::o;21343:86::-;21378:7;21418:4;21411:5;21407:16;21396:27;;21343:86;;;:::o;21435:134::-;21493:9;21526:37;21557:5;21526:37;:::i;:::-;21513:50;;21435:134;;;:::o;21575:121::-;21633:9;21666:24;21684:5;21666:24;:::i;:::-;21653:37;;21575:121;;;:::o;21702:126::-;21752:9;21785:37;21816:5;21785:37;:::i;:::-;21772:50;;21702:126;;;:::o;21834:113::-;21884:9;21917:24;21935:5;21917:24;:::i;:::-;21904:37;;21834:113;;;:::o;21953:307::-;22021:1;22031:113;22045:6;22042:1;22039:13;22031:113;;;22130:1;22125:3;22121:11;22115:18;22111:1;22106:3;22102:11;22095:39;22067:2;22064:1;22060:10;22055:15;;22031:113;;;22162:6;22159:1;22156:13;22153:101;;;22242:1;22233:6;22228:3;22224:16;22217:27;22153:101;22002:258;21953:307;;;:::o;22266:233::-;22305:3;22328:24;22346:5;22328:24;:::i;:::-;22319:33;;22374:66;22367:5;22364:77;22361:103;;;22444:18;;:::i;:::-;22361:103;22491:1;22484:5;22480:13;22473:20;;22266:233;;;:::o;22505:180::-;22553:77;22550:1;22543:88;22650:4;22647:1;22640:15;22674:4;22671:1;22664:15;22691:180;22739:77;22736:1;22729:88;22836:4;22833:1;22826:15;22860:4;22857:1;22850:15;22877:180;22925:77;22922:1;22915:88;23022:4;23019:1;23012:15;23046:4;23043:1;23036:15;23063:180;23111:77;23108:1;23101:88;23208:4;23205:1;23198:15;23232:4;23229:1;23222:15;23372:117;23481:1;23478;23471:12;23495:102;23536:6;23587:2;23583:7;23578:2;23571:5;23567:14;23563:28;23553:38;;23495:102;;;:::o;23603:180::-;23743:32;23739:1;23731:6;23727:14;23720:56;23603:180;:::o;23789:178::-;23929:30;23925:1;23917:6;23913:14;23906:54;23789:178;:::o;23973:180::-;24113:32;24109:1;24101:6;24097:14;24090:56;23973:180;:::o;24159:174::-;24299:26;24295:1;24287:6;24283:14;24276:50;24159:174;:::o;24339:::-;24479:26;24475:1;24467:6;24463:14;24456:50;24339:174;:::o;24519:230::-;24659:34;24655:1;24647:6;24643:14;24636:58;24728:13;24723:2;24715:6;24711:15;24704:38;24519:230;:::o;24755:224::-;24895:34;24891:1;24883:6;24879:14;24872:58;24964:7;24959:2;24951:6;24947:15;24940:32;24755:224;:::o;24985:114::-;;:::o;25105:182::-;25245:34;25241:1;25233:6;25229:14;25222:58;25105:182;:::o;25293:122::-;25366:24;25384:5;25366:24;:::i;:::-;25359:5;25356:35;25346:63;;25405:1;25402;25395:12;25346:63;25293:122;:::o;25421:116::-;25491:21;25506:5;25491:21;:::i;:::-;25484:5;25481:32;25471:60;;25527:1;25524;25517:12;25471:60;25421:116;:::o;25543:122::-;25616:24;25634:5;25616:24;:::i;:::-;25609:5;25606:35;25596:63;;25655:1;25652;25645:12;25596:63;25543:122;:::o
Swarm Source
ipfs://487594cb4c1e5dae91253d9f539e7819df91600f8a0204f94e88e4048c36a718
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.