More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 73 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 18584159 | 348 days ago | IN | 0 ETH | 0.00158892 | ||||
Approve | 14453505 | 949 days ago | IN | 0 ETH | 0.00109935 | ||||
Approve | 14317243 | 971 days ago | IN | 0 ETH | 0.0012229 | ||||
Approve | 14313446 | 971 days ago | IN | 0 ETH | 0.00156764 | ||||
Approve | 14308831 | 972 days ago | IN | 0 ETH | 0.00359355 | ||||
Approve | 14308642 | 972 days ago | IN | 0 ETH | 0.00424319 | ||||
Approve | 14302579 | 973 days ago | IN | 0 ETH | 0.00228059 | ||||
Approve | 14302338 | 973 days ago | IN | 0 ETH | 0.00204728 | ||||
Approve | 14302322 | 973 days ago | IN | 0 ETH | 0.00261535 | ||||
Approve | 14302149 | 973 days ago | IN | 0 ETH | 0.00237016 | ||||
Approve | 14302120 | 973 days ago | IN | 0 ETH | 0.00274055 | ||||
Approve | 14302119 | 973 days ago | IN | 0 ETH | 0.00249391 | ||||
Approve | 14301884 | 973 days ago | IN | 0 ETH | 0.00304963 | ||||
Approve | 14301758 | 973 days ago | IN | 0 ETH | 0.00223562 | ||||
Approve | 14301748 | 973 days ago | IN | 0 ETH | 0.00216804 | ||||
Approve | 14301735 | 973 days ago | IN | 0 ETH | 0.00315685 | ||||
Approve | 14301631 | 973 days ago | IN | 0 ETH | 0.00407518 | ||||
Approve | 14301459 | 973 days ago | IN | 0 ETH | 0.00250335 | ||||
Approve | 14301254 | 973 days ago | IN | 0 ETH | 0.00253774 | ||||
Approve | 14300798 | 973 days ago | IN | 0 ETH | 0.0013285 | ||||
Approve | 14299922 | 973 days ago | IN | 0 ETH | 0.00087579 | ||||
Approve | 14298964 | 973 days ago | IN | 0 ETH | 0.00257345 | ||||
Approve | 14298486 | 973 days ago | IN | 0 ETH | 0.00348268 | ||||
Approve | 14298297 | 973 days ago | IN | 0 ETH | 0.0025429 | ||||
Approve | 14298270 | 973 days ago | IN | 0 ETH | 0.0033627 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
18584165 | 348 days ago | 0.00595028 ETH | ||||
18584165 | 348 days ago | 0.00991714 ETH | ||||
18584165 | 348 days ago | 0.00176304 ETH | ||||
18584165 | 348 days ago | 0.01763048 ETH | ||||
14339658 | 967 days ago | 0.00274331 ETH | ||||
14339658 | 967 days ago | 0.00457218 ETH | ||||
14339658 | 967 days ago | 0.00081283 ETH | ||||
14339658 | 967 days ago | 0.00812833 ETH | ||||
14318136 | 970 days ago | 0.00106508 ETH | ||||
14318136 | 970 days ago | 0.00177514 ETH | ||||
14318136 | 970 days ago | 0.00031558 ETH | ||||
14318136 | 970 days ago | 0.00315581 ETH | ||||
14313458 | 971 days ago | 0.00166524 ETH | ||||
14313458 | 971 days ago | 0.0027754 ETH | ||||
14313458 | 971 days ago | 0.0004934 ETH | ||||
14313458 | 971 days ago | 0.00493405 ETH | ||||
14312770 | 971 days ago | 0.00390838 ETH | ||||
14312770 | 971 days ago | 0.00651397 ETH | ||||
14312770 | 971 days ago | 0.00115804 ETH | ||||
14312770 | 971 days ago | 0.0115804 ETH | ||||
14308837 | 972 days ago | 0.00208756 ETH | ||||
14308837 | 972 days ago | 0.00347927 ETH | ||||
14308837 | 972 days ago | 0.00061853 ETH | ||||
14308837 | 972 days ago | 0.00618537 ETH | ||||
14308695 | 972 days ago | 0.00339663 ETH |
Loading...
Loading
Contract Name:
BASEDUKRNE
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-02-28 */ // SPDX-License-Identifier: MIT /* Based Ukraine - JOIN THE MOVEMENT! TELEGRAM : https://t.me/BasedUkraineWar_Join WEBSITE : https://basedukraine.com/war TWITTER : https://twitter.com/BasedUkraineWar */ pragma solidity 0.8.7; abstract contract Context { function _msgSender() internal view returns (address payable) { return payable(msg.sender); } function _msgData() internal view returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the token decimals. */ function decimals() external view returns (uint8); /** * @dev Returns the token symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the token name. */ function name() external view returns (string memory); /** * @dev Returns the bep token owner. */ function getOwner() external view returns (address); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address _owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address lpPair, uint); function getPair(address tokenA, address tokenB) external view returns (address lpPair); function createPair(address tokenA, address tokenB) external returns (address lpPair); } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure 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); function factory() external view returns (address); } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); } interface IUniswapV2Router02 is IUniswapV2Router01 { function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract BASEDUKRNE is Context, IERC20 { // Ownership moved to in-contract for customizability. address private _owner; mapping (address => uint256) private _tOwned; mapping (address => bool) lpPairs; uint256 private timeSinceLastPair = 0; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) private _isSniperOrBlacklisted; mapping (address => bool) private _liquidityHolders; mapping (address => uint256) buyLog; uint256 buyCoolDown = 30 seconds; uint256 private startingSupply = 100_000_000; string private _name = "Based Ukraine"; string private _symbol = "BASEDUKRNE"; uint256 public _buyFee = 1200; uint256 public _sellFee = 1200; uint256 public _transferFee = 1200; uint256 constant public maxBuyTaxes = 1500; uint256 constant public maxSellTaxes = 2500; uint256 constant public maxTransferTaxes = 2500; uint256 public _liquidityRatio = 20; uint256 public _marketingRatio = 50; uint256 public _devRatio = 30; uint256 private constant masterTaxDivisor = 10_000; uint256 private constant MAX = ~uint256(0); uint8 constant private _decimals = 9; uint256 private _tTotal = startingSupply * 10**_decimals; uint256 private _tFeeTotal; IUniswapV2Router02 public dexRouter; address public lpPair; // UNI ROUTER address private _routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; address constant public DEAD = 0x000000000000000000000000000000000000dEaD; address payable private _marketingWallet = payable(0xB2f9009BBa849666EcfC50ff710c0c599a9bdc01); address payable private _teamWallet = payable(0x055Fc7439a020B2573EE356111B4e1fcc229F56A); bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = false; uint256 private maxTxPercent = 2; uint256 private maxTxDivisor = 100; uint256 private _maxTxAmount = (_tTotal * maxTxPercent) / maxTxDivisor; // 2% uint256 private maxWalletPercent = 2; uint256 private maxWalletDivisor = 100; uint256 private _maxWalletSize = (_tTotal * maxWalletPercent) / maxWalletDivisor; // 2% uint256 private swapThreshold = (_tTotal * 5) / 10_000; // 0.05% uint256 private swapAmount = (_tTotal * 5) / 1_000; // 0.5% bool private sniperProtection = true; bool public _hasLiqBeenAdded = false; uint256 private _liqAddStatus = 0; uint256 private _liqAddBlock = 0; uint256 private _liqAddStamp = 0; uint256 private _initialLiquidityAmount = 0; uint256 private snipeBlockAmt = 0; uint256 public snipersCaught = 0; bool private sameBlockActive = true; mapping (address => uint256) private lastTrade; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); event SniperCaught(address sniperAddress); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } modifier onlyOwner() { require(_owner == _msgSender(), "Caller =/= owner."); _; } constructor () payable { _tOwned[_msgSender()] = _tTotal; // Set the owner. _owner = msg.sender; dexRouter = IUniswapV2Router02(_routerAddress); lpPair = IUniswapV2Factory(dexRouter.factory()).createPair(dexRouter.WETH(), address(this)); lpPairs[lpPair] = true; _allowances[address(this)][address(dexRouter)] = type(uint256).max; _isExcludedFromFees[owner()] = true; _isExcludedFromFees[address(this)] = true; _isExcludedFromFees[DEAD] = true; _liquidityHolders[owner()] = true; // Approve the owner for UniSwap, timesaver. _approve(_msgSender(), _routerAddress, _tTotal); // Transfer tTotal to the _msgSender. emit Transfer(address(0), _msgSender(), _tTotal); } receive() external payable {} //=============================================================================================================== //=============================================================================================================== //=============================================================================================================== // Ownable removed as a lib and added here to allow for custom transfers and recnouncements. // This allows for removal of ownership privelages from the owner once renounced or transferred. function owner() public view returns (address) { return _owner; } function transferOwner(address newOwner) external onlyOwner() { require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address."); require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address."); setExcludedFromFees(_owner, false); setExcludedFromFees(newOwner, true); if (_marketingWallet == payable(_owner)) _marketingWallet = payable(newOwner); _allowances[_owner][newOwner] = balanceOf(_owner); if(balanceOf(_owner) > 0) { _transfer(_owner, newOwner, balanceOf(_owner)); } _owner = newOwner; emit OwnershipTransferred(_owner, newOwner); } function renounceOwnership() public virtual onlyOwner() { setExcludedFromFees(_owner, false); _owner = address(0); emit OwnershipTransferred(_owner, address(0)); } //=============================================================================================================== //=============================================================================================================== //=============================================================================================================== function totalSupply() external view override returns (uint256) { return _tTotal; } function decimals() external pure override returns (uint8) { return _decimals; } function symbol() external view override returns (string memory) { return _symbol; } function name() external view override returns (string memory) { return _name; } function getOwner() external view override returns (address) { return owner(); } function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function balanceOf(address account) public view override returns (uint256) { return _tOwned[account]; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function _approve(address sender, address spender, uint256 amount) private { require(sender != address(0), "ERC20: Zero Address"); require(spender != address(0), "ERC20: Zero Address"); _allowances[sender][spender] = amount; emit Approval(sender, spender, amount); } function approveMax(address spender) public returns (bool) { return approve(spender, type(uint256).max); } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { if (_allowances[sender][msg.sender] != type(uint256).max) { _allowances[sender][msg.sender] -= amount; } return _transfer(sender, recipient, amount); } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue); return true; } function setNewRouter(address newRouter) public onlyOwner() { IUniswapV2Router02 _newRouter = IUniswapV2Router02(newRouter); address get_pair = IUniswapV2Factory(_newRouter.factory()).getPair(address(this), _newRouter.WETH()); if (get_pair == address(0)) { lpPair = IUniswapV2Factory(_newRouter.factory()).createPair(address(this), _newRouter.WETH()); } else { lpPair = get_pair; } dexRouter = _newRouter; } function setLpPair(address pair, bool enabled) external onlyOwner { if (enabled == false) { lpPairs[pair] = false; } else { if (timeSinceLastPair != 0) { require(block.timestamp - timeSinceLastPair > 1 weeks, "One week cooldown."); } lpPairs[pair] = true; timeSinceLastPair = block.timestamp; } } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } function setExcludedFromFees(address account, bool enabled) public onlyOwner { _isExcludedFromFees[account] = enabled; } function isSniperOrBlacklisted(address account) public view returns (bool) { return _isSniperOrBlacklisted[account]; } function setBuyCoolDownTime(uint256 Seconds) public onlyOwner{ uint256 timeInSeconds = Seconds * 1 seconds; buyCoolDown = timeInSeconds; } function isProtected(uint256 rInitializer) external onlyOwner { require (_liqAddStatus == 0, "Error."); _liqAddStatus = rInitializer; } function setBlacklistEnabled(address account, bool enabled) external onlyOwner() { _isSniperOrBlacklisted[account] = enabled; } function setStartingProtections(uint8 _block) external onlyOwner{ require (snipeBlockAmt == 0 && !_hasLiqBeenAdded, "Starting Protections have already been executed."); snipeBlockAmt = _block; } function setProtectionSettings(bool antiSnipe, bool antiBlock) external onlyOwner() { sniperProtection = antiSnipe; sameBlockActive = antiBlock; } function setTaxes(uint256 buyFee, uint256 sellFee, uint256 transferFee) external onlyOwner { require(buyFee <= maxBuyTaxes && sellFee <= maxSellTaxes && transferFee <= maxTransferTaxes, "Cannot exceed maximums."); _buyFee = buyFee; _sellFee = sellFee; _transferFee = transferFee; } function setRatios(uint256 liquidity, uint256 marketing, uint256 dev) external onlyOwner { require (liquidity + marketing + dev == 100, "Must add up to 100%"); _liquidityRatio = liquidity; _marketingRatio = marketing; _devRatio = dev; } function setMaxTxPercent(uint256 percent, uint256 divisor) external onlyOwner { uint256 check = (_tTotal * percent) / divisor; require(check >= (_tTotal / 1000), "Must be above 0.1% of total supply."); _maxTxAmount = check; } function setMaxWalletSize(uint256 percent, uint256 divisor) external onlyOwner { uint256 check = (_tTotal * percent) / divisor; require(check >= (_tTotal / 1000), "Must be above 0.1% of total supply."); _maxWalletSize = check; } function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner { swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor; swapAmount = (_tTotal * amountPercent) / amountDivisor; } function setWallets(address payable marketingWallet, address payable teamWallet) external onlyOwner { _marketingWallet = payable(marketingWallet); _teamWallet = payable(teamWallet); } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } function _hasLimits(address from, address to) private view returns (bool) { return from != owner() && to != owner() && !_liquidityHolders[to] && !_liquidityHolders[from] && to != DEAD && to != address(0) && from != address(this); } function _transfer(address from, address to, uint256 amount) internal returns (bool) { require(from != address(0), "ERC20: Zero address."); require(to != address(0), "ERC20: Zero address."); require(amount > 0, "Must >0."); if(_hasLimits(from, to)) { if (sameBlockActive) { if (lpPairs[from]){ require(lastTrade[to] != block.number); lastTrade[to] = block.number; } else { require(lastTrade[from] != block.number); lastTrade[from] = block.number; } } if(lpPairs[from] || lpPairs[to]){ require(amount <= _maxTxAmount, "Exceeds the maxTxAmount."); } if(to != _routerAddress && !lpPairs[to]) { require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize."); } } bool takeFee = true; if(_isExcludedFromFees[from] || _isExcludedFromFees[to]){ takeFee = false; } if (lpPairs[to]) { if (!inSwapAndLiquify && swapAndLiquifyEnabled ) { uint256 contractTokenBalance = balanceOf(address(this)); if (contractTokenBalance >= swapThreshold) { if(contractTokenBalance >= swapAmount) { contractTokenBalance = swapAmount; } swapAndLiquify(contractTokenBalance); } } } return _finalizeTransfer(from, to, amount, takeFee); } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { if (_liquidityRatio + _marketingRatio + _devRatio == 0) return; uint256 toLiquify = ((contractTokenBalance * _liquidityRatio) / (_liquidityRatio + _marketingRatio + _devRatio)) / 2; uint256 toSwapForEth = contractTokenBalance - toLiquify; swapTokensForEth(toSwapForEth); uint256 currentBalance = address(this).balance; uint256 liquidityBalance = ((currentBalance * _liquidityRatio) / (_liquidityRatio + _marketingRatio + _devRatio)) / 2; if (toLiquify > 0) { addLiquidity(toLiquify, liquidityBalance); emit SwapAndLiquify(toLiquify, liquidityBalance, toLiquify); } if (contractTokenBalance - toLiquify > 0) { _marketingWallet.transfer(((currentBalance - liquidityBalance) * _marketingRatio) / (_marketingRatio + _devRatio)); _teamWallet.transfer(address(this).balance); } } function swapTokensForEth(uint256 tokenAmount) internal { address[] memory path = new address[](2); path[0] = address(this); path[1] = dexRouter.WETH(); dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { dexRouter.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable DEAD, block.timestamp ); } function _checkLiquidityAdd(address from, address to) private { require(!_hasLiqBeenAdded, "Liquidity already added and marked."); if (!_hasLimits(from, to) && to == lpPair) { if (snipeBlockAmt != 2) { _liqAddBlock = block.number + 5000; } else { _liqAddBlock = block.number; } _liquidityHolders[from] = true; _hasLiqBeenAdded = true; _liqAddStamp = block.timestamp; swapAndLiquifyEnabled = true; emit SwapAndLiquifyEnabledUpdated(true); } } function _finalizeTransfer(address from, address to, uint256 amount, bool takeFee) private returns (bool) { if (sniperProtection){ if (isSniperOrBlacklisted(from) || isSniperOrBlacklisted(to)) { revert("Sniper rejected."); } if (!_hasLiqBeenAdded) { _checkLiquidityAdd(from, to); if (!_hasLiqBeenAdded && _hasLimits(from, to)) { revert("Only owner can transfer at this time."); } } else { if (_liqAddBlock > 0 && lpPairs[from] && _hasLimits(from, to) ) { if (block.number - _liqAddBlock < snipeBlockAmt) { _isSniperOrBlacklisted[to] = true; snipersCaught ++; emit SniperCaught(to); } } } } _tOwned[from] -= amount; uint256 amountReceived = (takeFee) ? takeTaxes(from, to, amount) : amount; _tOwned[to] += amountReceived; emit Transfer(from, to, amountReceived); return true; } function takeTaxes(address from, address to, uint256 amount) internal returns (uint256) { uint256 currentFee; if (from == lpPair) { if (balanceOf(to) > 0){ require(block.timestamp - buyLog[to] >= buyCoolDown, "Buy cooldown"); } buyLog[to] = block.timestamp; currentFee = _buyFee; } else if (to == lpPair) { currentFee = _sellFee; } else { currentFee = _transferFee; } if (_hasLimits(from, to)){ if (_liqAddStatus == 0 || _liqAddStatus != startingSupply/10) { revert(); } } uint256 feeAmount = amount * currentFee / masterTaxDivisor; _tOwned[address(this)] += feeAmount; emit Transfer(from, address(this), feeAmount); return amount - feeAmount; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sniperAddress","type":"address"}],"name":"SniperCaught","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":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_devRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transferFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rInitializer","type":"uint256"}],"name":"isProtected","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isSniperOrBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Seconds","type":"uint256"}],"name":"setBuyCoolDownTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"antiSnipe","type":"bool"},{"internalType":"bool","name":"antiBlock","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_block","type":"uint8"}],"name":"setStartingProtections","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"},{"internalType":"uint256","name":"transferFee","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketingWallet","type":"address"},{"internalType":"address payable","name":"teamWallet","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snipersCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","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":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526000600355601e6009556305f5e100600a556040518060400160405280600d81526020017f426173656420556b7261696e6500000000000000000000000000000000000000815250600b90805190602001906200006392919062000bb7565b506040518060400160405280600a81526020017f4241534544554b524e4500000000000000000000000000000000000000000000815250600c9080519060200190620000b192919062000bb7565b506104b0600d556104b0600e556104b0600f5560146010556032601155601e6012556009600a620000e3919062000e09565b600a54620000f2919062000f46565b601355737a250d5630b4cf539739df2c5dacb4c659f2488d601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b2f9009bba849666ecfc50ff710c0c599a9bdc01601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073055fc7439a020b2573ee356111b4e1fcc229f56a601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601960156101000a81548160ff0219169083151502179055506002601a556064601b55601b54601a546013546200022e919062000f46565b6200023a919062000d76565b601c556002601d556064601e55601e54601d546013546200025c919062000f46565b62000268919062000d76565b601f5561271060056013546200027f919062000f46565b6200028b919062000d76565b6020556103e86005601354620002a2919062000f46565b620002ae919062000d76565b6021556001602260006101000a81548160ff0219169083151502179055506000602260016101000a81548160ff0219169083151502179055506000602355600060245560006025556000602655600060275560006028556001602960006101000a81548160ff0219169083151502179055506013546001600062000337620009b360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200048157600080fd5b505afa15801562000496573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004bc919062000c7e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200054057600080fd5b505afa15801562000555573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200057b919062000c7e565b306040518363ffffffff1660e01b81526004016200059b92919062000cf9565b602060405180830381600087803b158015620005b657600080fd5b505af1158015620005cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005f1919062000c7e565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160026000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060016005600062000784620009bb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016005600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760006200089d620009bb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200093462000902620009b360201b60201c565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601354620009e460201b60201c565b62000944620009b360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601354604051620009a5919062000d48565b60405180910390a36200110a565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141562000a57576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a4e9062000d26565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000aca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ac19062000d26565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000baa919062000d48565b60405180910390a3505050565b82805462000bc59062000ff2565b90600052602060002090601f01602090048101928262000be9576000855562000c35565b82601f1062000c0457805160ff191683800117855562000c35565b8280016001018555821562000c35579182015b8281111562000c3457825182559160200191906001019062000c17565b5b50905062000c44919062000c48565b5090565b5b8082111562000c6357600081600090555060010162000c49565b5090565b60008151905062000c7881620010f0565b92915050565b60006020828403121562000c975762000c96620010b5565b5b600062000ca78482850162000c67565b91505092915050565b62000cbb8162000fa7565b82525050565b600062000cd060138362000d65565b915062000cdd82620010c7565b602082019050919050565b62000cf38162000fdb565b82525050565b600060408201905062000d10600083018562000cb0565b62000d1f602083018462000cb0565b9392505050565b6000602082019050818103600083015262000d418162000cc1565b9050919050565b600060208201905062000d5f600083018462000ce8565b92915050565b600082825260208201905092915050565b600062000d838262000fdb565b915062000d908362000fdb565b92508262000da35762000da262001057565b5b828204905092915050565b6000808291508390505b600185111562000e005780860481111562000dd85762000dd762001028565b5b600185161562000de85780820291505b808102905062000df885620010ba565b945062000db8565b94509492505050565b600062000e168262000fdb565b915062000e238362000fe5565b925062000e527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000e5a565b905092915050565b60008262000e6c576001905062000f3f565b8162000e7c576000905062000f3f565b816001811462000e95576002811462000ea05762000ed6565b600191505062000f3f565b60ff84111562000eb55762000eb462001028565b5b8360020a91508482111562000ecf5762000ece62001028565b5b5062000f3f565b5060208310610133831016604e8410600b841016171562000f105782820a90508381111562000f0a5762000f0962001028565b5b62000f3f565b62000f1f848484600162000dae565b9250905081840481111562000f395762000f3862001028565b5b81810290505b9392505050565b600062000f538262000fdb565b915062000f608362000fdb565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000f9c5762000f9b62001028565b5b828202905092915050565b600062000fb48262000fbb565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600060028204905060018216806200100b57607f821691505b6020821081141562001022576200102162001086565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b60008160011c9050919050565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b620010fb8162000fa7565b81146200110757600080fd5b50565b61554b806200111a6000396000f3fe6080604052600436106102975760003560e01c8063590f897e1161015a578063a9059cbb116100c1578063dd62ed3e1161007a578063dd62ed3e14610a27578063e79d416014610a64578063e9dae5ed14610a8f578063eafb5a3c14610ab8578063eec2744e14610ae1578063fb78680d14610b0a5761029e565b8063a9059cbb14610919578063b1b08f7114610956578063b3d514fb14610981578063c49b9a80146109ac578063cdfdb7dc146109d5578063d3f6a157146109fe5761029e565b8063893d20e811610113578063893d20e8146107f357806389fd9bc11461081e5780638da5cb5b1461085b57806395d89b4114610886578063a457c2d7146108b1578063a8edc797146108ee5761029e565b8063590f897e146106f9578063590ffdce1461072457806370a082311461074d578063715018a61461078a57806380c581d1146107a157806381c6f11b146107ca5761029e565b80633df9a8d2116101fe5780634a74bb02116101b75780634a74bb02146105d55780634ef3cce5146106005780634fb2e45d1461062b5780634fbee1931461065457806350a8e01614610691578063571ac8b0146106bc5761029e565b80633df9a8d2146104d95780633f3cf56c1461050457806340b9a54b1461052d5780634129ecee14610558578063452ed4f114610581578063469c0ef5146105ac5761029e565b806323b872dd1161025057806323b872dd146103b557806326003957146103f25780632b28fc7a1461041b578063313ce56714610446578063384f6b5114610471578063395093511461049c5761029e565b806303fd2a45146102a3578063044df726146102ce57806306fdde03146102f75780630758d92414610322578063095ea7b31461034d57806318160ddd1461038a5761029e565b3661029e57005b600080fd5b3480156102af57600080fd5b506102b8610b33565b6040516102c5919061497f565b60405180910390f35b3480156102da57600080fd5b506102f560048036038101906102f0919061442d565b610b39565b005b34801561030357600080fd5b5061030c610c06565b6040516103199190614a5a565b60405180910390f35b34801561032e57600080fd5b50610337610c98565b6040516103449190614a3f565b60405180910390f35b34801561035957600080fd5b50610374600480360381019061036f91906143c0565b610cbe565b6040516103819190614a24565b60405180910390f35b34801561039657600080fd5b5061039f610cdc565b6040516103ac9190614c9c565b60405180910390f35b3480156103c157600080fd5b506103dc60048036038101906103d7919061432d565b610ce6565b6040516103e99190614a24565b60405180910390f35b3480156103fe57600080fd5b506104196004803603810190610414919061449a565b610e33565b005b34801561042757600080fd5b50610430610f43565b60405161043d9190614c9c565b60405180910390f35b34801561045257600080fd5b5061045b610f49565b6040516104689190614d48565b60405180910390f35b34801561047d57600080fd5b50610486610f52565b6040516104939190614c9c565b60405180910390f35b3480156104a857600080fd5b506104c360048036038101906104be91906143c0565b610f58565b6040516104d09190614a24565b60405180910390f35b3480156104e557600080fd5b506104ee611004565b6040516104fb9190614c9c565b60405180910390f35b34801561051057600080fd5b5061052b6004803603810190610526919061449a565b61100a565b005b34801561053957600080fd5b5061054261111a565b60405161054f9190614c9c565b60405180910390f35b34801561056457600080fd5b5061057f600480360381019061057a91906145e7565b611120565b005b34801561058d57600080fd5b50610596611220565b6040516105a3919061497f565b60405180910390f35b3480156105b857600080fd5b506105d360048036038101906105ce919061446d565b611246565b005b3480156105e157600080fd5b506105ea6112f7565b6040516105f79190614a24565b60405180910390f35b34801561060c57600080fd5b5061061561130a565b6040516106229190614c9c565b60405180910390f35b34801561063757600080fd5b50610652600480360381019061064d9190614253565b611310565b005b34801561066057600080fd5b5061067b60048036038101906106769190614253565b611781565b6040516106889190614a24565b60405180910390f35b34801561069d57600080fd5b506106a66117d7565b6040516106b39190614a24565b60405180910390f35b3480156106c857600080fd5b506106e360048036038101906106de9190614253565b6117ea565b6040516106f09190614a24565b60405180910390f35b34801561070557600080fd5b5061070e61181d565b60405161071b9190614c9c565b60405180910390f35b34801561073057600080fd5b5061074b60048036038101906107469190614380565b611823565b005b34801561075957600080fd5b50610774600480360381019061076f9190614253565b611913565b6040516107819190614c9c565b60405180910390f35b34801561079657600080fd5b5061079f61195c565b005b3480156107ad57600080fd5b506107c860048036038101906107c39190614380565b611ada565b005b3480156107d657600080fd5b506107f160048036038101906107ec919061446d565b611c9a565b005b3480156107ff57600080fd5b50610808611d7e565b604051610815919061497f565b60405180910390f35b34801561082a57600080fd5b5061084560048036038101906108409190614253565b611d8d565b6040516108529190614a24565b60405180910390f35b34801561086757600080fd5b50610870611de3565b60405161087d919061497f565b60405180910390f35b34801561089257600080fd5b5061089b611e0c565b6040516108a89190614a5a565b60405180910390f35b3480156108bd57600080fd5b506108d860048036038101906108d391906143c0565b611e9e565b6040516108e59190614a24565b60405180910390f35b3480156108fa57600080fd5b50610903611f4a565b6040516109109190614c9c565b60405180910390f35b34801561092557600080fd5b50610940600480360381019061093b91906143c0565b611f50565b60405161094d9190614a24565b60405180910390f35b34801561096257600080fd5b5061096b611f6f565b6040516109789190614c9c565b60405180910390f35b34801561098d57600080fd5b50610996611f75565b6040516109a39190614c9c565b60405180910390f35b3480156109b857600080fd5b506109d360048036038101906109ce9190614400565b611f7b565b005b3480156109e157600080fd5b506109fc60048036038101906109f791906144da565b612064565b005b348015610a0a57600080fd5b50610a256004803603810190610a2091906142ad565b61216c565b005b348015610a3357600080fd5b50610a4e6004803603810190610a4991906142ed565b612287565b604051610a5b9190614c9c565b60405180910390f35b348015610a7057600080fd5b50610a7961230e565b604051610a869190614c9c565b60405180910390f35b348015610a9b57600080fd5b50610ab66004803603810190610ab191906144da565b612314565b005b348015610ac457600080fd5b50610adf6004803603810190610ada9190614253565b612424565b005b348015610aed57600080fd5b50610b086004803603810190610b039190614380565b6128d0565b005b348015610b1657600080fd5b50610b316004803603810190610b2c9190614580565b6129c0565b005b61dead81565b610b41612a99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc590614abc565b60405180910390fd5b81602260006101000a81548160ff02191690831515021790555080602960006101000a81548160ff0219169083151502179055505050565b6060600b8054610c1590614faf565b80601f0160208091040260200160405190810160405280929190818152602001828054610c4190614faf565b8015610c8e5780601f10610c6357610100808354040283529160200191610c8e565b820191906000526020600020905b815481529060010190602001808311610c7157829003601f168201915b5050505050905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610cd2610ccb612a99565b8484612aa1565b6001905092915050565b6000601354905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e1f5781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e179190614e99565b925050819055505b610e2a848484612c6c565b90509392505050565b610e3b612a99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ec8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebf90614abc565b60405180910390fd5b60008183601354610ed99190614e3f565b610ee39190614e0e565b90506103e8601354610ef59190614e0e565b811015610f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2e90614b3c565b60405180910390fd5b80601f81905550505050565b6105dc81565b60006009905090565b60105481565b6000610ffa610f65612a99565b848460046000610f73612a99565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ff59190614db8565b612aa1565b6001905092915050565b600f5481565b611012612a99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461109f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109690614abc565b60405180910390fd5b600081836013546110b09190614e3f565b6110ba9190614e0e565b90506103e86013546110cc9190614e0e565b81101561110e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110590614b3c565b60405180910390fd5b80601c81905550505050565b600d5481565b611128612a99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ac90614abc565b60405180910390fd5b60006027541480156111d45750602260019054906101000a900460ff16155b611213576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120a90614a9c565b60405180910390fd5b8060ff1660278190555050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61124e612a99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d290614abc565b60405180910390fd5b60006001826112ea9190614e3f565b9050806009819055505050565b601960159054906101000a900460ff1681565b60115481565b611318612a99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139c90614abc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140c90614c7c565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611486576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147d90614c7c565b60405180910390fd5b6114b160008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611823565b6114bc816001611823565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156115745780601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b61159d60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611913565b600460008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061166960008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611913565b11156116c4576116c260008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826116bd60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611913565b612c6c565b505b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b602260019054906101000a900460ff1681565b6000611816827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610cbe565b9050919050565b600e5481565b61182b612a99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118af90614abc565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611964612a99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e890614abc565b60405180910390fd5b611a1c60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611823565b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3565b611ae2612a99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6690614abc565b60405180910390fd5b600015158115151415611bd9576000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611c96565b600060035414611c365762093a8060035442611bf59190614e99565b11611c35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2c90614b7c565b60405180910390fd5b5b6001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550426003819055505b5050565b611ca2612a99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2690614abc565b60405180910390fd5b600060235414611d74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6b90614bfc565b60405180910390fd5b8060238190555050565b6000611d88611de3565b905090565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600c8054611e1b90614faf565b80601f0160208091040260200160405190810160405280929190818152602001828054611e4790614faf565b8015611e945780601f10611e6957610100808354040283529160200191611e94565b820191906000526020600020905b815481529060010190602001808311611e7757829003601f168201915b5050505050905090565b6000611f40611eab612a99565b848460046000611eb9612a99565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f3b9190614e99565b612aa1565b6001905092915050565b60125481565b6000611f64611f5d612a99565b8484612c6c565b506001905092915050565b6109c481565b6109c481565b611f83612a99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612010576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200790614abc565b60405180910390fd5b80601960156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516120599190614a24565b60405180910390a150565b61206c612a99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f090614abc565b60405180910390fd5b60648183856121089190614db8565b6121129190614db8565b14612152576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214990614c3c565b60405180910390fd5b826010819055508160118190555080601281905550505050565b612174612a99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612201576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f890614abc565b60405180910390fd5b81601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60285481565b61231c612a99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a090614abc565b60405180910390fd5b6105dc83111580156123bd57506109c48211155b80156123cb57506109c48111155b61240a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240190614b1c565b60405180910390fd5b82600d8190555081600e8190555080600f81905550505050565b61242c612a99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b090614abc565b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561250657600080fd5b505afa15801561251a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061253e9190614280565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156125a057600080fd5b505afa1580156125b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d89190614280565b6040518363ffffffff1660e01b81526004016125f592919061499a565b60206040518083038186803b15801561260d57600080fd5b505afa158015612621573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126459190614280565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612848578173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156126c257600080fd5b505afa1580156126d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fa9190614280565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561275c57600080fd5b505afa158015612770573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127949190614280565b6040518363ffffffff1660e01b81526004016127b192919061499a565b602060405180830381600087803b1580156127cb57600080fd5b505af11580156127df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128039190614280565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061288a565b80601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b81601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6128d8612a99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295c90614abc565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6129c8612a99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4c90614abc565b60405180910390fd5b8284601354612a649190614e3f565b612a6e9190614e0e565b6020819055508082601354612a839190614e3f565b612a8d9190614e0e565b60218190555050505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0890614bbc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7890614bbc565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612c5f9190614c9c565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cd490614b5c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612d4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4490614b5c565b60405180910390fd5b60008211612d90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8790614b9c565b60405180910390fd5b612d9a8484613299565b1561312057602960009054906101000a900460ff1615612f2d57600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612e9b5743602a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415612e5257600080fd5b43602a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f2c565b43602a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415612ee757600080fd5b43602a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612fce5750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561301957601c54821115613018576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300f90614c5c565b60405180910390fd5b5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156130c15750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561311f57601f54826130d385611913565b6130dd9190614db8565b111561311e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161311590614c1c565b60405180910390fd5b5b5b600060019050600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806131c75750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156131d157600090505b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561328357601960149054906101000a900460ff1615801561324c5750601960159054906101000a900460ff165b1561328257600061325c30611913565b905060205481106132805760215481106132765760215490505b61327f81613470565b5b505b5b61328f858585846136e8565b9150509392505050565b60006132a3611de3565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561331157506132e1611de3565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156133675750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133bd5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133f7575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156134305750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561346857503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b905092915050565b6001601960146101000a81548160ff02191690831515021790555060006012546011546010546134a09190614db8565b6134aa9190614db8565b14156134b5576136ca565b600060026012546011546010546134cc9190614db8565b6134d69190614db8565b601054846134e49190614e3f565b6134ee9190614e0e565b6134f89190614e0e565b9050600081836135089190614e99565b905061351381613a4b565b60004790506000600260125460115460105461352f9190614db8565b6135399190614db8565b601054846135479190614e3f565b6135519190614e0e565b61355b9190614e0e565b905060008411156135ac576135708482613c70565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618482866040516135a393929190614d11565b60405180910390a15b600084866135ba9190614e99565b11156136c557601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc60125460115461360c9190614db8565b601154848661361b9190614e99565b6136259190614e3f565b61362f9190614e0e565b9081150290604051600060405180830381858888f1935050505015801561365a573d6000803e3d6000fd5b50601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156136c3573d6000803e3d6000fd5b505b505050505b6000601960146101000a81548160ff02191690831515021790555050565b6000602260009054906101000a900460ff16156139125761370885611d8d565b80613718575061371784611d8d565b5b15613758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161374f90614bdc565b60405180910390fd5b602260019054906101000a900460ff166137de576137768585613d32565b602260019054906101000a900460ff1615801561379957506137988585613299565b5b156137d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137d090614afc565b60405180910390fd5b613911565b60006024541180156138395750600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561384b575061384a8585613299565b5b1561391057602754602454436138619190614e99565b101561390f576001600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550602860008154809291906138d290614fe1565b91905055507f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e584604051613906919061497f565b60405180910390a15b5b5b5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546139619190614e99565b925050819055506000826139755783613981565b613980868686613ee8565b5b905080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546139d29190614db8565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613a369190614c9c565b60405180910390a36001915050949350505050565b6000600267ffffffffffffffff811115613a6857613a676150e6565b5b604051908082528060200260200182016040528015613a965781602001602082028036833780820191505090505b5090503081600081518110613aae57613aad6150b7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613b5057600080fd5b505afa158015613b64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b889190614280565b81600181518110613b9c57613b9b6150b7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613c3a959493929190614cb7565b600060405180830381600087803b158015613c5457600080fd5b505af1158015613c68573d6000803e3d6000fd5b505050505050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401613cd9969594939291906149c3565b6060604051808303818588803b158015613cf257600080fd5b505af1158015613d06573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613d2b919061452d565b5050505050565b602260019054906101000a900460ff1615613d82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d7990614adc565b60405180910390fd5b613d8c8282613299565b158015613de65750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15613ee457600260275414613e0e5761138843613e039190614db8565b602481905550613e16565b436024819055505b6001600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001602260016101000a81548160ff021916908315150217905550426025819055506001601960156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1596001604051613edb9190614a24565b60405180910390a15b5050565b600080601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415614030576000613f4c85611913565b1115613fe257600954600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442613fa09190614e99565b1015613fe1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613fd890614a7c565b60405180910390fd5b5b42600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600d549050614097565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561409057600e549050614096565b600f5490505b5b6140a18585613299565b156140d157600060235414806140c65750600a80546140c09190614e0e565b60235414155b156140d057600080fd5b5b600061271082856140e29190614e3f565b6140ec9190614e0e565b905080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461413d9190614db8565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516141a19190614c9c565b60405180910390a380846141b59190614e99565b925050509392505050565b6000813590506141cf816154a2565b92915050565b6000815190506141e4816154a2565b92915050565b6000813590506141f9816154b9565b92915050565b60008135905061420e816154d0565b92915050565b600081359050614223816154e7565b92915050565b600081519050614238816154e7565b92915050565b60008135905061424d816154fe565b92915050565b60006020828403121561426957614268615115565b5b6000614277848285016141c0565b91505092915050565b60006020828403121561429657614295615115565b5b60006142a4848285016141d5565b91505092915050565b600080604083850312156142c4576142c3615115565b5b60006142d2858286016141ea565b92505060206142e3858286016141ea565b9150509250929050565b6000806040838503121561430457614303615115565b5b6000614312858286016141c0565b9250506020614323858286016141c0565b9150509250929050565b60008060006060848603121561434657614345615115565b5b6000614354868287016141c0565b9350506020614365868287016141c0565b925050604061437686828701614214565b9150509250925092565b6000806040838503121561439757614396615115565b5b60006143a5858286016141c0565b92505060206143b6858286016141ff565b9150509250929050565b600080604083850312156143d7576143d6615115565b5b60006143e5858286016141c0565b92505060206143f685828601614214565b9150509250929050565b60006020828403121561441657614415615115565b5b6000614424848285016141ff565b91505092915050565b6000806040838503121561444457614443615115565b5b6000614452858286016141ff565b9250506020614463858286016141ff565b9150509250929050565b60006020828403121561448357614482615115565b5b600061449184828501614214565b91505092915050565b600080604083850312156144b1576144b0615115565b5b60006144bf85828601614214565b92505060206144d085828601614214565b9150509250929050565b6000806000606084860312156144f3576144f2615115565b5b600061450186828701614214565b935050602061451286828701614214565b925050604061452386828701614214565b9150509250925092565b60008060006060848603121561454657614545615115565b5b600061455486828701614229565b935050602061456586828701614229565b925050604061457686828701614229565b9150509250925092565b6000806000806080858703121561459a57614599615115565b5b60006145a887828801614214565b94505060206145b987828801614214565b93505060406145ca87828801614214565b92505060606145db87828801614214565b91505092959194509250565b6000602082840312156145fd576145fc615115565b5b600061460b8482850161423e565b91505092915050565b6000614620838361462c565b60208301905092915050565b61463581614ecd565b82525050565b61464481614ecd565b82525050565b600061465582614d73565b61465f8185614d96565b935061466a83614d63565b8060005b8381101561469b5781516146828882614614565b975061468d83614d89565b92505060018101905061466e565b5085935050505092915050565b6146b181614ef1565b82525050565b6146c081614f34565b82525050565b6146cf81614f46565b82525050565b60006146e082614d7e565b6146ea8185614da7565b93506146fa818560208601614f7c565b6147038161511a565b840191505092915050565b600061471b600c83614da7565b91506147268261512b565b602082019050919050565b600061473e603083614da7565b915061474982615154565b604082019050919050565b6000614761601183614da7565b915061476c826151a3565b602082019050919050565b6000614784602383614da7565b915061478f826151cc565b604082019050919050565b60006147a7602583614da7565b91506147b28261521b565b604082019050919050565b60006147ca601783614da7565b91506147d58261526a565b602082019050919050565b60006147ed602383614da7565b91506147f882615293565b604082019050919050565b6000614810601483614da7565b915061481b826152e2565b602082019050919050565b6000614833601283614da7565b915061483e8261530b565b602082019050919050565b6000614856600883614da7565b915061486182615334565b602082019050919050565b6000614879601383614da7565b91506148848261535d565b602082019050919050565b600061489c601083614da7565b91506148a782615386565b602082019050919050565b60006148bf600683614da7565b91506148ca826153af565b602082019050919050565b60006148e2601a83614da7565b91506148ed826153d8565b602082019050919050565b6000614905601383614da7565b915061491082615401565b602082019050919050565b6000614928601883614da7565b91506149338261542a565b602082019050919050565b600061494b603d83614da7565b915061495682615453565b604082019050919050565b61496a81614f1d565b82525050565b61497981614f27565b82525050565b6000602082019050614994600083018461463b565b92915050565b60006040820190506149af600083018561463b565b6149bc602083018461463b565b9392505050565b600060c0820190506149d8600083018961463b565b6149e56020830188614961565b6149f260408301876146c6565b6149ff60608301866146c6565b614a0c608083018561463b565b614a1960a0830184614961565b979650505050505050565b6000602082019050614a3960008301846146a8565b92915050565b6000602082019050614a5460008301846146b7565b92915050565b60006020820190508181036000830152614a7481846146d5565b905092915050565b60006020820190508181036000830152614a958161470e565b9050919050565b60006020820190508181036000830152614ab581614731565b9050919050565b60006020820190508181036000830152614ad581614754565b9050919050565b60006020820190508181036000830152614af581614777565b9050919050565b60006020820190508181036000830152614b158161479a565b9050919050565b60006020820190508181036000830152614b35816147bd565b9050919050565b60006020820190508181036000830152614b55816147e0565b9050919050565b60006020820190508181036000830152614b7581614803565b9050919050565b60006020820190508181036000830152614b9581614826565b9050919050565b60006020820190508181036000830152614bb581614849565b9050919050565b60006020820190508181036000830152614bd58161486c565b9050919050565b60006020820190508181036000830152614bf58161488f565b9050919050565b60006020820190508181036000830152614c15816148b2565b9050919050565b60006020820190508181036000830152614c35816148d5565b9050919050565b60006020820190508181036000830152614c55816148f8565b9050919050565b60006020820190508181036000830152614c758161491b565b9050919050565b60006020820190508181036000830152614c958161493e565b9050919050565b6000602082019050614cb16000830184614961565b92915050565b600060a082019050614ccc6000830188614961565b614cd960208301876146c6565b8181036040830152614ceb818661464a565b9050614cfa606083018561463b565b614d076080830184614961565b9695505050505050565b6000606082019050614d266000830186614961565b614d336020830185614961565b614d406040830184614961565b949350505050565b6000602082019050614d5d6000830184614970565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614dc382614f1d565b9150614dce83614f1d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614e0357614e0261502a565b5b828201905092915050565b6000614e1982614f1d565b9150614e2483614f1d565b925082614e3457614e33615059565b5b828204905092915050565b6000614e4a82614f1d565b9150614e5583614f1d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614e8e57614e8d61502a565b5b828202905092915050565b6000614ea482614f1d565b9150614eaf83614f1d565b925082821015614ec257614ec161502a565b5b828203905092915050565b6000614ed882614efd565b9050919050565b6000614eea82614efd565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614f3f82614f58565b9050919050565b6000614f5182614f1d565b9050919050565b6000614f6382614f6a565b9050919050565b6000614f7582614efd565b9050919050565b60005b83811015614f9a578082015181840152602081019050614f7f565b83811115614fa9576000848401525b50505050565b60006002820490506001821680614fc757607f821691505b60208210811415614fdb57614fda615088565b5b50919050565b6000614fec82614f1d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561501f5761501e61502a565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f42757920636f6f6c646f776e0000000000000000000000000000000000000000600082015250565b7f5374617274696e672050726f74656374696f6e73206861766520616c7265616460008201527f79206265656e2065786563757465642e00000000000000000000000000000000602082015250565b7f43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000600082015250565b7f4c697175696469747920616c726561647920616464656420616e64206d61726b60008201527f65642e0000000000000000000000000000000000000000000000000000000000602082015250565b7f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060008201527f74696d652e000000000000000000000000000000000000000000000000000000602082015250565b7f43616e6e6f7420657863656564206d6178696d756d732e000000000000000000600082015250565b7f4d7573742062652061626f766520302e3125206f6620746f74616c207375707060008201527f6c792e0000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a205a65726f20616464726573732e000000000000000000000000600082015250565b7f4f6e65207765656b20636f6f6c646f776e2e0000000000000000000000000000600082015250565b7f4d757374203e302e000000000000000000000000000000000000000000000000600082015250565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b7f536e697065722072656a65637465642e00000000000000000000000000000000600082015250565b7f4572726f722e0000000000000000000000000000000000000000000000000000600082015250565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b7f4d7573742061646420757020746f203130302500000000000000000000000000600082015250565b7f4578636565647320746865206d61785478416d6f756e742e0000000000000000600082015250565b7f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660008201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000602082015250565b6154ab81614ecd565b81146154b657600080fd5b50565b6154c281614edf565b81146154cd57600080fd5b50565b6154d981614ef1565b81146154e457600080fd5b50565b6154f081614f1d565b81146154fb57600080fd5b50565b61550781614f27565b811461551257600080fd5b5056fea26469706673582212203c8cfc852635fafa2f3f7eaa45e7303cfd2951088ad5ff440ce5b06a66bae0f364736f6c63430008070033
Deployed Bytecode
0x6080604052600436106102975760003560e01c8063590f897e1161015a578063a9059cbb116100c1578063dd62ed3e1161007a578063dd62ed3e14610a27578063e79d416014610a64578063e9dae5ed14610a8f578063eafb5a3c14610ab8578063eec2744e14610ae1578063fb78680d14610b0a5761029e565b8063a9059cbb14610919578063b1b08f7114610956578063b3d514fb14610981578063c49b9a80146109ac578063cdfdb7dc146109d5578063d3f6a157146109fe5761029e565b8063893d20e811610113578063893d20e8146107f357806389fd9bc11461081e5780638da5cb5b1461085b57806395d89b4114610886578063a457c2d7146108b1578063a8edc797146108ee5761029e565b8063590f897e146106f9578063590ffdce1461072457806370a082311461074d578063715018a61461078a57806380c581d1146107a157806381c6f11b146107ca5761029e565b80633df9a8d2116101fe5780634a74bb02116101b75780634a74bb02146105d55780634ef3cce5146106005780634fb2e45d1461062b5780634fbee1931461065457806350a8e01614610691578063571ac8b0146106bc5761029e565b80633df9a8d2146104d95780633f3cf56c1461050457806340b9a54b1461052d5780634129ecee14610558578063452ed4f114610581578063469c0ef5146105ac5761029e565b806323b872dd1161025057806323b872dd146103b557806326003957146103f25780632b28fc7a1461041b578063313ce56714610446578063384f6b5114610471578063395093511461049c5761029e565b806303fd2a45146102a3578063044df726146102ce57806306fdde03146102f75780630758d92414610322578063095ea7b31461034d57806318160ddd1461038a5761029e565b3661029e57005b600080fd5b3480156102af57600080fd5b506102b8610b33565b6040516102c5919061497f565b60405180910390f35b3480156102da57600080fd5b506102f560048036038101906102f0919061442d565b610b39565b005b34801561030357600080fd5b5061030c610c06565b6040516103199190614a5a565b60405180910390f35b34801561032e57600080fd5b50610337610c98565b6040516103449190614a3f565b60405180910390f35b34801561035957600080fd5b50610374600480360381019061036f91906143c0565b610cbe565b6040516103819190614a24565b60405180910390f35b34801561039657600080fd5b5061039f610cdc565b6040516103ac9190614c9c565b60405180910390f35b3480156103c157600080fd5b506103dc60048036038101906103d7919061432d565b610ce6565b6040516103e99190614a24565b60405180910390f35b3480156103fe57600080fd5b506104196004803603810190610414919061449a565b610e33565b005b34801561042757600080fd5b50610430610f43565b60405161043d9190614c9c565b60405180910390f35b34801561045257600080fd5b5061045b610f49565b6040516104689190614d48565b60405180910390f35b34801561047d57600080fd5b50610486610f52565b6040516104939190614c9c565b60405180910390f35b3480156104a857600080fd5b506104c360048036038101906104be91906143c0565b610f58565b6040516104d09190614a24565b60405180910390f35b3480156104e557600080fd5b506104ee611004565b6040516104fb9190614c9c565b60405180910390f35b34801561051057600080fd5b5061052b6004803603810190610526919061449a565b61100a565b005b34801561053957600080fd5b5061054261111a565b60405161054f9190614c9c565b60405180910390f35b34801561056457600080fd5b5061057f600480360381019061057a91906145e7565b611120565b005b34801561058d57600080fd5b50610596611220565b6040516105a3919061497f565b60405180910390f35b3480156105b857600080fd5b506105d360048036038101906105ce919061446d565b611246565b005b3480156105e157600080fd5b506105ea6112f7565b6040516105f79190614a24565b60405180910390f35b34801561060c57600080fd5b5061061561130a565b6040516106229190614c9c565b60405180910390f35b34801561063757600080fd5b50610652600480360381019061064d9190614253565b611310565b005b34801561066057600080fd5b5061067b60048036038101906106769190614253565b611781565b6040516106889190614a24565b60405180910390f35b34801561069d57600080fd5b506106a66117d7565b6040516106b39190614a24565b60405180910390f35b3480156106c857600080fd5b506106e360048036038101906106de9190614253565b6117ea565b6040516106f09190614a24565b60405180910390f35b34801561070557600080fd5b5061070e61181d565b60405161071b9190614c9c565b60405180910390f35b34801561073057600080fd5b5061074b60048036038101906107469190614380565b611823565b005b34801561075957600080fd5b50610774600480360381019061076f9190614253565b611913565b6040516107819190614c9c565b60405180910390f35b34801561079657600080fd5b5061079f61195c565b005b3480156107ad57600080fd5b506107c860048036038101906107c39190614380565b611ada565b005b3480156107d657600080fd5b506107f160048036038101906107ec919061446d565b611c9a565b005b3480156107ff57600080fd5b50610808611d7e565b604051610815919061497f565b60405180910390f35b34801561082a57600080fd5b5061084560048036038101906108409190614253565b611d8d565b6040516108529190614a24565b60405180910390f35b34801561086757600080fd5b50610870611de3565b60405161087d919061497f565b60405180910390f35b34801561089257600080fd5b5061089b611e0c565b6040516108a89190614a5a565b60405180910390f35b3480156108bd57600080fd5b506108d860048036038101906108d391906143c0565b611e9e565b6040516108e59190614a24565b60405180910390f35b3480156108fa57600080fd5b50610903611f4a565b6040516109109190614c9c565b60405180910390f35b34801561092557600080fd5b50610940600480360381019061093b91906143c0565b611f50565b60405161094d9190614a24565b60405180910390f35b34801561096257600080fd5b5061096b611f6f565b6040516109789190614c9c565b60405180910390f35b34801561098d57600080fd5b50610996611f75565b6040516109a39190614c9c565b60405180910390f35b3480156109b857600080fd5b506109d360048036038101906109ce9190614400565b611f7b565b005b3480156109e157600080fd5b506109fc60048036038101906109f791906144da565b612064565b005b348015610a0a57600080fd5b50610a256004803603810190610a2091906142ad565b61216c565b005b348015610a3357600080fd5b50610a4e6004803603810190610a4991906142ed565b612287565b604051610a5b9190614c9c565b60405180910390f35b348015610a7057600080fd5b50610a7961230e565b604051610a869190614c9c565b60405180910390f35b348015610a9b57600080fd5b50610ab66004803603810190610ab191906144da565b612314565b005b348015610ac457600080fd5b50610adf6004803603810190610ada9190614253565b612424565b005b348015610aed57600080fd5b50610b086004803603810190610b039190614380565b6128d0565b005b348015610b1657600080fd5b50610b316004803603810190610b2c9190614580565b6129c0565b005b61dead81565b610b41612a99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc590614abc565b60405180910390fd5b81602260006101000a81548160ff02191690831515021790555080602960006101000a81548160ff0219169083151502179055505050565b6060600b8054610c1590614faf565b80601f0160208091040260200160405190810160405280929190818152602001828054610c4190614faf565b8015610c8e5780601f10610c6357610100808354040283529160200191610c8e565b820191906000526020600020905b815481529060010190602001808311610c7157829003601f168201915b5050505050905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610cd2610ccb612a99565b8484612aa1565b6001905092915050565b6000601354905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e1f5781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e179190614e99565b925050819055505b610e2a848484612c6c565b90509392505050565b610e3b612a99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ec8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebf90614abc565b60405180910390fd5b60008183601354610ed99190614e3f565b610ee39190614e0e565b90506103e8601354610ef59190614e0e565b811015610f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2e90614b3c565b60405180910390fd5b80601f81905550505050565b6105dc81565b60006009905090565b60105481565b6000610ffa610f65612a99565b848460046000610f73612a99565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ff59190614db8565b612aa1565b6001905092915050565b600f5481565b611012612a99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461109f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109690614abc565b60405180910390fd5b600081836013546110b09190614e3f565b6110ba9190614e0e565b90506103e86013546110cc9190614e0e565b81101561110e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110590614b3c565b60405180910390fd5b80601c81905550505050565b600d5481565b611128612a99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ac90614abc565b60405180910390fd5b60006027541480156111d45750602260019054906101000a900460ff16155b611213576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120a90614a9c565b60405180910390fd5b8060ff1660278190555050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61124e612a99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d290614abc565b60405180910390fd5b60006001826112ea9190614e3f565b9050806009819055505050565b601960159054906101000a900460ff1681565b60115481565b611318612a99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139c90614abc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140c90614c7c565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611486576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147d90614c7c565b60405180910390fd5b6114b160008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611823565b6114bc816001611823565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156115745780601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b61159d60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611913565b600460008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061166960008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611913565b11156116c4576116c260008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826116bd60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611913565b612c6c565b505b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b602260019054906101000a900460ff1681565b6000611816827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610cbe565b9050919050565b600e5481565b61182b612a99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118af90614abc565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611964612a99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e890614abc565b60405180910390fd5b611a1c60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611823565b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3565b611ae2612a99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6690614abc565b60405180910390fd5b600015158115151415611bd9576000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611c96565b600060035414611c365762093a8060035442611bf59190614e99565b11611c35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2c90614b7c565b60405180910390fd5b5b6001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550426003819055505b5050565b611ca2612a99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2690614abc565b60405180910390fd5b600060235414611d74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6b90614bfc565b60405180910390fd5b8060238190555050565b6000611d88611de3565b905090565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600c8054611e1b90614faf565b80601f0160208091040260200160405190810160405280929190818152602001828054611e4790614faf565b8015611e945780601f10611e6957610100808354040283529160200191611e94565b820191906000526020600020905b815481529060010190602001808311611e7757829003601f168201915b5050505050905090565b6000611f40611eab612a99565b848460046000611eb9612a99565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f3b9190614e99565b612aa1565b6001905092915050565b60125481565b6000611f64611f5d612a99565b8484612c6c565b506001905092915050565b6109c481565b6109c481565b611f83612a99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612010576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200790614abc565b60405180910390fd5b80601960156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516120599190614a24565b60405180910390a150565b61206c612a99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f090614abc565b60405180910390fd5b60648183856121089190614db8565b6121129190614db8565b14612152576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214990614c3c565b60405180910390fd5b826010819055508160118190555080601281905550505050565b612174612a99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612201576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f890614abc565b60405180910390fd5b81601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60285481565b61231c612a99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a090614abc565b60405180910390fd5b6105dc83111580156123bd57506109c48211155b80156123cb57506109c48111155b61240a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240190614b1c565b60405180910390fd5b82600d8190555081600e8190555080600f81905550505050565b61242c612a99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b090614abc565b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561250657600080fd5b505afa15801561251a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061253e9190614280565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156125a057600080fd5b505afa1580156125b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d89190614280565b6040518363ffffffff1660e01b81526004016125f592919061499a565b60206040518083038186803b15801561260d57600080fd5b505afa158015612621573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126459190614280565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612848578173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156126c257600080fd5b505afa1580156126d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fa9190614280565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561275c57600080fd5b505afa158015612770573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127949190614280565b6040518363ffffffff1660e01b81526004016127b192919061499a565b602060405180830381600087803b1580156127cb57600080fd5b505af11580156127df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128039190614280565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061288a565b80601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b81601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6128d8612a99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295c90614abc565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6129c8612a99565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4c90614abc565b60405180910390fd5b8284601354612a649190614e3f565b612a6e9190614e0e565b6020819055508082601354612a839190614e3f565b612a8d9190614e0e565b60218190555050505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0890614bbc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7890614bbc565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612c5f9190614c9c565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cd490614b5c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612d4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4490614b5c565b60405180910390fd5b60008211612d90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8790614b9c565b60405180910390fd5b612d9a8484613299565b1561312057602960009054906101000a900460ff1615612f2d57600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612e9b5743602a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415612e5257600080fd5b43602a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f2c565b43602a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415612ee757600080fd5b43602a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612fce5750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561301957601c54821115613018576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300f90614c5c565b60405180910390fd5b5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156130c15750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561311f57601f54826130d385611913565b6130dd9190614db8565b111561311e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161311590614c1c565b60405180910390fd5b5b5b600060019050600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806131c75750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156131d157600090505b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561328357601960149054906101000a900460ff1615801561324c5750601960159054906101000a900460ff165b1561328257600061325c30611913565b905060205481106132805760215481106132765760215490505b61327f81613470565b5b505b5b61328f858585846136e8565b9150509392505050565b60006132a3611de3565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561331157506132e1611de3565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156133675750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133bd5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133f7575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156134305750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561346857503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b905092915050565b6001601960146101000a81548160ff02191690831515021790555060006012546011546010546134a09190614db8565b6134aa9190614db8565b14156134b5576136ca565b600060026012546011546010546134cc9190614db8565b6134d69190614db8565b601054846134e49190614e3f565b6134ee9190614e0e565b6134f89190614e0e565b9050600081836135089190614e99565b905061351381613a4b565b60004790506000600260125460115460105461352f9190614db8565b6135399190614db8565b601054846135479190614e3f565b6135519190614e0e565b61355b9190614e0e565b905060008411156135ac576135708482613c70565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618482866040516135a393929190614d11565b60405180910390a15b600084866135ba9190614e99565b11156136c557601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc60125460115461360c9190614db8565b601154848661361b9190614e99565b6136259190614e3f565b61362f9190614e0e565b9081150290604051600060405180830381858888f1935050505015801561365a573d6000803e3d6000fd5b50601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156136c3573d6000803e3d6000fd5b505b505050505b6000601960146101000a81548160ff02191690831515021790555050565b6000602260009054906101000a900460ff16156139125761370885611d8d565b80613718575061371784611d8d565b5b15613758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161374f90614bdc565b60405180910390fd5b602260019054906101000a900460ff166137de576137768585613d32565b602260019054906101000a900460ff1615801561379957506137988585613299565b5b156137d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137d090614afc565b60405180910390fd5b613911565b60006024541180156138395750600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561384b575061384a8585613299565b5b1561391057602754602454436138619190614e99565b101561390f576001600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550602860008154809291906138d290614fe1565b91905055507f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e584604051613906919061497f565b60405180910390a15b5b5b5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546139619190614e99565b925050819055506000826139755783613981565b613980868686613ee8565b5b905080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546139d29190614db8565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613a369190614c9c565b60405180910390a36001915050949350505050565b6000600267ffffffffffffffff811115613a6857613a676150e6565b5b604051908082528060200260200182016040528015613a965781602001602082028036833780820191505090505b5090503081600081518110613aae57613aad6150b7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613b5057600080fd5b505afa158015613b64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b889190614280565b81600181518110613b9c57613b9b6150b7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613c3a959493929190614cb7565b600060405180830381600087803b158015613c5457600080fd5b505af1158015613c68573d6000803e3d6000fd5b505050505050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401613cd9969594939291906149c3565b6060604051808303818588803b158015613cf257600080fd5b505af1158015613d06573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613d2b919061452d565b5050505050565b602260019054906101000a900460ff1615613d82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d7990614adc565b60405180910390fd5b613d8c8282613299565b158015613de65750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15613ee457600260275414613e0e5761138843613e039190614db8565b602481905550613e16565b436024819055505b6001600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001602260016101000a81548160ff021916908315150217905550426025819055506001601960156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1596001604051613edb9190614a24565b60405180910390a15b5050565b600080601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415614030576000613f4c85611913565b1115613fe257600954600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442613fa09190614e99565b1015613fe1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613fd890614a7c565b60405180910390fd5b5b42600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600d549050614097565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561409057600e549050614096565b600f5490505b5b6140a18585613299565b156140d157600060235414806140c65750600a80546140c09190614e0e565b60235414155b156140d057600080fd5b5b600061271082856140e29190614e3f565b6140ec9190614e0e565b905080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461413d9190614db8565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516141a19190614c9c565b60405180910390a380846141b59190614e99565b925050509392505050565b6000813590506141cf816154a2565b92915050565b6000815190506141e4816154a2565b92915050565b6000813590506141f9816154b9565b92915050565b60008135905061420e816154d0565b92915050565b600081359050614223816154e7565b92915050565b600081519050614238816154e7565b92915050565b60008135905061424d816154fe565b92915050565b60006020828403121561426957614268615115565b5b6000614277848285016141c0565b91505092915050565b60006020828403121561429657614295615115565b5b60006142a4848285016141d5565b91505092915050565b600080604083850312156142c4576142c3615115565b5b60006142d2858286016141ea565b92505060206142e3858286016141ea565b9150509250929050565b6000806040838503121561430457614303615115565b5b6000614312858286016141c0565b9250506020614323858286016141c0565b9150509250929050565b60008060006060848603121561434657614345615115565b5b6000614354868287016141c0565b9350506020614365868287016141c0565b925050604061437686828701614214565b9150509250925092565b6000806040838503121561439757614396615115565b5b60006143a5858286016141c0565b92505060206143b6858286016141ff565b9150509250929050565b600080604083850312156143d7576143d6615115565b5b60006143e5858286016141c0565b92505060206143f685828601614214565b9150509250929050565b60006020828403121561441657614415615115565b5b6000614424848285016141ff565b91505092915050565b6000806040838503121561444457614443615115565b5b6000614452858286016141ff565b9250506020614463858286016141ff565b9150509250929050565b60006020828403121561448357614482615115565b5b600061449184828501614214565b91505092915050565b600080604083850312156144b1576144b0615115565b5b60006144bf85828601614214565b92505060206144d085828601614214565b9150509250929050565b6000806000606084860312156144f3576144f2615115565b5b600061450186828701614214565b935050602061451286828701614214565b925050604061452386828701614214565b9150509250925092565b60008060006060848603121561454657614545615115565b5b600061455486828701614229565b935050602061456586828701614229565b925050604061457686828701614229565b9150509250925092565b6000806000806080858703121561459a57614599615115565b5b60006145a887828801614214565b94505060206145b987828801614214565b93505060406145ca87828801614214565b92505060606145db87828801614214565b91505092959194509250565b6000602082840312156145fd576145fc615115565b5b600061460b8482850161423e565b91505092915050565b6000614620838361462c565b60208301905092915050565b61463581614ecd565b82525050565b61464481614ecd565b82525050565b600061465582614d73565b61465f8185614d96565b935061466a83614d63565b8060005b8381101561469b5781516146828882614614565b975061468d83614d89565b92505060018101905061466e565b5085935050505092915050565b6146b181614ef1565b82525050565b6146c081614f34565b82525050565b6146cf81614f46565b82525050565b60006146e082614d7e565b6146ea8185614da7565b93506146fa818560208601614f7c565b6147038161511a565b840191505092915050565b600061471b600c83614da7565b91506147268261512b565b602082019050919050565b600061473e603083614da7565b915061474982615154565b604082019050919050565b6000614761601183614da7565b915061476c826151a3565b602082019050919050565b6000614784602383614da7565b915061478f826151cc565b604082019050919050565b60006147a7602583614da7565b91506147b28261521b565b604082019050919050565b60006147ca601783614da7565b91506147d58261526a565b602082019050919050565b60006147ed602383614da7565b91506147f882615293565b604082019050919050565b6000614810601483614da7565b915061481b826152e2565b602082019050919050565b6000614833601283614da7565b915061483e8261530b565b602082019050919050565b6000614856600883614da7565b915061486182615334565b602082019050919050565b6000614879601383614da7565b91506148848261535d565b602082019050919050565b600061489c601083614da7565b91506148a782615386565b602082019050919050565b60006148bf600683614da7565b91506148ca826153af565b602082019050919050565b60006148e2601a83614da7565b91506148ed826153d8565b602082019050919050565b6000614905601383614da7565b915061491082615401565b602082019050919050565b6000614928601883614da7565b91506149338261542a565b602082019050919050565b600061494b603d83614da7565b915061495682615453565b604082019050919050565b61496a81614f1d565b82525050565b61497981614f27565b82525050565b6000602082019050614994600083018461463b565b92915050565b60006040820190506149af600083018561463b565b6149bc602083018461463b565b9392505050565b600060c0820190506149d8600083018961463b565b6149e56020830188614961565b6149f260408301876146c6565b6149ff60608301866146c6565b614a0c608083018561463b565b614a1960a0830184614961565b979650505050505050565b6000602082019050614a3960008301846146a8565b92915050565b6000602082019050614a5460008301846146b7565b92915050565b60006020820190508181036000830152614a7481846146d5565b905092915050565b60006020820190508181036000830152614a958161470e565b9050919050565b60006020820190508181036000830152614ab581614731565b9050919050565b60006020820190508181036000830152614ad581614754565b9050919050565b60006020820190508181036000830152614af581614777565b9050919050565b60006020820190508181036000830152614b158161479a565b9050919050565b60006020820190508181036000830152614b35816147bd565b9050919050565b60006020820190508181036000830152614b55816147e0565b9050919050565b60006020820190508181036000830152614b7581614803565b9050919050565b60006020820190508181036000830152614b9581614826565b9050919050565b60006020820190508181036000830152614bb581614849565b9050919050565b60006020820190508181036000830152614bd58161486c565b9050919050565b60006020820190508181036000830152614bf58161488f565b9050919050565b60006020820190508181036000830152614c15816148b2565b9050919050565b60006020820190508181036000830152614c35816148d5565b9050919050565b60006020820190508181036000830152614c55816148f8565b9050919050565b60006020820190508181036000830152614c758161491b565b9050919050565b60006020820190508181036000830152614c958161493e565b9050919050565b6000602082019050614cb16000830184614961565b92915050565b600060a082019050614ccc6000830188614961565b614cd960208301876146c6565b8181036040830152614ceb818661464a565b9050614cfa606083018561463b565b614d076080830184614961565b9695505050505050565b6000606082019050614d266000830186614961565b614d336020830185614961565b614d406040830184614961565b949350505050565b6000602082019050614d5d6000830184614970565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614dc382614f1d565b9150614dce83614f1d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614e0357614e0261502a565b5b828201905092915050565b6000614e1982614f1d565b9150614e2483614f1d565b925082614e3457614e33615059565b5b828204905092915050565b6000614e4a82614f1d565b9150614e5583614f1d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614e8e57614e8d61502a565b5b828202905092915050565b6000614ea482614f1d565b9150614eaf83614f1d565b925082821015614ec257614ec161502a565b5b828203905092915050565b6000614ed882614efd565b9050919050565b6000614eea82614efd565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614f3f82614f58565b9050919050565b6000614f5182614f1d565b9050919050565b6000614f6382614f6a565b9050919050565b6000614f7582614efd565b9050919050565b60005b83811015614f9a578082015181840152602081019050614f7f565b83811115614fa9576000848401525b50505050565b60006002820490506001821680614fc757607f821691505b60208210811415614fdb57614fda615088565b5b50919050565b6000614fec82614f1d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561501f5761501e61502a565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f42757920636f6f6c646f776e0000000000000000000000000000000000000000600082015250565b7f5374617274696e672050726f74656374696f6e73206861766520616c7265616460008201527f79206265656e2065786563757465642e00000000000000000000000000000000602082015250565b7f43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000600082015250565b7f4c697175696469747920616c726561647920616464656420616e64206d61726b60008201527f65642e0000000000000000000000000000000000000000000000000000000000602082015250565b7f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060008201527f74696d652e000000000000000000000000000000000000000000000000000000602082015250565b7f43616e6e6f7420657863656564206d6178696d756d732e000000000000000000600082015250565b7f4d7573742062652061626f766520302e3125206f6620746f74616c207375707060008201527f6c792e0000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a205a65726f20616464726573732e000000000000000000000000600082015250565b7f4f6e65207765656b20636f6f6c646f776e2e0000000000000000000000000000600082015250565b7f4d757374203e302e000000000000000000000000000000000000000000000000600082015250565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b7f536e697065722072656a65637465642e00000000000000000000000000000000600082015250565b7f4572726f722e0000000000000000000000000000000000000000000000000000600082015250565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b7f4d7573742061646420757020746f203130302500000000000000000000000000600082015250565b7f4578636565647320746865206d61785478416d6f756e742e0000000000000000600082015250565b7f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660008201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000602082015250565b6154ab81614ecd565b81146154b657600080fd5b50565b6154c281614edf565b81146154cd57600080fd5b50565b6154d981614ef1565b81146154e457600080fd5b50565b6154f081614f1d565b81146154fb57600080fd5b50565b61550781614f27565b811461551257600080fd5b5056fea26469706673582212203c8cfc852635fafa2f3f7eaa45e7303cfd2951088ad5ff440ce5b06a66bae0f364736f6c63430008070033
Deployed Bytecode Sourcemap
5884:19200:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7463:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16496:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12448:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7288:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13061:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12183:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13675:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17604:260;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6762:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12272:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6917:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13989:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6719:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17339:257;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6646:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16271:217;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7330:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15787:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7774:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6959:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10866:761;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15372:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8356:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13547:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6682:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15505:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12761:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11635:195;;;;;;;;;;;;;:::i;:::-;;14954:410;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15956:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12534:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15647:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10779:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12358:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14212:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7001:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12886:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6861:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6811:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18383:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17054:277;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18169:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12620:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8607:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16673:373;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14445:501;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16122:141;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17872:289;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7463:73;7494:42;7463:73;:::o;16496:169::-;9311:12;:10;:12::i;:::-;9301:22;;:6;;;;;;;;;;:22;;;9293:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;16610:9:::1;16591:16;;:28;;;;;;;;;;;;;;;;;;16648:9;16630:15;;:27;;;;;;;;;;;;;;;;;;16496:169:::0;;:::o;12448:80::-;12496:13;12520:5;12513:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12448:80;:::o;7288:35::-;;;;;;;;;;;;;:::o;13061:161::-;13136:4;13153:39;13162:12;:10;:12::i;:::-;13176:7;13185:6;13153:8;:39::i;:::-;13210:4;13203:11;;13061:161;;;;:::o;12183:83::-;12238:7;12256;;12249:14;;12183:83;:::o;13675:306::-;13775:4;13831:17;13796:11;:19;13808:6;13796:19;;;;;;;;;;;;;;;:31;13816:10;13796:31;;;;;;;;;;;;;;;;:52;13792:126;;13900:6;13865:11;:19;13877:6;13865:19;;;;;;;;;;;;;;;:31;13885:10;13865:31;;;;;;;;;;;;;;;;:41;;;;;;;:::i;:::-;;;;;;;;13792:126;13937:36;13947:6;13955:9;13966:6;13937:9;:36::i;:::-;13930:43;;13675:306;;;;;:::o;17604:260::-;9311:12;:10;:12::i;:::-;9301:22;;:6;;;;;;;;;;:22;;;9293:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;17694:13:::1;17732:7;17721;17711;;:17;;;;:::i;:::-;17710:29;;;;:::i;:::-;17694:45;;17778:4;17768:7;;:14;;;;:::i;:::-;17758:5;:25;;17750:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;17851:5;17834:14;:22;;;;17683:181;17604:260:::0;;:::o;6762:42::-;6800:4;6762:42;:::o;12272:80::-;12324:5;7182:1;12333:16;;12272:80;:::o;6917:35::-;;;;:::o;13989:215::-;14077:4;14094:80;14103:12;:10;:12::i;:::-;14117:7;14163:10;14126:11;:25;14138:12;:10;:12::i;:::-;14126:25;;;;;;;;;;;;;;;:34;14152:7;14126:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;14094:8;:80::i;:::-;14192:4;14185:11;;13989:215;;;;:::o;6719:34::-;;;;:::o;17339:257::-;9311:12;:10;:12::i;:::-;9301:22;;:6;;;;;;;;;;:22;;;9293:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;17428:13:::1;17466:7;17455;17445;;:17;;;;:::i;:::-;17444:29;;;;:::i;:::-;17428:45;;17512:4;17502:7;;:14;;;;:::i;:::-;17492:5;:25;;17484:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;17583:5;17568:12;:20;;;;17417:179;17339:257:::0;;:::o;6646:29::-;;;;:::o;16271:217::-;9311:12;:10;:12::i;:::-;9301:22;;:6;;;;;;;;;;:22;;;9293:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;16372:1:::1;16355:13;;:18;:39;;;;;16378:16;;;;;;;;;;;16377:17;16355:39;16346:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;16474:6;16458:22;;:13;:22;;;;16271:217:::0;:::o;7330:21::-;;;;;;;;;;;;;:::o;15787:161::-;9311:12;:10;:12::i;:::-;9301:22;;:6;;;;;;;;;;:22;;;9293:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;15859:21:::1;15893:9;15883:7;:19;;;;:::i;:::-;15859:43;;15927:13;15913:11;:27;;;;15848:100;15787:161:::0;:::o;7774:41::-;;;;;;;;;;;;;:::o;6959:35::-;;;;:::o;10866:761::-;9311:12;:10;:12::i;:::-;9301:22;;:6;;;;;;;;;;:22;;;9293:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;10967:1:::1;10947:22;;:8;:22;;;;10939:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;7494:42;11054:16;;:8;:16;;;;11046:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;11147:34;11167:6;::::0;::::1;;;;;;;;11175:5;11147:19;:34::i;:::-;11192:35;11212:8;11222:4;11192:19;:35::i;:::-;11280:6;::::0;::::1;;;;;;;;11252:35;;:16;;;;;;;;;;;:35;;;11248:90;;;11329:8;11302:16;;:36;;;;;;;;;;;;;;;;;;11248:90;11391:17;11401:6;::::0;::::1;;;;;;;;11391:9;:17::i;:::-;11359:11;:19;11371:6:::0;::::1;;;;;;;;;;11359:19;;;;;;;;;;;;;;;:29;11379:8;11359:29;;;;;;;;;;;;;;;:49;;;;11442:1;11422:17;11432:6;::::0;::::1;;;;;;;;11422:9;:17::i;:::-;:21;11419:99;;;11460:46;11470:6;::::0;::::1;;;;;;;;11478:8;11488:17;11498:6;::::0;::::1;;;;;;;;11488:9;:17::i;:::-;11460:9;:46::i;:::-;;11419:99;11547:8;11538:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;11600:8;11571:38;;11592:6;::::0;::::1;;;;;;;;11571:38;;;;;;;;;;;;10866:761:::0;:::o;15372:125::-;15437:4;15461:19;:28;15481:7;15461:28;;;;;;;;;;;;;;;;;;;;;;;;;15454:35;;15372:125;;;:::o;8356:36::-;;;;;;;;;;;;;:::o;13547:120::-;13600:4;13624:35;13632:7;13641:17;13624:7;:35::i;:::-;13617:42;;13547:120;;;:::o;6682:30::-;;;;:::o;15505:134::-;9311:12;:10;:12::i;:::-;9301:22;;:6;;;;;;;;;;:22;;;9293:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;15624:7:::1;15593:19;:28;15613:7;15593:28;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;15505:134:::0;;:::o;12761:117::-;12827:7;12854;:16;12862:7;12854:16;;;;;;;;;;;;;;;;12847:23;;12761:117;;;:::o;11635:195::-;9311:12;:10;:12::i;:::-;9301:22;;:6;;;;;;;;;;:22;;;9293:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;11702:34:::1;11722:6;::::0;::::1;;;;;;;;11730:5;11702:19;:34::i;:::-;11764:1;11747:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;11819:1;11782:40;;11803:6;::::0;::::1;;;;;;;;11782:40;;;;;;;;;;;;11635:195::o:0;14954:410::-;9311:12;:10;:12::i;:::-;9301:22;;:6;;;;;;;;;;:22;;;9293:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;15046:5:::1;15035:16;;:7;:16;;;15031:326;;;15084:5;15068:7;:13;15076:4;15068:13;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;15031:326;;;15147:1;15126:17;;:22;15122:139;;15215:7;15195:17;;15177:15;:35;;;;:::i;:::-;:45;15169:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;15122:139;15291:4;15275:7;:13;15283:4;15275:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;15330:15;15310:17;:35;;;;15031:326;14954:410:::0;;:::o;15956:158::-;9311:12;:10;:12::i;:::-;9301:22;;:6;;;;;;;;;;:22;;;9293:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;16055:1:::1;16038:13;;:18;16029:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;16094:12;16078:13;:28;;;;15956:158:::0;:::o;12534:80::-;12586:7;12604;:5;:7::i;:::-;12597:14;;12534:80;:::o;15647:132::-;15716:4;15740:22;:31;15763:7;15740:31;;;;;;;;;;;;;;;;;;;;;;;;;15733:38;;15647:132;;;:::o;10779:79::-;10817:7;10844:6;;;;;;;;;;;10837:13;;10779:79;:::o;12358:84::-;12408:13;12432:7;12425:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12358:84;:::o;14212:225::-;14305:4;14322:85;14331:12;:10;:12::i;:::-;14345:7;14391:15;14354:11;:25;14366:12;:10;:12::i;:::-;14354:25;;;;;;;;;;;;;;;:34;14380:7;14354:34;;;;;;;;;;;;;;;;:52;;;;:::i;:::-;14322:8;:85::i;:::-;14425:4;14418:11;;14212:225;;;;:::o;7001:29::-;;;;:::o;12886:167::-;12964:4;12981:42;12991:12;:10;:12::i;:::-;13005:9;13016:6;12981:9;:42::i;:::-;;13041:4;13034:11;;12886:167;;;;:::o;6861:47::-;6904:4;6861:47;:::o;6811:43::-;6850:4;6811:43;:::o;18383:171::-;9311:12;:10;:12::i;:::-;9301:22;;:6;;;;;;;;;;:22;;;9293:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;18484:8:::1;18460:21;;:32;;;;;;;;;;;;;;;;;;18508:38;18537:8;18508:38;;;;;;:::i;:::-;;;;;;;;18383:171:::0;:::o;17054:277::-;9311:12;:10;:12::i;:::-;9301:22;;:6;;;;;;;;;;:22;;;9293:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;17194:3:::1;17187;17175:9;17163;:21;;;;:::i;:::-;:27;;;;:::i;:::-;:34;17154:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17250:9;17232:15;:27;;;;17288:9;17270:15;:27;;;;17320:3;17308:9;:15;;;;17054:277:::0;;;:::o;18169:206::-;9311:12;:10;:12::i;:::-;9301:22;;:6;;;;;;;;;;:22;;;9293:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;18307:15:::1;18280:16;;:43;;;;;;;;;;;;;;;;;;18356:10;18334:11;;:33;;;;;;;;;;;;;;;;;;18169:206:::0;;:::o;12620:133::-;12704:7;12722:11;:19;12734:6;12722:19;;;;;;;;;;;;;;;:28;12742:7;12722:28;;;;;;;;;;;;;;;;12715:35;;12620:133;;;;:::o;8607:32::-;;;;:::o;16673:373::-;9311:12;:10;:12::i;:::-;9301:22;;:6;;;;;;;;;;:22;;;9293:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;6800:4:::1;16783:6;:21;;:65;;;;;6850:4;16825:7;:23;;16783:65;:117;;;;;6904:4;16869:11;:31;;16783:117;16775:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;16966:6;16956:7;:16;;;;16994:7;16983:8;:18;;;;17027:11;17012:12;:26;;;;16673:373:::0;;;:::o;14445:501::-;9311:12;:10;:12::i;:::-;9301:22;;:6;;;;;;;;;;:22;;;9293:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;14516:29:::1;14567:9;14516:61;;14588:16;14625:10;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14607:47;;;14663:4;14670:10;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14607:81;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14588:100;;14723:1;14703:22;;:8;:22;;;14699:207;;;14769:10;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14751:50;;;14810:4;14817:10;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14751:84;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14742:6;;:93;;;;;;;;;;;;;;;;;;14699:207;;;14886:8;14877:6;;:17;;;;;;;;;;;;;;;;;;14699:207;14928:10;14916:9;;:22;;;;;;;;;;;;;;;;;;14505:441;;14445:501:::0;:::o;16122:141::-;9311:12;:10;:12::i;:::-;9301:22;;:6;;;;;;;;;;:22;;;9293:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;16248:7:::1;16214:22;:31;16237:7;16214:31;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;16122:141:::0;;:::o;17872:289::-;9311:12;:10;:12::i;:::-;9301:22;;:6;;;;;;;;;;:22;;;9293:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;18072:16:::1;18052;18042:7;;:26;;;;:::i;:::-;18041:47;;;;:::i;:::-;18025:13;:63;;;;18140:13;18123;18113:7;;:23;;;;:::i;:::-;18112:41;;;;:::i;:::-;18099:10;:54;;;;17872:289:::0;;;;:::o;277:107::-;322:15;365:10;350:26;;277:107;:::o;13230:309::-;13342:1;13324:20;;:6;:20;;;;13316:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;13406:1;13387:21;;:7;:21;;;;13379:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;13476:6;13445:11;:19;13457:6;13445:19;;;;;;;;;;;;;;;:28;13465:7;13445:28;;;;;;;;;;;;;;;:37;;;;13515:7;13498:33;;13507:6;13498:33;;;13524:6;13498:33;;;;;;:::i;:::-;;;;;;;;13230:309;;;:::o;18893:1646::-;18972:4;19013:1;18997:18;;:4;:18;;;;18989:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;19073:1;19059:16;;:2;:16;;;;19051:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;19128:1;19119:6;:10;19111:31;;;;;;;;;;;;:::i;:::-;;;;;;;;;19156:20;19167:4;19173:2;19156:10;:20::i;:::-;19153:707;;;19197:15;;;;;;;;;;;19193:347;;;19237:7;:13;19245:4;19237:13;;;;;;;;;;;;;;;;;;;;;;;;;19233:292;;;19299:12;19282:9;:13;19292:2;19282:13;;;;;;;;;;;;;;;;:29;;19274:38;;;;;;19351:12;19335:9;:13;19345:2;19335:13;;;;;;;;;;;;;;;:28;;;;19233:292;;;19439:12;19420:9;:15;19430:4;19420:15;;;;;;;;;;;;;;;;:31;;19412:40;;;;;;19493:12;19475:9;:15;19485:4;19475:15;;;;;;;;;;;;;;;:30;;;;19233:292;19193:347;19557:7;:13;19565:4;19557:13;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;;19574:7;:11;19582:2;19574:11;;;;;;;;;;;;;;;;;;;;;;;;;19557:28;19554:126;;;19623:12;;19613:6;:22;;19605:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;19554:126;19703:14;;;;;;;;;;;19697:20;;:2;:20;;;;:36;;;;;19722:7;:11;19730:2;19722:11;;;;;;;;;;;;;;;;;;;;;;;;;19721:12;19697:36;19694:155;;;19788:14;;19778:6;19762:13;19772:2;19762:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;19754:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;19694:155;19153:707;19872:12;19887:4;19872:19;;19905;:25;19925:4;19905:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;19934:19;:23;19954:2;19934:23;;;;;;;;;;;;;;;;;;;;;;;;;19905:52;19902:98;;;19983:5;19973:15;;19902:98;20016:7;:11;20024:2;20016:11;;;;;;;;;;;;;;;;;;;;;;;;;20012:457;;;20049:16;;;;;;;;;;;20048:17;:59;;;;;20086:21;;;;;;;;;;;20048:59;20044:408;;;20142:28;20173:24;20191:4;20173:9;:24::i;:::-;20142:55;;20244:13;;20220:20;:37;20216:221;;20309:10;;20285:20;:34;20282:77;;20346:10;;20323:33;;20282:77;20381:36;20396:20;20381:14;:36::i;:::-;20216:221;20123:329;20044:408;20012:457;20487:44;20505:4;20511:2;20515:6;20523:7;20487:17;:44::i;:::-;20480:51;;;18893:1646;;;;;:::o;18562:323::-;18630:4;18662:7;:5;:7::i;:::-;18654:15;;:4;:15;;;;:45;;;;;18692:7;:5;:7::i;:::-;18686:13;;:2;:13;;;;18654:45;:84;;;;;18717:17;:21;18735:2;18717:21;;;;;;;;;;;;;;;;;;;;;;;;;18716:22;18654:84;:125;;;;;18756:17;:23;18774:4;18756:23;;;;;;;;;;;;;;;;;;;;;;;;;18755:24;18654:125;:152;;;;;7494:42;18796:10;;:2;:10;;;;18654:152;:185;;;;;18837:1;18823:16;;:2;:16;;;;18654:185;:223;;;;;18872:4;18856:21;;:4;:21;;;;18654:223;18647:230;;18562:323;;;;:::o;20547:1015::-;9194:4;9175:16;;:23;;;;;;;;;;;;;;;;;;20685:1:::1;20672:9;;20654:15;;20636;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;:50;20632:76;;;20701:7;;20632:76;20718:17;20833:1;20819:9;;20801:15;;20783;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;20763:15;;20740:20;:38;;;;:::i;:::-;20739:90;;;;:::i;:::-;20738:96;;;;:::i;:::-;20718:116;;20847:20;20893:9;20870:20;:32;;;;:::i;:::-;20847:55;;20913:30;20930:12;20913:16;:30::i;:::-;20956:22;20981:21;20956:46;;21013:24;21129:1;21115:9;;21097:15;;21079;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;21059:15;;21042:14;:32;;;;:::i;:::-;21041:84;;;;:::i;:::-;21040:90;;;;:::i;:::-;21013:117;;21159:1;21147:9;:13;21143:161;;;21177:41;21190:9;21201:16;21177:12;:41::i;:::-;21238:54;21253:9;21264:16;21282:9;21238:54;;;;;;;;:::i;:::-;;;;;;;;21143:161;21353:1;21341:9;21318:20;:32;;;;:::i;:::-;:36;21314:241;;;21371:16;;;;;;;;;;;:25;;:114;21474:9;;21456:15;;:27;;;;:::i;:::-;21436:15;;21416:16;21399:14;:33;;;;:::i;:::-;21398:53;;;;:::i;:::-;21397:87;;;;:::i;:::-;21371:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;21500:11;;;;;;;;;;;:20;;:43;21521:21;21500:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;21314:241;20621:941;;;;9209:1;9240:5:::0;9221:16;;:24;;;;;;;;;;;;;;;;;;20547:1015;:::o;22958:1216::-;23058:4;23079:16;;;;;;;;;;;23075:858;;;23115:27;23137:4;23115:21;:27::i;:::-;:56;;;;23146:25;23168:2;23146:21;:25::i;:::-;23115:56;23111:123;;;23192:26;;;;;;;;;;:::i;:::-;;;;;;;;23111:123;23255:16;;;;;;;;;;;23250:672;;23292:28;23311:4;23317:2;23292:18;:28::i;:::-;23344:16;;;;;;;;;;;23343:17;:41;;;;;23364:20;23375:4;23381:2;23364:10;:20::i;:::-;23343:41;23339:137;;;23409:47;;;;;;;;;;:::i;:::-;;;;;;;;23339:137;23250:672;;;23535:1;23520:12;;:16;:55;;;;;23562:7;:13;23570:4;23562:13;;;;;;;;;;;;;;;;;;;;;;;;;23520:55;:101;;;;;23601:20;23612:4;23618:2;23601:10;:20::i;:::-;23520:101;23516:391;;;23698:13;;23683:12;;23668;:27;;;;:::i;:::-;:43;23664:224;;;23769:4;23740:22;:26;23763:2;23740:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;23800:13;;:16;;;;;;;;;:::i;:::-;;;;;;23848;23861:2;23848:16;;;;;;:::i;:::-;;;;;;;;23664:224;23516:391;23250:672;23075:858;23962:6;23945:7;:13;23953:4;23945:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;23979:22;24005:7;24004:48;;24046:6;24004:48;;;24016:27;24026:4;24032:2;24036:6;24016:9;:27::i;:::-;24004:48;23979:73;;24078:14;24063:7;:11;24071:2;24063:11;;;;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;24125:2;24110:34;;24119:4;24110:34;;;24129:14;24110:34;;;;;;:::i;:::-;;;;;;;;24162:4;24155:11;;;22958:1216;;;;;;:::o;21570:417::-;21637:21;21675:1;21661:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21637:40;;21706:4;21688;21693:1;21688:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;21732:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21722:4;21727:1;21722:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;21761:9;;;;;;;;;;;:60;;;21836:11;21862:1;21906:4;21933;21953:15;21761:218;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21626:361;21570:417;:::o;21995:332::-;22076:9;;;;;;;;;;;:25;;;22109:9;22142:4;22162:11;22188:1;22231;7494:42;22293:15;22076:243;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21995:332;;:::o;22335:615::-;22417:16;;;;;;;;;;;22416:17;22408:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;22489:20;22500:4;22506:2;22489:10;:20::i;:::-;22488:21;:37;;;;;22519:6;;;;;;;;;;;22513:12;;:2;:12;;;22488:37;22484:459;;;22563:1;22546:13;;:18;22542:161;;22615:4;22600:12;:19;;;;:::i;:::-;22585:12;:34;;;;22542:161;;;22675:12;22660;:27;;;;22542:161;22745:4;22719:17;:23;22737:4;22719:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;22783:4;22764:16;;:23;;;;;;;;;;;;;;;;;;22817:15;22802:12;:30;;;;22873:4;22849:21;;:28;;;;;;;;;;;;;;;;;;22897:34;22926:4;22897:34;;;;;;:::i;:::-;;;;;;;;22484:459;22335:615;;:::o;24182:899::-;24261:7;24281:18;24322:6;;;;;;;;;;;24314:14;;:4;:14;;;24310:383;;;24365:1;24349:13;24359:2;24349:9;:13::i;:::-;:17;24345:125;;;24426:11;;24412:6;:10;24419:2;24412:10;;;;;;;;;;;;;;;;24394:15;:28;;;;:::i;:::-;:43;;24386:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24345:125;24499:15;24486:6;:10;24493:2;24486:10;;;;;;;;;;;;;;;:28;;;;24542:7;;24529:20;;24310:383;;;24579:6;;;;;;;;;;;24573:12;;:2;:12;;;24569:124;;;24615:8;;24602:21;;24569:124;;;24669:12;;24656:25;;24569:124;24310:383;24709:20;24720:4;24726:2;24709:10;:20::i;:::-;24705:156;;;24766:1;24749:13;;:18;:56;;;;24803:2;24788:14;;:17;;;;:::i;:::-;24771:13;;:34;;24749:56;24745:105;;;24826:8;;;24745:105;24705:156;24873:17;7083:6;24902:10;24893:6;:19;;;;:::i;:::-;:38;;;;:::i;:::-;24873:58;;24970:9;24944:7;:22;24960:4;24944:22;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;25018:4;24995:40;;25004:4;24995:40;;;25025:9;24995:40;;;;;;:::i;:::-;;;;;;;;25064:9;25055:6;:18;;;;:::i;:::-;25048:25;;;;24182:899;;;;;:::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:155::-;355:5;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;301:155;;;;:::o;462:133::-;505:5;543:6;530:20;521:29;;559:30;583:5;559:30;:::i;:::-;462:133;;;;:::o;601:139::-;647:5;685:6;672:20;663:29;;701:33;728:5;701:33;:::i;:::-;601:139;;;;:::o;746:143::-;803:5;834:6;828:13;819:22;;850:33;877:5;850:33;:::i;:::-;746:143;;;;:::o;895:135::-;939:5;977:6;964:20;955:29;;993:31;1018:5;993:31;:::i;:::-;895:135;;;;:::o;1036:329::-;1095:6;1144:2;1132:9;1123:7;1119:23;1115:32;1112:119;;;1150:79;;:::i;:::-;1112:119;1270:1;1295:53;1340:7;1331:6;1320:9;1316:22;1295:53;:::i;:::-;1285:63;;1241:117;1036:329;;;;:::o;1371:351::-;1441:6;1490:2;1478:9;1469:7;1465:23;1461:32;1458:119;;;1496:79;;:::i;:::-;1458:119;1616:1;1641:64;1697:7;1688:6;1677:9;1673:22;1641:64;:::i;:::-;1631:74;;1587:128;1371:351;;;;:::o;1728:506::-;1812:6;1820;1869:2;1857:9;1848:7;1844:23;1840:32;1837:119;;;1875:79;;:::i;:::-;1837:119;1995:1;2020:61;2073:7;2064:6;2053:9;2049:22;2020:61;:::i;:::-;2010:71;;1966:125;2130:2;2156:61;2209:7;2200:6;2189:9;2185:22;2156:61;:::i;:::-;2146:71;;2101:126;1728:506;;;;;:::o;2240:474::-;2308:6;2316;2365:2;2353:9;2344:7;2340:23;2336:32;2333:119;;;2371:79;;:::i;:::-;2333:119;2491:1;2516:53;2561:7;2552:6;2541:9;2537:22;2516:53;:::i;:::-;2506:63;;2462:117;2618:2;2644:53;2689:7;2680:6;2669:9;2665:22;2644:53;:::i;:::-;2634:63;;2589:118;2240:474;;;;;:::o;2720:619::-;2797:6;2805;2813;2862:2;2850:9;2841:7;2837:23;2833:32;2830:119;;;2868:79;;:::i;:::-;2830:119;2988:1;3013:53;3058:7;3049:6;3038:9;3034:22;3013:53;:::i;:::-;3003:63;;2959:117;3115:2;3141:53;3186:7;3177:6;3166:9;3162:22;3141:53;:::i;:::-;3131:63;;3086:118;3243:2;3269:53;3314:7;3305:6;3294:9;3290:22;3269:53;:::i;:::-;3259:63;;3214:118;2720:619;;;;;:::o;3345:468::-;3410:6;3418;3467:2;3455:9;3446:7;3442:23;3438:32;3435:119;;;3473:79;;:::i;:::-;3435:119;3593:1;3618:53;3663:7;3654:6;3643:9;3639:22;3618:53;:::i;:::-;3608:63;;3564:117;3720:2;3746:50;3788:7;3779:6;3768:9;3764:22;3746:50;:::i;:::-;3736:60;;3691:115;3345:468;;;;;:::o;3819:474::-;3887:6;3895;3944:2;3932:9;3923:7;3919:23;3915:32;3912:119;;;3950:79;;:::i;:::-;3912:119;4070:1;4095:53;4140:7;4131:6;4120:9;4116:22;4095:53;:::i;:::-;4085:63;;4041:117;4197:2;4223:53;4268:7;4259:6;4248:9;4244:22;4223:53;:::i;:::-;4213:63;;4168:118;3819:474;;;;;:::o;4299:323::-;4355:6;4404:2;4392:9;4383:7;4379:23;4375:32;4372:119;;;4410:79;;:::i;:::-;4372:119;4530:1;4555:50;4597:7;4588:6;4577:9;4573:22;4555:50;:::i;:::-;4545:60;;4501:114;4299:323;;;;:::o;4628:462::-;4690:6;4698;4747:2;4735:9;4726:7;4722:23;4718:32;4715:119;;;4753:79;;:::i;:::-;4715:119;4873:1;4898:50;4940:7;4931:6;4920:9;4916:22;4898:50;:::i;:::-;4888:60;;4844:114;4997:2;5023:50;5065:7;5056:6;5045:9;5041:22;5023:50;:::i;:::-;5013:60;;4968:115;4628:462;;;;;:::o;5096:329::-;5155:6;5204:2;5192:9;5183:7;5179:23;5175:32;5172:119;;;5210:79;;:::i;:::-;5172:119;5330:1;5355:53;5400:7;5391:6;5380:9;5376:22;5355:53;:::i;:::-;5345:63;;5301:117;5096:329;;;;:::o;5431:474::-;5499:6;5507;5556:2;5544:9;5535:7;5531:23;5527:32;5524:119;;;5562:79;;:::i;:::-;5524:119;5682:1;5707:53;5752:7;5743:6;5732:9;5728:22;5707:53;:::i;:::-;5697:63;;5653:117;5809:2;5835:53;5880:7;5871:6;5860:9;5856:22;5835:53;:::i;:::-;5825:63;;5780:118;5431:474;;;;;:::o;5911:619::-;5988:6;5996;6004;6053:2;6041:9;6032:7;6028:23;6024:32;6021:119;;;6059:79;;:::i;:::-;6021:119;6179:1;6204:53;6249:7;6240:6;6229:9;6225:22;6204:53;:::i;:::-;6194:63;;6150:117;6306:2;6332:53;6377:7;6368:6;6357:9;6353:22;6332:53;:::i;:::-;6322:63;;6277:118;6434:2;6460:53;6505:7;6496:6;6485:9;6481:22;6460:53;:::i;:::-;6450:63;;6405:118;5911:619;;;;;:::o;6536:663::-;6624:6;6632;6640;6689:2;6677:9;6668:7;6664:23;6660:32;6657:119;;;6695:79;;:::i;:::-;6657:119;6815:1;6840:64;6896:7;6887:6;6876:9;6872:22;6840:64;:::i;:::-;6830:74;;6786:128;6953:2;6979:64;7035:7;7026:6;7015:9;7011:22;6979:64;:::i;:::-;6969:74;;6924:129;7092:2;7118:64;7174:7;7165:6;7154:9;7150:22;7118:64;:::i;:::-;7108:74;;7063:129;6536:663;;;;;:::o;7205:765::-;7291:6;7299;7307;7315;7364:3;7352:9;7343:7;7339:23;7335:33;7332:120;;;7371:79;;:::i;:::-;7332:120;7491:1;7516:53;7561:7;7552:6;7541:9;7537:22;7516:53;:::i;:::-;7506:63;;7462:117;7618:2;7644:53;7689:7;7680:6;7669:9;7665:22;7644:53;:::i;:::-;7634:63;;7589:118;7746:2;7772:53;7817:7;7808:6;7797:9;7793:22;7772:53;:::i;:::-;7762:63;;7717:118;7874:2;7900:53;7945:7;7936:6;7925:9;7921:22;7900:53;:::i;:::-;7890:63;;7845:118;7205:765;;;;;;;:::o;7976:325::-;8033:6;8082:2;8070:9;8061:7;8057:23;8053:32;8050:119;;;8088:79;;:::i;:::-;8050:119;8208:1;8233:51;8276:7;8267:6;8256:9;8252:22;8233:51;:::i;:::-;8223:61;;8179:115;7976:325;;;;:::o;8307:179::-;8376:10;8397:46;8439:3;8431:6;8397:46;:::i;:::-;8475:4;8470:3;8466:14;8452:28;;8307:179;;;;:::o;8492:108::-;8569:24;8587:5;8569:24;:::i;:::-;8564:3;8557:37;8492:108;;:::o;8606:118::-;8693:24;8711:5;8693:24;:::i;:::-;8688:3;8681:37;8606:118;;:::o;8760:732::-;8879:3;8908:54;8956:5;8908:54;:::i;:::-;8978:86;9057:6;9052:3;8978:86;:::i;:::-;8971:93;;9088:56;9138:5;9088:56;:::i;:::-;9167:7;9198:1;9183:284;9208:6;9205:1;9202:13;9183:284;;;9284:6;9278:13;9311:63;9370:3;9355:13;9311:63;:::i;:::-;9304:70;;9397:60;9450:6;9397:60;:::i;:::-;9387:70;;9243:224;9230:1;9227;9223:9;9218:14;;9183:284;;;9187:14;9483:3;9476:10;;8884:608;;;8760:732;;;;:::o;9498:109::-;9579:21;9594:5;9579:21;:::i;:::-;9574:3;9567:34;9498:109;;:::o;9613:183::-;9726:63;9783:5;9726:63;:::i;:::-;9721:3;9714:76;9613:183;;:::o;9802:147::-;9897:45;9936:5;9897:45;:::i;:::-;9892:3;9885:58;9802:147;;:::o;9955:364::-;10043:3;10071:39;10104:5;10071:39;:::i;:::-;10126:71;10190:6;10185:3;10126:71;:::i;:::-;10119:78;;10206:52;10251:6;10246:3;10239:4;10232:5;10228:16;10206:52;:::i;:::-;10283:29;10305:6;10283:29;:::i;:::-;10278:3;10274:39;10267:46;;10047:272;9955:364;;;;:::o;10325:366::-;10467:3;10488:67;10552:2;10547:3;10488:67;:::i;:::-;10481:74;;10564:93;10653:3;10564:93;:::i;:::-;10682:2;10677:3;10673:12;10666:19;;10325:366;;;:::o;10697:::-;10839:3;10860:67;10924:2;10919:3;10860:67;:::i;:::-;10853:74;;10936:93;11025:3;10936:93;:::i;:::-;11054:2;11049:3;11045:12;11038:19;;10697:366;;;:::o;11069:::-;11211:3;11232:67;11296:2;11291:3;11232:67;:::i;:::-;11225:74;;11308:93;11397:3;11308:93;:::i;:::-;11426:2;11421:3;11417:12;11410:19;;11069:366;;;:::o;11441:::-;11583:3;11604:67;11668:2;11663:3;11604:67;:::i;:::-;11597:74;;11680:93;11769:3;11680:93;:::i;:::-;11798:2;11793:3;11789:12;11782:19;;11441:366;;;:::o;11813:::-;11955:3;11976:67;12040:2;12035:3;11976:67;:::i;:::-;11969:74;;12052:93;12141:3;12052:93;:::i;:::-;12170:2;12165:3;12161:12;12154:19;;11813:366;;;:::o;12185:::-;12327:3;12348:67;12412:2;12407:3;12348:67;:::i;:::-;12341:74;;12424:93;12513:3;12424:93;:::i;:::-;12542:2;12537:3;12533:12;12526:19;;12185:366;;;:::o;12557:::-;12699:3;12720:67;12784:2;12779:3;12720:67;:::i;:::-;12713:74;;12796:93;12885:3;12796:93;:::i;:::-;12914:2;12909:3;12905:12;12898:19;;12557:366;;;:::o;12929:::-;13071:3;13092:67;13156:2;13151:3;13092:67;:::i;:::-;13085:74;;13168:93;13257:3;13168:93;:::i;:::-;13286:2;13281:3;13277:12;13270:19;;12929:366;;;:::o;13301:::-;13443:3;13464:67;13528:2;13523:3;13464:67;:::i;:::-;13457:74;;13540:93;13629:3;13540:93;:::i;:::-;13658:2;13653:3;13649:12;13642:19;;13301:366;;;:::o;13673:365::-;13815:3;13836:66;13900:1;13895:3;13836:66;:::i;:::-;13829:73;;13911:93;14000:3;13911:93;:::i;:::-;14029:2;14024:3;14020:12;14013:19;;13673:365;;;:::o;14044:366::-;14186:3;14207:67;14271:2;14266:3;14207:67;:::i;:::-;14200:74;;14283:93;14372:3;14283:93;:::i;:::-;14401:2;14396:3;14392:12;14385:19;;14044:366;;;:::o;14416:::-;14558:3;14579:67;14643:2;14638:3;14579:67;:::i;:::-;14572:74;;14655:93;14744:3;14655:93;:::i;:::-;14773:2;14768:3;14764:12;14757:19;;14416:366;;;:::o;14788:365::-;14930:3;14951:66;15015:1;15010:3;14951:66;:::i;:::-;14944:73;;15026:93;15115:3;15026:93;:::i;:::-;15144:2;15139:3;15135:12;15128:19;;14788:365;;;:::o;15159:366::-;15301:3;15322:67;15386:2;15381:3;15322:67;:::i;:::-;15315:74;;15398:93;15487:3;15398:93;:::i;:::-;15516:2;15511:3;15507:12;15500:19;;15159:366;;;:::o;15531:::-;15673:3;15694:67;15758:2;15753:3;15694:67;:::i;:::-;15687:74;;15770:93;15859:3;15770:93;:::i;:::-;15888:2;15883:3;15879:12;15872:19;;15531:366;;;:::o;15903:::-;16045:3;16066:67;16130:2;16125:3;16066:67;:::i;:::-;16059:74;;16142:93;16231:3;16142:93;:::i;:::-;16260:2;16255:3;16251:12;16244:19;;15903:366;;;:::o;16275:::-;16417:3;16438:67;16502:2;16497:3;16438:67;:::i;:::-;16431:74;;16514:93;16603:3;16514:93;:::i;:::-;16632:2;16627:3;16623:12;16616:19;;16275:366;;;:::o;16647:118::-;16734:24;16752:5;16734:24;:::i;:::-;16729:3;16722:37;16647:118;;:::o;16771:112::-;16854:22;16870:5;16854:22;:::i;:::-;16849:3;16842:35;16771:112;;:::o;16889:222::-;16982:4;17020:2;17009:9;17005:18;16997:26;;17033:71;17101:1;17090:9;17086:17;17077:6;17033:71;:::i;:::-;16889:222;;;;:::o;17117:332::-;17238:4;17276:2;17265:9;17261:18;17253:26;;17289:71;17357:1;17346:9;17342:17;17333:6;17289:71;:::i;:::-;17370:72;17438:2;17427:9;17423:18;17414:6;17370:72;:::i;:::-;17117:332;;;;;:::o;17455:807::-;17704:4;17742:3;17731:9;17727:19;17719:27;;17756:71;17824:1;17813:9;17809:17;17800:6;17756:71;:::i;:::-;17837:72;17905:2;17894:9;17890:18;17881:6;17837:72;:::i;:::-;17919:80;17995:2;17984:9;17980:18;17971:6;17919:80;:::i;:::-;18009;18085:2;18074:9;18070:18;18061:6;18009:80;:::i;:::-;18099:73;18167:3;18156:9;18152:19;18143:6;18099:73;:::i;:::-;18182;18250:3;18239:9;18235:19;18226:6;18182:73;:::i;:::-;17455:807;;;;;;;;;:::o;18268:210::-;18355:4;18393:2;18382:9;18378:18;18370:26;;18406:65;18468:1;18457:9;18453:17;18444:6;18406:65;:::i;:::-;18268:210;;;;:::o;18484:274::-;18603:4;18641:2;18630:9;18626:18;18618:26;;18654:97;18748:1;18737:9;18733:17;18724:6;18654:97;:::i;:::-;18484:274;;;;:::o;18764:313::-;18877:4;18915:2;18904:9;18900:18;18892:26;;18964:9;18958:4;18954:20;18950:1;18939:9;18935:17;18928:47;18992:78;19065:4;19056:6;18992:78;:::i;:::-;18984:86;;18764:313;;;;:::o;19083:419::-;19249:4;19287:2;19276:9;19272:18;19264:26;;19336:9;19330:4;19326:20;19322:1;19311:9;19307:17;19300:47;19364:131;19490:4;19364:131;:::i;:::-;19356:139;;19083:419;;;:::o;19508:::-;19674:4;19712:2;19701:9;19697:18;19689:26;;19761:9;19755:4;19751:20;19747:1;19736:9;19732:17;19725:47;19789:131;19915:4;19789:131;:::i;:::-;19781:139;;19508:419;;;:::o;19933:::-;20099:4;20137:2;20126:9;20122:18;20114:26;;20186:9;20180:4;20176:20;20172:1;20161:9;20157:17;20150:47;20214:131;20340:4;20214:131;:::i;:::-;20206:139;;19933:419;;;:::o;20358:::-;20524:4;20562:2;20551:9;20547:18;20539:26;;20611:9;20605:4;20601:20;20597:1;20586:9;20582:17;20575:47;20639:131;20765:4;20639:131;:::i;:::-;20631:139;;20358:419;;;:::o;20783:::-;20949:4;20987:2;20976:9;20972:18;20964:26;;21036:9;21030:4;21026:20;21022:1;21011:9;21007:17;21000:47;21064:131;21190:4;21064:131;:::i;:::-;21056:139;;20783:419;;;:::o;21208:::-;21374:4;21412:2;21401:9;21397:18;21389:26;;21461:9;21455:4;21451:20;21447:1;21436:9;21432:17;21425:47;21489:131;21615:4;21489:131;:::i;:::-;21481:139;;21208:419;;;:::o;21633:::-;21799:4;21837:2;21826:9;21822:18;21814:26;;21886:9;21880:4;21876:20;21872:1;21861:9;21857:17;21850:47;21914:131;22040:4;21914:131;:::i;:::-;21906:139;;21633:419;;;:::o;22058:::-;22224:4;22262:2;22251:9;22247:18;22239:26;;22311:9;22305:4;22301:20;22297:1;22286:9;22282:17;22275:47;22339:131;22465:4;22339:131;:::i;:::-;22331:139;;22058:419;;;:::o;22483:::-;22649:4;22687:2;22676:9;22672:18;22664:26;;22736:9;22730:4;22726:20;22722:1;22711:9;22707:17;22700:47;22764:131;22890:4;22764:131;:::i;:::-;22756:139;;22483:419;;;:::o;22908:::-;23074:4;23112:2;23101:9;23097:18;23089:26;;23161:9;23155:4;23151:20;23147:1;23136:9;23132:17;23125:47;23189:131;23315:4;23189:131;:::i;:::-;23181:139;;22908:419;;;:::o;23333:::-;23499:4;23537:2;23526:9;23522:18;23514:26;;23586:9;23580:4;23576:20;23572:1;23561:9;23557:17;23550:47;23614:131;23740:4;23614:131;:::i;:::-;23606:139;;23333:419;;;:::o;23758:::-;23924:4;23962:2;23951:9;23947:18;23939:26;;24011:9;24005:4;24001:20;23997:1;23986:9;23982:17;23975:47;24039:131;24165:4;24039:131;:::i;:::-;24031:139;;23758:419;;;:::o;24183:::-;24349:4;24387:2;24376:9;24372:18;24364:26;;24436:9;24430:4;24426:20;24422:1;24411:9;24407:17;24400:47;24464:131;24590:4;24464:131;:::i;:::-;24456:139;;24183:419;;;:::o;24608:::-;24774:4;24812:2;24801:9;24797:18;24789:26;;24861:9;24855:4;24851:20;24847:1;24836:9;24832:17;24825:47;24889:131;25015:4;24889:131;:::i;:::-;24881:139;;24608:419;;;:::o;25033:::-;25199:4;25237:2;25226:9;25222:18;25214:26;;25286:9;25280:4;25276:20;25272:1;25261:9;25257:17;25250:47;25314:131;25440:4;25314:131;:::i;:::-;25306:139;;25033:419;;;:::o;25458:::-;25624:4;25662:2;25651:9;25647:18;25639:26;;25711:9;25705:4;25701:20;25697:1;25686:9;25682:17;25675:47;25739:131;25865:4;25739:131;:::i;:::-;25731:139;;25458:419;;;:::o;25883:::-;26049:4;26087:2;26076:9;26072:18;26064:26;;26136:9;26130:4;26126:20;26122:1;26111:9;26107:17;26100:47;26164:131;26290:4;26164:131;:::i;:::-;26156:139;;25883:419;;;:::o;26308:222::-;26401:4;26439:2;26428:9;26424:18;26416:26;;26452:71;26520:1;26509:9;26505:17;26496:6;26452:71;:::i;:::-;26308:222;;;;:::o;26536:831::-;26799:4;26837:3;26826:9;26822:19;26814:27;;26851:71;26919:1;26908:9;26904:17;26895:6;26851:71;:::i;:::-;26932:80;27008:2;26997:9;26993:18;26984:6;26932:80;:::i;:::-;27059:9;27053:4;27049:20;27044:2;27033:9;27029:18;27022:48;27087:108;27190:4;27181:6;27087:108;:::i;:::-;27079:116;;27205:72;27273:2;27262:9;27258:18;27249:6;27205:72;:::i;:::-;27287:73;27355:3;27344:9;27340:19;27331:6;27287:73;:::i;:::-;26536:831;;;;;;;;:::o;27373:442::-;27522:4;27560:2;27549:9;27545:18;27537:26;;27573:71;27641:1;27630:9;27626:17;27617:6;27573:71;:::i;:::-;27654:72;27722:2;27711:9;27707:18;27698:6;27654:72;:::i;:::-;27736;27804:2;27793:9;27789:18;27780:6;27736:72;:::i;:::-;27373:442;;;;;;:::o;27821:214::-;27910:4;27948:2;27937:9;27933:18;27925:26;;27961:67;28025:1;28014:9;28010:17;28001:6;27961:67;:::i;:::-;27821:214;;;;:::o;28122:132::-;28189:4;28212:3;28204:11;;28242:4;28237:3;28233:14;28225:22;;28122:132;;;:::o;28260:114::-;28327:6;28361:5;28355:12;28345:22;;28260:114;;;:::o;28380:99::-;28432:6;28466:5;28460:12;28450:22;;28380:99;;;:::o;28485:113::-;28555:4;28587;28582:3;28578:14;28570:22;;28485:113;;;:::o;28604:184::-;28703:11;28737:6;28732:3;28725:19;28777:4;28772:3;28768:14;28753:29;;28604:184;;;;:::o;28794:169::-;28878:11;28912:6;28907:3;28900:19;28952:4;28947:3;28943:14;28928:29;;28794:169;;;;:::o;28969:305::-;29009:3;29028:20;29046:1;29028:20;:::i;:::-;29023:25;;29062:20;29080:1;29062:20;:::i;:::-;29057:25;;29216:1;29148:66;29144:74;29141:1;29138:81;29135:107;;;29222:18;;:::i;:::-;29135:107;29266:1;29263;29259:9;29252:16;;28969:305;;;;:::o;29280:185::-;29320:1;29337:20;29355:1;29337:20;:::i;:::-;29332:25;;29371:20;29389:1;29371:20;:::i;:::-;29366:25;;29410:1;29400:35;;29415:18;;:::i;:::-;29400:35;29457:1;29454;29450:9;29445:14;;29280:185;;;;:::o;29471:348::-;29511:7;29534:20;29552:1;29534:20;:::i;:::-;29529:25;;29568:20;29586:1;29568:20;:::i;:::-;29563:25;;29756:1;29688:66;29684:74;29681:1;29678:81;29673:1;29666:9;29659:17;29655:105;29652:131;;;29763:18;;:::i;:::-;29652:131;29811:1;29808;29804:9;29793:20;;29471:348;;;;:::o;29825:191::-;29865:4;29885:20;29903:1;29885:20;:::i;:::-;29880:25;;29919:20;29937:1;29919:20;:::i;:::-;29914:25;;29958:1;29955;29952:8;29949:34;;;29963:18;;:::i;:::-;29949:34;30008:1;30005;30001:9;29993:17;;29825:191;;;;:::o;30022:96::-;30059:7;30088:24;30106:5;30088:24;:::i;:::-;30077:35;;30022:96;;;:::o;30124:104::-;30169:7;30198:24;30216:5;30198:24;:::i;:::-;30187:35;;30124:104;;;:::o;30234:90::-;30268:7;30311:5;30304:13;30297:21;30286:32;;30234:90;;;:::o;30330:126::-;30367:7;30407:42;30400:5;30396:54;30385:65;;30330:126;;;:::o;30462:77::-;30499:7;30528:5;30517:16;;30462:77;;;:::o;30545:86::-;30580:7;30620:4;30613:5;30609:16;30598:27;;30545:86;;;:::o;30637:152::-;30713:9;30746:37;30777:5;30746:37;:::i;:::-;30733:50;;30637:152;;;:::o;30795:121::-;30853:9;30886:24;30904:5;30886:24;:::i;:::-;30873:37;;30795:121;;;:::o;30922:126::-;30972:9;31005:37;31036:5;31005:37;:::i;:::-;30992:50;;30922:126;;;:::o;31054:113::-;31104:9;31137:24;31155:5;31137:24;:::i;:::-;31124:37;;31054:113;;;:::o;31173:307::-;31241:1;31251:113;31265:6;31262:1;31259:13;31251:113;;;31350:1;31345:3;31341:11;31335:18;31331:1;31326:3;31322:11;31315:39;31287:2;31284:1;31280:10;31275:15;;31251:113;;;31382:6;31379:1;31376:13;31373:101;;;31462:1;31453:6;31448:3;31444:16;31437:27;31373:101;31222:258;31173:307;;;:::o;31486:320::-;31530:6;31567:1;31561:4;31557:12;31547:22;;31614:1;31608:4;31604:12;31635:18;31625:81;;31691:4;31683:6;31679:17;31669:27;;31625:81;31753:2;31745:6;31742:14;31722:18;31719:38;31716:84;;;31772:18;;:::i;:::-;31716:84;31537:269;31486:320;;;:::o;31812:233::-;31851:3;31874:24;31892:5;31874:24;:::i;:::-;31865:33;;31920:66;31913:5;31910:77;31907:103;;;31990:18;;:::i;:::-;31907:103;32037:1;32030:5;32026:13;32019:20;;31812:233;;;:::o;32051:180::-;32099:77;32096:1;32089:88;32196:4;32193:1;32186:15;32220:4;32217:1;32210:15;32237:180;32285:77;32282:1;32275:88;32382:4;32379:1;32372:15;32406:4;32403:1;32396:15;32423:180;32471:77;32468:1;32461:88;32568:4;32565:1;32558:15;32592:4;32589:1;32582:15;32609:180;32657:77;32654:1;32647:88;32754:4;32751:1;32744:15;32778:4;32775:1;32768:15;32795:180;32843:77;32840:1;32833:88;32940:4;32937:1;32930:15;32964:4;32961:1;32954:15;33104:117;33213:1;33210;33203:12;33227:102;33268:6;33319:2;33315:7;33310:2;33303:5;33299:14;33295:28;33285:38;;33227:102;;;:::o;33335:162::-;33475:14;33471:1;33463:6;33459:14;33452:38;33335:162;:::o;33503:235::-;33643:34;33639:1;33631:6;33627:14;33620:58;33712:18;33707:2;33699:6;33695:15;33688:43;33503:235;:::o;33744:167::-;33884:19;33880:1;33872:6;33868:14;33861:43;33744:167;:::o;33917:222::-;34057:34;34053:1;34045:6;34041:14;34034:58;34126:5;34121:2;34113:6;34109:15;34102:30;33917:222;:::o;34145:224::-;34285:34;34281:1;34273:6;34269:14;34262:58;34354:7;34349:2;34341:6;34337:15;34330:32;34145:224;:::o;34375:173::-;34515:25;34511:1;34503:6;34499:14;34492:49;34375:173;:::o;34554:222::-;34694:34;34690:1;34682:6;34678:14;34671:58;34763:5;34758:2;34750:6;34746:15;34739:30;34554:222;:::o;34782:170::-;34922:22;34918:1;34910:6;34906:14;34899:46;34782:170;:::o;34958:168::-;35098:20;35094:1;35086:6;35082:14;35075:44;34958:168;:::o;35132:158::-;35272:10;35268:1;35260:6;35256:14;35249:34;35132:158;:::o;35296:169::-;35436:21;35432:1;35424:6;35420:14;35413:45;35296:169;:::o;35471:166::-;35611:18;35607:1;35599:6;35595:14;35588:42;35471:166;:::o;35643:156::-;35783:8;35779:1;35771:6;35767:14;35760:32;35643:156;:::o;35805:176::-;35945:28;35941:1;35933:6;35929:14;35922:52;35805:176;:::o;35987:169::-;36127:21;36123:1;36115:6;36111:14;36104:45;35987:169;:::o;36162:174::-;36302:26;36298:1;36290:6;36286:14;36279:50;36162:174;:::o;36342:248::-;36482:34;36478:1;36470:6;36466:14;36459:58;36551:31;36546:2;36538:6;36534:15;36527:56;36342:248;:::o;36596:122::-;36669:24;36687:5;36669:24;:::i;:::-;36662:5;36659:35;36649:63;;36708:1;36705;36698:12;36649:63;36596:122;:::o;36724:138::-;36805:32;36831:5;36805:32;:::i;:::-;36798:5;36795:43;36785:71;;36852:1;36849;36842:12;36785:71;36724:138;:::o;36868:116::-;36938:21;36953:5;36938:21;:::i;:::-;36931:5;36928:32;36918:60;;36974:1;36971;36964:12;36918:60;36868:116;:::o;36990:122::-;37063:24;37081:5;37063:24;:::i;:::-;37056:5;37053:35;37043:63;;37102:1;37099;37092:12;37043:63;36990:122;:::o;37118:118::-;37189:22;37205:5;37189:22;:::i;:::-;37182:5;37179:33;37169:61;;37226:1;37223;37216:12;37169:61;37118:118;:::o
Swarm Source
ipfs://3c8cfc852635fafa2f3f7eaa45e7303cfd2951088ad5ff440ce5b06a66bae0f3
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.