ERC-20
Overview
Max Total Supply
10,000,000,000 SHIBTARO
Holders
218
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
3,060,633.480965358 SHIBTAROValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
SHIBTARO
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-01-18 */ /** ______ ______ _______ ________ ______ _______ ______ / \| \ | \ \ \| \/ \| \ / \ | ▓▓▓▓▓▓\ ▓▓ | ▓▓\▓▓▓▓▓▓ ▓▓▓▓▓▓▓\\▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓\ ▓▓▓▓▓▓▓\ ▓▓▓▓▓▓\ | ▓▓___\▓▓ ▓▓__| ▓▓ | ▓▓ | ▓▓__/ ▓▓ | ▓▓ | ▓▓__| ▓▓ ▓▓__| ▓▓ ▓▓ | ▓▓ \▓▓ \| ▓▓ ▓▓ | ▓▓ | ▓▓ ▓▓ | ▓▓ | ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ | ▓▓ _\▓▓▓▓▓▓\ ▓▓▓▓▓▓▓▓ | ▓▓ | ▓▓▓▓▓▓▓\ | ▓▓ | ▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓\ ▓▓ | ▓▓ | \__| ▓▓ ▓▓ | ▓▓_| ▓▓_| ▓▓__/ ▓▓ | ▓▓ | ▓▓ | ▓▓ ▓▓ | ▓▓ ▓▓__/ ▓▓ \▓▓ ▓▓ ▓▓ | ▓▓ ▓▓ \ ▓▓ ▓▓ | ▓▓ | ▓▓ | ▓▓ ▓▓ | ▓▓\▓▓ ▓▓ \▓▓▓▓▓▓ \▓▓ \▓▓\▓▓▓▓▓▓\▓▓▓▓▓▓▓ \▓▓ \▓▓ \▓▓\▓▓ \▓▓ \▓▓▓▓▓▓ TELEGRAM : https://t.me/ShibTaroPortal WEBSITE : https://shibtaro.com/ TWITTER : https://twitter.com/shib_taro */ // SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.9.0; 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 SHIBTARO 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 _liquidityHolders; uint256 private startingSupply = 10_000_000_000; string private _name = "SHIBTARO"; string private _symbol = "SHIBTARO"; uint256 public _devFeeOnBuy = 300; // 3% (3 x 100) uint256 public _liquidityFeeOnBuy = 300; // 3% (3 x 100) uint256 public _marketingFeeOnBuy = 800; // 8% (8 x 100) uint256 public _sumTotalFeesOnBuy = _devFeeOnBuy + _liquidityFeeOnBuy + _marketingFeeOnBuy; uint256 public _devFeeOnSell = 300; // 3% (3 x 100) uint256 public _liquidityFeeOnSell = 300; // 3% (3 x 100) uint256 public _marketingFeeOnSell = 800; // 8% (8 x 100) uint256 public _sumTotalFeesOnSell = _devFeeOnSell + _liquidityFeeOnSell + _marketingFeeOnSell; uint8 constant private _decimals = 9; uint256 constant private _decimalsMul = _decimals; uint256 private _tTotal = startingSupply * 10**_decimalsMul; IUniswapV2Router02 public dexRouter; address public lpPair; // UNI ROUTER address private _routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; address constant public DEAD = 0x000000000000000000000000000000000000dEaD; address payable private _teamWallet = payable(0xbDB27b6dD34A3A4dB6438b8ab08fF876e608FB54); address payable private _marketingWallet = payable(0x5a49601608B1D192339196b8DD0aA30A6EF86809); bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = false; uint256 private maxTxPercent = 1; uint256 private maxTxDivisor = 100; uint256 private _maxTxAmount = (_tTotal * maxTxPercent) / maxTxDivisor; uint256 private maxWalletPercent = 1; uint256 private maxWalletDivisor = 100; uint256 private _maxWalletSize = (_tTotal * maxWalletPercent) / maxWalletDivisor; uint256 private swapThreshold = (_tTotal * 5) / 10000; uint256 private swapAmount = (_tTotal * 5) / 1000; bool public startTrade = true; uint256 private _liqAddBlock = 0; bool public _hasLiqBeenAddedInitially = false; mapping(address => bool) public _isBlacklisted; event SetNewRouter(address indexed oldRouter, address indexed newRouter); event SetLpPair(address indexed pair, bool enabled); event SetExcludedFromFees(address account, bool enabled); event SetStartTrade(bool enabled); event SetFeesOnBuy(uint256 dev, uint256 liquidity, uint256 marketing); event SetFeesOnSell(uint256 dev, uint256 liquidity, uint256 marketing); event SetMaxTxPercent(uint256 percent, uint256 divisor); event SetMaxWalletSize(uint256 percent, uint256 divisor); event SetSwapSettings(uint256 swapThreshold, uint256 swapAmount); event SetWallets(address indexed newMarketingWallet, address indexed newTeamWallet); event BlacklistAddress(address account, bool value); event PotOfGreedBuy(uint256 dev, uint256 liquidity, uint256 marketing, uint256 sumTotalFees); event PotOfGreedSell(uint256 dev, uint256 liquidity, uint256 marketing, uint256 sumTotalFees); event ResetFees(uint256 devBuy, uint256 liquidityBuy, uint256 marketingBuy, uint256 devSell, uint256 liquiditySell, uint256 marketingSell); event SwapAndLiquifyEnabledUpdated(bool enabled); event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity); 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 PancakeSwap, timesaver. _approve(_msgSender(), _routerAddress, _tTotal); 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; } emit SetNewRouter(address(dexRouter), address(_newRouter)); 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; } emit SetLpPair(pair, enabled); } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } function setExcludedFromFees(address account, bool enabled) public onlyOwner { _isExcludedFromFees[account] = enabled; emit SetExcludedFromFees(account, enabled); } function setStartTrade(bool enabled) public onlyOwner { startTrade = enabled; emit SetStartTrade(enabled); } function setFeesOnBuy(uint256 dev, uint256 liquidity, uint256 marketing) external onlyOwner { _devFeeOnBuy = dev; _liquidityFeeOnBuy = liquidity; _marketingFeeOnBuy = marketing; _sumTotalFeesOnBuy = _devFeeOnBuy + _liquidityFeeOnBuy + _marketingFeeOnBuy; emit SetFeesOnBuy(dev, liquidity, marketing); } function setFeesOnSell(uint256 dev, uint256 liquidity, uint256 marketing) external onlyOwner { _devFeeOnSell = dev; _liquidityFeeOnSell = liquidity; _marketingFeeOnSell = marketing; _sumTotalFeesOnSell = _devFeeOnSell + _liquidityFeeOnSell + _marketingFeeOnSell; emit SetFeesOnSell(dev, liquidity, marketing); } 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; emit SetMaxTxPercent(percent, divisor); } 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; emit SetMaxWalletSize(percent, divisor); } function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner { swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor; swapAmount = (_tTotal * amountPercent) / amountDivisor; emit SetSwapSettings(swapThreshold, swapAmount); } function setWallets(address payable marketingWallet, address payable teamWallet) external onlyOwner { _marketingWallet = payable(marketingWallet); _teamWallet = payable(teamWallet); emit SetWallets(_marketingWallet, _teamWallet); } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } function blacklistAddress(address account, bool value) external onlyOwner { _isBlacklisted[account] = value; emit BlacklistAddress(account, value); } 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."); require(!_isBlacklisted[from] && !_isBlacklisted[to], 'Blacklisted address'); if (!startTrade) { revert('Trading is not active!'); } if (_liqAddBlock == 0) { _checkLiquidityAdd(from, to); } if(_hasLimits(from, to)) { 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 (to == lpPair) { if (!inSwapAndLiquify && swapAndLiquifyEnabled) { uint256 contractTokenBalance = balanceOf(address(this)); if (contractTokenBalance >= swapThreshold) { if(contractTokenBalance >= swapAmount) { contractTokenBalance = swapAmount; } swapAndLiquify(contractTokenBalance); } } } if (from == lpPair) { if (_liqAddBlock == block.number && _hasLimits(from, to)) { _isBlacklisted[to] = true; revert('FrontRunning is Bad!'); } } return _finalizeTransfer(from, to, amount, takeFee); } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { if (_liquidityFeeOnSell + _marketingFeeOnSell + _devFeeOnSell == 0) { return; } if (_liquidityFeeOnSell + _marketingFeeOnSell + _devFeeOnSell != _sumTotalFeesOnSell) { return; } uint256 toLiquifyHalf = ((contractTokenBalance * _liquidityFeeOnSell) / _sumTotalFeesOnSell) / 2; uint256 toSwapForEth = contractTokenBalance - toLiquifyHalf; swapTokensForEth(toSwapForEth); uint256 currentBalance = address(this).balance; uint256 liquidityBalance = ((currentBalance * _liquidityFeeOnSell) / _sumTotalFeesOnSell) / 2; if (toLiquifyHalf > 0) { addLiquidity(toLiquifyHalf, liquidityBalance); emit SwapAndLiquify(toLiquifyHalf, liquidityBalance, toLiquifyHalf); } if (currentBalance - liquidityBalance > 0) { _marketingWallet.transfer(((currentBalance * _marketingFeeOnSell) / _sumTotalFeesOnSell)); _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 { if (!_hasLiqBeenAddedInitially) { if (!_hasLimits(from, to) && to == lpPair) { _liqAddBlock = block.number; } _liquidityHolders[from] = true; _hasLiqBeenAddedInitially = true; swapAndLiquifyEnabled = true; emit SwapAndLiquifyEnabledUpdated(true); } } function _finalizeTransfer(address from, address to, uint256 amount, bool takeFee) private returns (bool) { _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 feeAmount; if (from == lpPair) { feeAmount = (amount * _sumTotalFeesOnBuy) / 10**4; } if (to == lpPair) { feeAmount = (amount * _sumTotalFeesOnSell) / 10**4; } _tOwned[address(this)] += feeAmount; emit Transfer(from, address(this), feeAmount); return amount - feeAmount; } function potOfGreedBuy() public onlyOwner { // half buy tax _devFeeOnBuy = _devFeeOnBuy / 2; _liquidityFeeOnBuy = _liquidityFeeOnBuy / 2; _marketingFeeOnBuy = _marketingFeeOnBuy / 2; _sumTotalFeesOnBuy = _devFeeOnBuy + _liquidityFeeOnBuy + _marketingFeeOnBuy; emit PotOfGreedBuy(_devFeeOnBuy, _liquidityFeeOnBuy, _marketingFeeOnBuy, _sumTotalFeesOnBuy); } function potOfGreedSell() public onlyOwner { // double sell tax _devFeeOnSell = _devFeeOnSell * 2; _liquidityFeeOnSell = _liquidityFeeOnSell * 2; _marketingFeeOnSell = _marketingFeeOnSell * 2; _sumTotalFeesOnSell = _devFeeOnSell + _liquidityFeeOnSell + _marketingFeeOnSell; emit PotOfGreedSell(_devFeeOnSell, _liquidityFeeOnSell, _marketingFeeOnSell, _sumTotalFeesOnSell); } function resetFees() public onlyOwner { _devFeeOnBuy = 300; _liquidityFeeOnBuy = 300; _marketingFeeOnBuy = 800; _sumTotalFeesOnBuy = _devFeeOnBuy + _liquidityFeeOnBuy + _marketingFeeOnBuy; _devFeeOnSell = 300; _liquidityFeeOnSell = 300; _marketingFeeOnSell = 800; _sumTotalFeesOnSell = _devFeeOnSell + _liquidityFeeOnSell + _marketingFeeOnSell; emit ResetFees(_devFeeOnBuy, _liquidityFeeOnBuy, _marketingFeeOnBuy, _devFeeOnSell, _liquidityFeeOnSell, _marketingFeeOnSell); } }
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":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"value","type":"bool"}],"name":"BlacklistAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"dev","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"marketing","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sumTotalFees","type":"uint256"}],"name":"PotOfGreedBuy","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"dev","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"marketing","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sumTotalFees","type":"uint256"}],"name":"PotOfGreedSell","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"devBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidityBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"marketingBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"devSell","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquiditySell","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"marketingSell","type":"uint256"}],"name":"ResetFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SetExcludedFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"dev","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"marketing","type":"uint256"}],"name":"SetFeesOnBuy","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"dev","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"marketing","type":"uint256"}],"name":"SetFeesOnSell","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SetLpPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"percent","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"SetMaxTxPercent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"percent","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"SetMaxWalletSize","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldRouter","type":"address"},{"indexed":true,"internalType":"address","name":"newRouter","type":"address"}],"name":"SetNewRouter","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SetStartTrade","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"swapThreshold","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"swapAmount","type":"uint256"}],"name":"SetSwapSettings","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newMarketingWallet","type":"address"},{"indexed":true,"internalType":"address","name":"newTeamWallet","type":"address"}],"name":"SetWallets","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":"_devFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_devFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAddedInitially","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sumTotalFeesOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sumTotalFeesOnSell","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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"blacklistAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"potOfGreedBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"potOfGreedSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resetFees","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":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"name":"setFeesOnBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"name":"setFeesOnSell","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":"enabled","type":"bool"}],"name":"setStartTrade","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":"address payable","name":"marketingWallet","type":"address"},{"internalType":"address payable","name":"teamWallet","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrade","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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
608060405260006003556402540be4006007556040518060400160405280600881526020017f534849425441524f000000000000000000000000000000000000000000000000815250600890805190602001906200005f92919062000bcd565b506040518060400160405280600881526020017f534849425441524f00000000000000000000000000000000000000000000000081525060099080519060200190620000ad92919062000bcd565b5061012c600a5561012c600b55610320600c55600c54600b54600a54620000d5919062000d8c565b620000e1919062000d8c565b600d5561012c600e5561012c600f55610320601055601054600f54600e546200010b919062000d8c565b62000117919062000d8c565b601155600960ff16600a6200012d919062000e7c565b6007546200013c919062000fb9565b601255737a250d5630b4cf539739df2c5dacb4c659f2488d601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073bdb27b6dd34a3a4db6438b8ab08ff876e608fb54601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550735a49601608b1d192339196b8dd0aa30a6ef86809601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601760156101000a81548160ff0219169083151502179055506001601855606460195560195460185460125462000278919062000fb9565b62000284919062000de9565b601a556001601b556064601c55601c54601b54601254620002a6919062000fb9565b620002b2919062000de9565b601d556127106005601254620002c9919062000fb9565b620002d5919062000de9565b601e556103e86005601254620002ec919062000fb9565b620002f8919062000de9565b601f556001602060006101000a81548160ff02191690831515021790555060006021556000602260006101000a81548160ff021916908315150217905550601254600160006200034d620009c960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200049757600080fd5b505afa158015620004ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004d2919062000c94565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200055657600080fd5b505afa1580156200056b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000591919062000c94565b306040518363ffffffff1660e01b8152600401620005b192919062000d0f565b602060405180830381600087803b158015620005cc57600080fd5b505af1158015620005e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000607919062000c94565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160026000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600560006200079a620009d160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016005600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000620008b3620009d160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200094a62000918620009c960201b60201c565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601254620009fa60201b60201c565b6200095a620009c960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601254604051620009bb919062000d5e565b60405180910390a362001170565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141562000a6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a649062000d3c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000ae0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ad79062000d3c565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000bc0919062000d5e565b60405180910390a3505050565b82805462000bdb9062001058565b90600052602060002090601f01602090048101928262000bff576000855562000c4b565b82601f1062000c1a57805160ff191683800117855562000c4b565b8280016001018555821562000c4b579182015b8281111562000c4a57825182559160200191906001019062000c2d565b5b50905062000c5a919062000c5e565b5090565b5b8082111562000c7957600081600090555060010162000c5f565b5090565b60008151905062000c8e8162001156565b92915050565b60006020828403121562000cad5762000cac6200111b565b5b600062000cbd8482850162000c7d565b91505092915050565b62000cd1816200101a565b82525050565b600062000ce660138362000d7b565b915062000cf3826200112d565b602082019050919050565b62000d09816200104e565b82525050565b600060408201905062000d26600083018562000cc6565b62000d35602083018462000cc6565b9392505050565b6000602082019050818103600083015262000d578162000cd7565b9050919050565b600060208201905062000d75600083018462000cfe565b92915050565b600082825260208201905092915050565b600062000d99826200104e565b915062000da6836200104e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000dde5762000ddd6200108e565b5b828201905092915050565b600062000df6826200104e565b915062000e03836200104e565b92508262000e165762000e15620010bd565b5b828204905092915050565b6000808291508390505b600185111562000e735780860481111562000e4b5762000e4a6200108e565b5b600185161562000e5b5780820291505b808102905062000e6b8562001120565b945062000e2b565b94509492505050565b600062000e89826200104e565b915062000e96836200104e565b925062000ec57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000ecd565b905092915050565b60008262000edf576001905062000fb2565b8162000eef576000905062000fb2565b816001811462000f08576002811462000f135762000f49565b600191505062000fb2565b60ff84111562000f285762000f276200108e565b5b8360020a91508482111562000f425762000f416200108e565b5b5062000fb2565b5060208310610133831016604e8410600b841016171562000f835782820a90508381111562000f7d5762000f7c6200108e565b5b62000fb2565b62000f92848484600162000e21565b9250905081840481111562000fac5762000fab6200108e565b5b81810290505b9392505050565b600062000fc6826200104e565b915062000fd3836200104e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200100f576200100e6200108e565b5b828202905092915050565b600062001027826200102e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060028204905060018216806200107157607f821691505b60208210811415620010885762001087620010ec565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b60008160011c9050919050565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b62001161816200101a565b81146200116d57600080fd5b50565b6152f180620011806000396000f3fe60806040526004361061028c5760003560e01c8063590ffdce1161015a578063a9059cbb116100c1578063d3f6a1571161007a578063d3f6a157146109b9578063d52dfc14146109e2578063dd62ed3e14610a0d578063e581dc7114610a4a578063eafb5a3c14610a75578063fb78680d14610a9e57610293565b8063a9059cbb146108bf578063b00cedd7146108fc578063b13590e314610913578063c4066f2f1461093c578063c49b9a8014610967578063c765a65e1461099057610293565b806380c581d11161011357806380c581d1146107af578063893d20e8146107d85780638da5cb5b1461080357806395d89b411461082e578063a028117e14610859578063a457c2d71461088257610293565b8063590ffdce146106c55780636c580801146106ee57806370a0823114610719578063715018a61461075657806378afd0201461076d57806379fd90961461079857610293565b806326003957116101fe578063452ed4f1116101b7578063452ed4f1146105a3578063455a4396146105ce5780634a74bb02146105f75780634fb2e45d146106225780634fbee1931461064b578063571ac8b01461068857610293565b80632600395714610493578063313ce567146104bc57806339509351146104e75780633a991107146105245780633c0a73ae1461054f5780633f3cf56c1461057a57610293565b80630c60f3e9116102505780630c60f3e9146103815780630ec4c619146103ac57806318160ddd146103c35780631cdd3be3146103ee57806323b872dd1461042b57806324d8c0a91461046857610293565b806303fd2a451461029857806304faf74a146102c357806306fdde03146102ee5780630758d92414610319578063095ea7b31461034457610293565b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610ac7565b6040516102ba919061486c565b60405180910390f35b3480156102cf57600080fd5b506102d8610acd565b6040516102e59190614b12565b60405180910390f35b3480156102fa57600080fd5b50610303610ad3565b6040516103109190614970565b60405180910390f35b34801561032557600080fd5b5061032e610b65565b60405161033b9190614955565b60405180910390f35b34801561035057600080fd5b5061036b600480360381019061036691906143f6565b610b8b565b604051610378919061493a565b60405180910390f35b34801561038d57600080fd5b50610396610ba9565b6040516103a39190614b12565b60405180910390f35b3480156103b857600080fd5b506103c1610baf565b005b3480156103cf57600080fd5b506103d8610d0f565b6040516103e59190614b12565b60405180910390f35b3480156103fa57600080fd5b5061041560048036038101906104109190614289565b610d19565b604051610422919061493a565b60405180910390f35b34801561043757600080fd5b50610452600480360381019061044d9190614363565b610d39565b60405161045f919061493a565b60405180910390f35b34801561047457600080fd5b5061047d610e86565b60405161048a9190614b12565b60405180910390f35b34801561049f57600080fd5b506104ba60048036038101906104b59190614463565b610e8c565b005b3480156104c857600080fd5b506104d1610fd5565b6040516104de9190614c8d565b60405180910390f35b3480156104f357600080fd5b5061050e600480360381019061050991906143f6565b610fde565b60405161051b919061493a565b60405180910390f35b34801561053057600080fd5b5061053961108a565b604051610546919061493a565b60405180910390f35b34801561055b57600080fd5b5061056461109d565b6040516105719190614b12565b60405180910390f35b34801561058657600080fd5b506105a1600480360381019061059c9190614463565b6110a3565b005b3480156105af57600080fd5b506105b86111ec565b6040516105c5919061486c565b60405180910390f35b3480156105da57600080fd5b506105f560048036038101906105f091906143b6565b611212565b005b34801561060357600080fd5b5061060c61133b565b604051610619919061493a565b60405180910390f35b34801561062e57600080fd5b5061064960048036038101906106449190614289565b61134e565b005b34801561065757600080fd5b50610672600480360381019061066d9190614289565b6117bf565b60405161067f919061493a565b60405180910390f35b34801561069457600080fd5b506106af60048036038101906106aa9190614289565b611815565b6040516106bc919061493a565b60405180910390f35b3480156106d157600080fd5b506106ec60048036038101906106e791906143b6565b611848565b005b3480156106fa57600080fd5b50610703611971565b604051610710919061493a565b60405180910390f35b34801561072557600080fd5b50610740600480360381019061073b9190614289565b611984565b60405161074d9190614b12565b60405180910390f35b34801561076257600080fd5b5061076b6119cd565b005b34801561077957600080fd5b50610782611b4b565b60405161078f9190614b12565b60405180910390f35b3480156107a457600080fd5b506107ad611b51565b005b3480156107bb57600080fd5b506107d660048036038101906107d191906143b6565b611c8f565b005b3480156107e457600080fd5b506107ed611e9d565b6040516107fa919061486c565b60405180910390f35b34801561080f57600080fd5b50610818611eac565b604051610825919061486c565b60405180910390f35b34801561083a57600080fd5b50610843611ed5565b6040516108509190614970565b60405180910390f35b34801561086557600080fd5b50610880600480360381019061087b91906144a3565b611f67565b005b34801561088e57600080fd5b506108a960048036038101906108a491906143f6565b612074565b6040516108b6919061493a565b60405180910390f35b3480156108cb57600080fd5b506108e660048036038101906108e191906143f6565b612120565b6040516108f3919061493a565b60405180910390f35b34801561090857600080fd5b5061091161213f565b005b34801561091f57600080fd5b5061093a60048036038101906109359190614436565b61227d565b005b34801561094857600080fd5b50610951612366565b60405161095e9190614b12565b60405180910390f35b34801561097357600080fd5b5061098e60048036038101906109899190614436565b61236c565b005b34801561099c57600080fd5b506109b760048036038101906109b291906144a3565b612455565b005b3480156109c557600080fd5b506109e060048036038101906109db91906142e3565b612562565b005b3480156109ee57600080fd5b506109f761271b565b604051610a049190614b12565b60405180910390f35b348015610a1957600080fd5b50610a346004803603810190610a2f9190614323565b612721565b604051610a419190614b12565b60405180910390f35b348015610a5657600080fd5b50610a5f6127a8565b604051610a6c9190614b12565b60405180910390f35b348015610a8157600080fd5b50610a9c6004803603810190610a979190614289565b6127ae565b005b348015610aaa57600080fd5b50610ac56004803603810190610ac09190614549565b612cd6565b005b61dead81565b600a5481565b606060088054610ae290614ef4565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0e90614ef4565b8015610b5b5780601f10610b3057610100808354040283529160200191610b5b565b820191906000526020600020905b815481529060010190602001808311610b3e57829003601f168201915b5050505050905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610b9f610b98612dec565b8484612df4565b6001905092915050565b60115481565b610bb7612dec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3b906149b2565b60405180910390fd5b61012c600a8190555061012c600b81905550610320600c81905550600c54600b54600a54610c729190614cfd565b610c7c9190614cfd565b600d8190555061012c600e8190555061012c600f81905550610320601081905550601054600f54600e54610cb09190614cfd565b610cba9190614cfd565b6011819055507f6c44e0772462d2195efdf15ba6f454114342213281004ec2c68a801c3decfa7c600a54600b54600c54600e54600f54601054604051610d0596959493929190614c2c565b60405180910390a1565b6000601254905090565b60236020528060005260406000206000915054906101000a900460ff1681565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e725781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e6a9190614dde565b925050819055505b610e7d848484612fbf565b90509392505050565b600d5481565b610e94612dec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f18906149b2565b60405180910390fd5b60008183601254610f329190614d84565b610f3c9190614d53565b90506103e8601254610f4e9190614d53565b811015610f90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f87906149d2565b60405180910390fd5b80601d819055507f8f6fe3edbeaaa5d1ad4714f04f6ba21e0a5fdf38ccdb538685a118e9587321bf8383604051610fc8929190614b87565b60405180910390a1505050565b60006009905090565b6000611080610feb612dec565b848460046000610ff9612dec565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461107b9190614cfd565b612df4565b6001905092915050565b602260009054906101000a900460ff1681565b600b5481565b6110ab612dec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112f906149b2565b60405180910390fd5b600081836012546111499190614d84565b6111539190614d53565b90506103e86012546111659190614d53565b8110156111a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119e906149d2565b60405180910390fd5b80601a819055507f78c27ed41f3c02d6647f535573ed7f9094a00791154ae01d3babeff40b4ed6b583836040516111df929190614b87565b60405180910390a1505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61121a612dec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129e906149b2565b60405180910390fd5b80602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f09fb98d4f02479ce251faed0f992a3c326d006e19ffa4f7269239763a644f725828260405161132f9291906148b0565b60405180910390a15050565b601760159054906101000a900460ff1681565b611356612dec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113da906149b2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144a90614af2565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156114c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bb90614af2565b60405180910390fd5b6114ef60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611848565b6114fa816001611848565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156115b25780601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6115db60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611984565b600460008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006116a760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611984565b11156117025761170060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826116fb60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611984565b612fbf565b505b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000611841827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610b8b565b9050919050565b611850612dec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d4906149b2565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fc4eea32423e96d678d53f47ddd9b7a5103eea02606d7daa81c77038c54dc8edb82826040516119659291906148b0565b60405180910390a15050565b602060009054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6119d5612dec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a59906149b2565b60405180910390fd5b611a8d60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611848565b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3565b600e5481565b611b59612dec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611be6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdd906149b2565b60405180910390fd5b6002600e54611bf59190614d84565b600e819055506002600f54611c0a9190614d84565b600f819055506002601054611c1f9190614d84565b601081905550601054600f54600e54611c389190614cfd565b611c429190614cfd565b6011819055507f8bea1e76cffc876c91c13cfbf4aa2a9c787a20e9c9b7ac8262e7f3e71534554c600e54600f54601054601154604051611c859493929190614be7565b60405180910390a1565b611c97612dec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1b906149b2565b60405180910390fd5b600015158115151415611d8e576000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611e4b565b600060035414611deb5762093a8060035442611daa9190614dde565b11611dea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de190614a52565b60405180910390fd5b5b6001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550426003819055505b8173ffffffffffffffffffffffffffffffffffffffff167ff5fb18159375b358b964b780dcfad693e0410b5632540712f1a457749a6c40a782604051611e91919061493a565b60405180910390a25050565b6000611ea7611eac565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060098054611ee490614ef4565b80601f0160208091040260200160405190810160405280929190818152602001828054611f1090614ef4565b8015611f5d5780601f10611f3257610100808354040283529160200191611f5d565b820191906000526020600020905b815481529060010190602001808311611f4057829003601f168201915b5050505050905090565b611f6f612dec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ffc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff3906149b2565b60405180910390fd5b82600e8190555081600f8190555080601081905550601054600f54600e546120249190614cfd565b61202e9190614cfd565b6011819055507f0e4170c4c28b56eef908f6be4e27cef63bdfe7e71a7e031a345126894f9a6ab183838360405161206793929190614bb0565b60405180910390a1505050565b6000612116612081612dec565b84846004600061208f612dec565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121119190614dde565b612df4565b6001905092915050565b600061213461212d612dec565b8484612fbf565b506001905092915050565b612147612dec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121cb906149b2565b60405180910390fd5b6002600a546121e39190614d53565b600a819055506002600b546121f89190614d53565b600b819055506002600c5461220d9190614d53565b600c81905550600c54600b54600a546122269190614cfd565b6122309190614cfd565b600d819055507f8f7b4869e7f25c14ae5f8cc6be8219bbe8cdca105fe8ed66b159684e843117b2600a54600b54600c54600d546040516122739493929190614be7565b60405180910390a1565b612285612dec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612312576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612309906149b2565b60405180910390fd5b80602060006101000a81548160ff0219169083151502179055507f3a8e49d1cd2e26f6137888446f77471cefcc70859ee81d6fb90ab5882f469c858160405161235b919061493a565b60405180910390a150565b60105481565b612374612dec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612401576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f8906149b2565b60405180910390fd5b80601760156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161244a919061493a565b60405180910390a150565b61245d612dec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e1906149b2565b60405180910390fd5b82600a8190555081600b8190555080600c81905550600c54600b54600a546125129190614cfd565b61251c9190614cfd565b600d819055507f175958e2d7d19cbe7ea4587a33f61ddfcd1c028641e331df51c3232cb2c2664883838360405161255593929190614bb0565b60405180910390a1505050565b61256a612dec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ee906149b2565b60405180910390fd5b81601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f0c6c0825f1c618d6202ac048452713e895799b653d19fbcb493a99f568d1842960405160405180910390a35050565b600f5481565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600c5481565b6127b6612dec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612843576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283a906149b2565b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561289057600080fd5b505afa1580156128a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128c891906142b6565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561292a57600080fd5b505afa15801561293e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061296291906142b6565b6040518363ffffffff1660e01b815260040161297f929190614887565b60206040518083038186803b15801561299757600080fd5b505afa1580156129ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129cf91906142b6565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612bd2578173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015612a4c57600080fd5b505afa158015612a60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a8491906142b6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612ae657600080fd5b505afa158015612afa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b1e91906142b6565b6040518363ffffffff1660e01b8152600401612b3b929190614887565b602060405180830381600087803b158015612b5557600080fd5b505af1158015612b69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b8d91906142b6565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612c14565b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8173ffffffffffffffffffffffffffffffffffffffff16601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fd7892fe92990aad599a17c61b6ff32158eb9a6b0b13783759314766edd85f23660405160405180910390a381601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b612cde612dec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d62906149b2565b60405180910390fd5b8284601254612d7a9190614d84565b612d849190614d53565b601e819055508082601254612d999190614d84565b612da39190614d53565b601f819055507f9690ae996ab3e30fe50be847f5695c406c1e341ddebe0df9c9c1be5bc38d01a3601e54601f54604051612dde929190614b87565b60405180910390a150505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612e64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5b90614a92565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ed4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ecb90614a92565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612fb29190614b12565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415613030576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302790614a32565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156130a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161309790614a32565b60405180910390fd5b600082116130e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130da90614a72565b60405180910390fd5b602360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131875750602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6131c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131bd90614a12565b60405180910390fd5b602060009054906101000a900460ff16613215576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161320c906149f2565b60405180910390fd5b6000602154141561322b5761322a84846136b0565b5b6132358484613800565b1561342d57600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806132db5750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561332657601a54821115613325576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161331c90614ad2565b60405180910390fd5b5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156133ce5750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561342c57601d54826133e085611984565b6133ea9190614cfd565b111561342b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161342290614ab2565b60405180910390fd5b5b5b600060019050600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806134d45750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156134de57600090505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561359457601760149054906101000a900460ff1615801561355d5750601760159054906101000a900460ff165b1561359357600061356d30611984565b9050601e54811061359157601f54811061358757601f5490505b613590816139d7565b5b505b5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561369a574360215414801561360157506136008585613800565b5b15613699576001602360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161369090614992565b60405180910390fd5b5b6136a685858584613c2d565b9150509392505050565b602260009054906101000a900460ff166137fc576136ce8282613800565b1580156137285750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1561373557436021819055505b6001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001602260006101000a81548160ff0219169083151502179055506001601760156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15960016040516137f3919061493a565b60405180910390a15b5050565b600061380a611eac565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156138785750613848611eac565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156138ce5750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156139245750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561395e575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156139975750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156139cf57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b905092915050565b6001601760146101000a81548160ff0219169083151502179055506000600e54601054600f54613a079190614cfd565b613a119190614cfd565b1415613a1c57613c0f565b601154600e54601054600f54613a329190614cfd565b613a3c9190614cfd565b14613a4657613c0f565b60006002601154600f5484613a5b9190614d84565b613a659190614d53565b613a6f9190614d53565b905060008183613a7f9190614dde565b9050613a8a81613d68565b600047905060006002601154600f5484613aa49190614d84565b613aae9190614d53565b613ab89190614d53565b90506000841115613b0957613acd8482613f8d565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561848286604051613b0093929190614bb0565b60405180910390a15b60008183613b179190614dde565b1115613c0a57601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc60115460105485613b6a9190614d84565b613b749190614d53565b9081150290604051600060405180830381858888f19350505050158015613b9f573d6000803e3d6000fd5b50601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015613c08573d6000803e3d6000fd5b505b505050505b6000601760146101000a81548160ff02191690831515021790555050565b600082600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613c7e9190614dde565b92505081905550600082613c925783613c9e565b613c9d86868661404f565b5b905080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613cef9190614cfd565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613d539190614b12565b60405180910390a36001915050949350505050565b6000600267ffffffffffffffff811115613d8557613d84614fe2565b5b604051908082528060200260200182016040528015613db35781602001602082028036833780820191505090505b5090503081600081518110613dcb57613dca614fb3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613e6d57600080fd5b505afa158015613e81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ea591906142b6565b81600181518110613eb957613eb8614fb3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613f57959493929190614b2d565b600060405180830381600087803b158015613f7157600080fd5b505af1158015613f85573d6000803e3d6000fd5b505050505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401613ff6969594939291906148d9565b6060604051808303818588803b15801561400f57600080fd5b505af1158015614023573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061404891906144f6565b5050505050565b600080601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156140c657612710600d54846140b99190614d84565b6140c39190614d53565b90505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561413a576127106011548461412d9190614d84565b6141379190614d53565b90505b80600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546141899190614cfd565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516141ed9190614b12565b60405180910390a380836142019190614dde565b9150509392505050565b60008135905061421a8161525f565b92915050565b60008151905061422f8161525f565b92915050565b60008135905061424481615276565b92915050565b6000813590506142598161528d565b92915050565b60008135905061426e816152a4565b92915050565b600081519050614283816152a4565b92915050565b60006020828403121561429f5761429e615011565b5b60006142ad8482850161420b565b91505092915050565b6000602082840312156142cc576142cb615011565b5b60006142da84828501614220565b91505092915050565b600080604083850312156142fa576142f9615011565b5b600061430885828601614235565b925050602061431985828601614235565b9150509250929050565b6000806040838503121561433a57614339615011565b5b60006143488582860161420b565b92505060206143598582860161420b565b9150509250929050565b60008060006060848603121561437c5761437b615011565b5b600061438a8682870161420b565b935050602061439b8682870161420b565b92505060406143ac8682870161425f565b9150509250925092565b600080604083850312156143cd576143cc615011565b5b60006143db8582860161420b565b92505060206143ec8582860161424a565b9150509250929050565b6000806040838503121561440d5761440c615011565b5b600061441b8582860161420b565b925050602061442c8582860161425f565b9150509250929050565b60006020828403121561444c5761444b615011565b5b600061445a8482850161424a565b91505092915050565b6000806040838503121561447a57614479615011565b5b60006144888582860161425f565b92505060206144998582860161425f565b9150509250929050565b6000806000606084860312156144bc576144bb615011565b5b60006144ca8682870161425f565b93505060206144db8682870161425f565b92505060406144ec8682870161425f565b9150509250925092565b60008060006060848603121561450f5761450e615011565b5b600061451d86828701614274565b935050602061452e86828701614274565b925050604061453f86828701614274565b9150509250925092565b6000806000806080858703121561456357614562615011565b5b60006145718782880161425f565b94505060206145828782880161425f565b93505060406145938782880161425f565b92505060606145a48782880161425f565b91505092959194509250565b60006145bc83836145c8565b60208301905092915050565b6145d181614e12565b82525050565b6145e081614e12565b82525050565b60006145f182614cb8565b6145fb8185614cdb565b935061460683614ca8565b8060005b8381101561463757815161461e88826145b0565b975061462983614cce565b92505060018101905061460a565b5085935050505092915050565b61464d81614e36565b82525050565b61465c81614e79565b82525050565b61466b81614e8b565b82525050565b600061467c82614cc3565b6146868185614cec565b9350614696818560208601614ec1565b61469f81615016565b840191505092915050565b60006146b7601483614cec565b91506146c282615027565b602082019050919050565b60006146da601183614cec565b91506146e582615050565b602082019050919050565b60006146fd602383614cec565b915061470882615079565b604082019050919050565b6000614720601683614cec565b915061472b826150c8565b602082019050919050565b6000614743601383614cec565b915061474e826150f1565b602082019050919050565b6000614766601483614cec565b91506147718261511a565b602082019050919050565b6000614789601283614cec565b915061479482615143565b602082019050919050565b60006147ac600883614cec565b91506147b78261516c565b602082019050919050565b60006147cf601383614cec565b91506147da82615195565b602082019050919050565b60006147f2601a83614cec565b91506147fd826151be565b602082019050919050565b6000614815601883614cec565b9150614820826151e7565b602082019050919050565b6000614838603d83614cec565b915061484382615210565b604082019050919050565b61485781614e62565b82525050565b61486681614e6c565b82525050565b600060208201905061488160008301846145d7565b92915050565b600060408201905061489c60008301856145d7565b6148a960208301846145d7565b9392505050565b60006040820190506148c560008301856145d7565b6148d26020830184614644565b9392505050565b600060c0820190506148ee60008301896145d7565b6148fb602083018861484e565b6149086040830187614662565b6149156060830186614662565b61492260808301856145d7565b61492f60a083018461484e565b979650505050505050565b600060208201905061494f6000830184614644565b92915050565b600060208201905061496a6000830184614653565b92915050565b6000602082019050818103600083015261498a8184614671565b905092915050565b600060208201905081810360008301526149ab816146aa565b9050919050565b600060208201905081810360008301526149cb816146cd565b9050919050565b600060208201905081810360008301526149eb816146f0565b9050919050565b60006020820190508181036000830152614a0b81614713565b9050919050565b60006020820190508181036000830152614a2b81614736565b9050919050565b60006020820190508181036000830152614a4b81614759565b9050919050565b60006020820190508181036000830152614a6b8161477c565b9050919050565b60006020820190508181036000830152614a8b8161479f565b9050919050565b60006020820190508181036000830152614aab816147c2565b9050919050565b60006020820190508181036000830152614acb816147e5565b9050919050565b60006020820190508181036000830152614aeb81614808565b9050919050565b60006020820190508181036000830152614b0b8161482b565b9050919050565b6000602082019050614b27600083018461484e565b92915050565b600060a082019050614b42600083018861484e565b614b4f6020830187614662565b8181036040830152614b6181866145e6565b9050614b7060608301856145d7565b614b7d608083018461484e565b9695505050505050565b6000604082019050614b9c600083018561484e565b614ba9602083018461484e565b9392505050565b6000606082019050614bc5600083018661484e565b614bd2602083018561484e565b614bdf604083018461484e565b949350505050565b6000608082019050614bfc600083018761484e565b614c09602083018661484e565b614c16604083018561484e565b614c23606083018461484e565b95945050505050565b600060c082019050614c41600083018961484e565b614c4e602083018861484e565b614c5b604083018761484e565b614c68606083018661484e565b614c75608083018561484e565b614c8260a083018461484e565b979650505050505050565b6000602082019050614ca2600083018461485d565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614d0882614e62565b9150614d1383614e62565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614d4857614d47614f26565b5b828201905092915050565b6000614d5e82614e62565b9150614d6983614e62565b925082614d7957614d78614f55565b5b828204905092915050565b6000614d8f82614e62565b9150614d9a83614e62565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614dd357614dd2614f26565b5b828202905092915050565b6000614de982614e62565b9150614df483614e62565b925082821015614e0757614e06614f26565b5b828203905092915050565b6000614e1d82614e42565b9050919050565b6000614e2f82614e42565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614e8482614e9d565b9050919050565b6000614e9682614e62565b9050919050565b6000614ea882614eaf565b9050919050565b6000614eba82614e42565b9050919050565b60005b83811015614edf578082015181840152602081019050614ec4565b83811115614eee576000848401525b50505050565b60006002820490506001821680614f0c57607f821691505b60208210811415614f2057614f1f614f84565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f46726f6e7452756e6e696e672069732042616421000000000000000000000000600082015250565b7f43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000600082015250565b7f4d7573742062652061626f766520302e3125206f6620746f74616c207375707060008201527f6c792e0000000000000000000000000000000000000000000000000000000000602082015250565b7f54726164696e67206973206e6f74206163746976652100000000000000000000600082015250565b7f426c61636b6c6973746564206164647265737300000000000000000000000000600082015250565b7f45524332303a205a65726f20616464726573732e000000000000000000000000600082015250565b7f4f6e65207765656b20636f6f6c646f776e2e0000000000000000000000000000600082015250565b7f4d757374203e302e000000000000000000000000000000000000000000000000600082015250565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b7f4578636565647320746865206d61785478416d6f756e742e0000000000000000600082015250565b7f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660008201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000602082015250565b61526881614e12565b811461527357600080fd5b50565b61527f81614e24565b811461528a57600080fd5b50565b61529681614e36565b81146152a157600080fd5b50565b6152ad81614e62565b81146152b857600080fd5b5056fea2646970667358221220c72e57723ccafbf4ba89574c67f7596c3a80e5bf67f5a2b253f73816d34d0e9064736f6c63430008070033
Deployed Bytecode
0x60806040526004361061028c5760003560e01c8063590ffdce1161015a578063a9059cbb116100c1578063d3f6a1571161007a578063d3f6a157146109b9578063d52dfc14146109e2578063dd62ed3e14610a0d578063e581dc7114610a4a578063eafb5a3c14610a75578063fb78680d14610a9e57610293565b8063a9059cbb146108bf578063b00cedd7146108fc578063b13590e314610913578063c4066f2f1461093c578063c49b9a8014610967578063c765a65e1461099057610293565b806380c581d11161011357806380c581d1146107af578063893d20e8146107d85780638da5cb5b1461080357806395d89b411461082e578063a028117e14610859578063a457c2d71461088257610293565b8063590ffdce146106c55780636c580801146106ee57806370a0823114610719578063715018a61461075657806378afd0201461076d57806379fd90961461079857610293565b806326003957116101fe578063452ed4f1116101b7578063452ed4f1146105a3578063455a4396146105ce5780634a74bb02146105f75780634fb2e45d146106225780634fbee1931461064b578063571ac8b01461068857610293565b80632600395714610493578063313ce567146104bc57806339509351146104e75780633a991107146105245780633c0a73ae1461054f5780633f3cf56c1461057a57610293565b80630c60f3e9116102505780630c60f3e9146103815780630ec4c619146103ac57806318160ddd146103c35780631cdd3be3146103ee57806323b872dd1461042b57806324d8c0a91461046857610293565b806303fd2a451461029857806304faf74a146102c357806306fdde03146102ee5780630758d92414610319578063095ea7b31461034457610293565b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610ac7565b6040516102ba919061486c565b60405180910390f35b3480156102cf57600080fd5b506102d8610acd565b6040516102e59190614b12565b60405180910390f35b3480156102fa57600080fd5b50610303610ad3565b6040516103109190614970565b60405180910390f35b34801561032557600080fd5b5061032e610b65565b60405161033b9190614955565b60405180910390f35b34801561035057600080fd5b5061036b600480360381019061036691906143f6565b610b8b565b604051610378919061493a565b60405180910390f35b34801561038d57600080fd5b50610396610ba9565b6040516103a39190614b12565b60405180910390f35b3480156103b857600080fd5b506103c1610baf565b005b3480156103cf57600080fd5b506103d8610d0f565b6040516103e59190614b12565b60405180910390f35b3480156103fa57600080fd5b5061041560048036038101906104109190614289565b610d19565b604051610422919061493a565b60405180910390f35b34801561043757600080fd5b50610452600480360381019061044d9190614363565b610d39565b60405161045f919061493a565b60405180910390f35b34801561047457600080fd5b5061047d610e86565b60405161048a9190614b12565b60405180910390f35b34801561049f57600080fd5b506104ba60048036038101906104b59190614463565b610e8c565b005b3480156104c857600080fd5b506104d1610fd5565b6040516104de9190614c8d565b60405180910390f35b3480156104f357600080fd5b5061050e600480360381019061050991906143f6565b610fde565b60405161051b919061493a565b60405180910390f35b34801561053057600080fd5b5061053961108a565b604051610546919061493a565b60405180910390f35b34801561055b57600080fd5b5061056461109d565b6040516105719190614b12565b60405180910390f35b34801561058657600080fd5b506105a1600480360381019061059c9190614463565b6110a3565b005b3480156105af57600080fd5b506105b86111ec565b6040516105c5919061486c565b60405180910390f35b3480156105da57600080fd5b506105f560048036038101906105f091906143b6565b611212565b005b34801561060357600080fd5b5061060c61133b565b604051610619919061493a565b60405180910390f35b34801561062e57600080fd5b5061064960048036038101906106449190614289565b61134e565b005b34801561065757600080fd5b50610672600480360381019061066d9190614289565b6117bf565b60405161067f919061493a565b60405180910390f35b34801561069457600080fd5b506106af60048036038101906106aa9190614289565b611815565b6040516106bc919061493a565b60405180910390f35b3480156106d157600080fd5b506106ec60048036038101906106e791906143b6565b611848565b005b3480156106fa57600080fd5b50610703611971565b604051610710919061493a565b60405180910390f35b34801561072557600080fd5b50610740600480360381019061073b9190614289565b611984565b60405161074d9190614b12565b60405180910390f35b34801561076257600080fd5b5061076b6119cd565b005b34801561077957600080fd5b50610782611b4b565b60405161078f9190614b12565b60405180910390f35b3480156107a457600080fd5b506107ad611b51565b005b3480156107bb57600080fd5b506107d660048036038101906107d191906143b6565b611c8f565b005b3480156107e457600080fd5b506107ed611e9d565b6040516107fa919061486c565b60405180910390f35b34801561080f57600080fd5b50610818611eac565b604051610825919061486c565b60405180910390f35b34801561083a57600080fd5b50610843611ed5565b6040516108509190614970565b60405180910390f35b34801561086557600080fd5b50610880600480360381019061087b91906144a3565b611f67565b005b34801561088e57600080fd5b506108a960048036038101906108a491906143f6565b612074565b6040516108b6919061493a565b60405180910390f35b3480156108cb57600080fd5b506108e660048036038101906108e191906143f6565b612120565b6040516108f3919061493a565b60405180910390f35b34801561090857600080fd5b5061091161213f565b005b34801561091f57600080fd5b5061093a60048036038101906109359190614436565b61227d565b005b34801561094857600080fd5b50610951612366565b60405161095e9190614b12565b60405180910390f35b34801561097357600080fd5b5061098e60048036038101906109899190614436565b61236c565b005b34801561099c57600080fd5b506109b760048036038101906109b291906144a3565b612455565b005b3480156109c557600080fd5b506109e060048036038101906109db91906142e3565b612562565b005b3480156109ee57600080fd5b506109f761271b565b604051610a049190614b12565b60405180910390f35b348015610a1957600080fd5b50610a346004803603810190610a2f9190614323565b612721565b604051610a419190614b12565b60405180910390f35b348015610a5657600080fd5b50610a5f6127a8565b604051610a6c9190614b12565b60405180910390f35b348015610a8157600080fd5b50610a9c6004803603810190610a979190614289565b6127ae565b005b348015610aaa57600080fd5b50610ac56004803603810190610ac09190614549565b612cd6565b005b61dead81565b600a5481565b606060088054610ae290614ef4565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0e90614ef4565b8015610b5b5780601f10610b3057610100808354040283529160200191610b5b565b820191906000526020600020905b815481529060010190602001808311610b3e57829003601f168201915b5050505050905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610b9f610b98612dec565b8484612df4565b6001905092915050565b60115481565b610bb7612dec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3b906149b2565b60405180910390fd5b61012c600a8190555061012c600b81905550610320600c81905550600c54600b54600a54610c729190614cfd565b610c7c9190614cfd565b600d8190555061012c600e8190555061012c600f81905550610320601081905550601054600f54600e54610cb09190614cfd565b610cba9190614cfd565b6011819055507f6c44e0772462d2195efdf15ba6f454114342213281004ec2c68a801c3decfa7c600a54600b54600c54600e54600f54601054604051610d0596959493929190614c2c565b60405180910390a1565b6000601254905090565b60236020528060005260406000206000915054906101000a900460ff1681565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e725781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e6a9190614dde565b925050819055505b610e7d848484612fbf565b90509392505050565b600d5481565b610e94612dec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f18906149b2565b60405180910390fd5b60008183601254610f329190614d84565b610f3c9190614d53565b90506103e8601254610f4e9190614d53565b811015610f90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f87906149d2565b60405180910390fd5b80601d819055507f8f6fe3edbeaaa5d1ad4714f04f6ba21e0a5fdf38ccdb538685a118e9587321bf8383604051610fc8929190614b87565b60405180910390a1505050565b60006009905090565b6000611080610feb612dec565b848460046000610ff9612dec565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461107b9190614cfd565b612df4565b6001905092915050565b602260009054906101000a900460ff1681565b600b5481565b6110ab612dec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112f906149b2565b60405180910390fd5b600081836012546111499190614d84565b6111539190614d53565b90506103e86012546111659190614d53565b8110156111a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119e906149d2565b60405180910390fd5b80601a819055507f78c27ed41f3c02d6647f535573ed7f9094a00791154ae01d3babeff40b4ed6b583836040516111df929190614b87565b60405180910390a1505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61121a612dec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129e906149b2565b60405180910390fd5b80602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f09fb98d4f02479ce251faed0f992a3c326d006e19ffa4f7269239763a644f725828260405161132f9291906148b0565b60405180910390a15050565b601760159054906101000a900460ff1681565b611356612dec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113da906149b2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144a90614af2565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156114c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bb90614af2565b60405180910390fd5b6114ef60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611848565b6114fa816001611848565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156115b25780601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6115db60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611984565b600460008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006116a760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611984565b11156117025761170060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826116fb60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611984565b612fbf565b505b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000611841827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610b8b565b9050919050565b611850612dec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d4906149b2565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fc4eea32423e96d678d53f47ddd9b7a5103eea02606d7daa81c77038c54dc8edb82826040516119659291906148b0565b60405180910390a15050565b602060009054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6119d5612dec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a59906149b2565b60405180910390fd5b611a8d60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611848565b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3565b600e5481565b611b59612dec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611be6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdd906149b2565b60405180910390fd5b6002600e54611bf59190614d84565b600e819055506002600f54611c0a9190614d84565b600f819055506002601054611c1f9190614d84565b601081905550601054600f54600e54611c389190614cfd565b611c429190614cfd565b6011819055507f8bea1e76cffc876c91c13cfbf4aa2a9c787a20e9c9b7ac8262e7f3e71534554c600e54600f54601054601154604051611c859493929190614be7565b60405180910390a1565b611c97612dec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1b906149b2565b60405180910390fd5b600015158115151415611d8e576000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611e4b565b600060035414611deb5762093a8060035442611daa9190614dde565b11611dea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de190614a52565b60405180910390fd5b5b6001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550426003819055505b8173ffffffffffffffffffffffffffffffffffffffff167ff5fb18159375b358b964b780dcfad693e0410b5632540712f1a457749a6c40a782604051611e91919061493a565b60405180910390a25050565b6000611ea7611eac565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060098054611ee490614ef4565b80601f0160208091040260200160405190810160405280929190818152602001828054611f1090614ef4565b8015611f5d5780601f10611f3257610100808354040283529160200191611f5d565b820191906000526020600020905b815481529060010190602001808311611f4057829003601f168201915b5050505050905090565b611f6f612dec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ffc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff3906149b2565b60405180910390fd5b82600e8190555081600f8190555080601081905550601054600f54600e546120249190614cfd565b61202e9190614cfd565b6011819055507f0e4170c4c28b56eef908f6be4e27cef63bdfe7e71a7e031a345126894f9a6ab183838360405161206793929190614bb0565b60405180910390a1505050565b6000612116612081612dec565b84846004600061208f612dec565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121119190614dde565b612df4565b6001905092915050565b600061213461212d612dec565b8484612fbf565b506001905092915050565b612147612dec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121cb906149b2565b60405180910390fd5b6002600a546121e39190614d53565b600a819055506002600b546121f89190614d53565b600b819055506002600c5461220d9190614d53565b600c81905550600c54600b54600a546122269190614cfd565b6122309190614cfd565b600d819055507f8f7b4869e7f25c14ae5f8cc6be8219bbe8cdca105fe8ed66b159684e843117b2600a54600b54600c54600d546040516122739493929190614be7565b60405180910390a1565b612285612dec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612312576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612309906149b2565b60405180910390fd5b80602060006101000a81548160ff0219169083151502179055507f3a8e49d1cd2e26f6137888446f77471cefcc70859ee81d6fb90ab5882f469c858160405161235b919061493a565b60405180910390a150565b60105481565b612374612dec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612401576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f8906149b2565b60405180910390fd5b80601760156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161244a919061493a565b60405180910390a150565b61245d612dec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e1906149b2565b60405180910390fd5b82600a8190555081600b8190555080600c81905550600c54600b54600a546125129190614cfd565b61251c9190614cfd565b600d819055507f175958e2d7d19cbe7ea4587a33f61ddfcd1c028641e331df51c3232cb2c2664883838360405161255593929190614bb0565b60405180910390a1505050565b61256a612dec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ee906149b2565b60405180910390fd5b81601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f0c6c0825f1c618d6202ac048452713e895799b653d19fbcb493a99f568d1842960405160405180910390a35050565b600f5481565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600c5481565b6127b6612dec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612843576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283a906149b2565b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561289057600080fd5b505afa1580156128a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128c891906142b6565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561292a57600080fd5b505afa15801561293e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061296291906142b6565b6040518363ffffffff1660e01b815260040161297f929190614887565b60206040518083038186803b15801561299757600080fd5b505afa1580156129ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129cf91906142b6565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612bd2578173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015612a4c57600080fd5b505afa158015612a60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a8491906142b6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612ae657600080fd5b505afa158015612afa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b1e91906142b6565b6040518363ffffffff1660e01b8152600401612b3b929190614887565b602060405180830381600087803b158015612b5557600080fd5b505af1158015612b69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b8d91906142b6565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612c14565b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8173ffffffffffffffffffffffffffffffffffffffff16601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fd7892fe92990aad599a17c61b6ff32158eb9a6b0b13783759314766edd85f23660405160405180910390a381601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b612cde612dec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d62906149b2565b60405180910390fd5b8284601254612d7a9190614d84565b612d849190614d53565b601e819055508082601254612d999190614d84565b612da39190614d53565b601f819055507f9690ae996ab3e30fe50be847f5695c406c1e341ddebe0df9c9c1be5bc38d01a3601e54601f54604051612dde929190614b87565b60405180910390a150505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612e64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5b90614a92565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ed4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ecb90614a92565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612fb29190614b12565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415613030576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302790614a32565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156130a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161309790614a32565b60405180910390fd5b600082116130e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130da90614a72565b60405180910390fd5b602360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131875750602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6131c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131bd90614a12565b60405180910390fd5b602060009054906101000a900460ff16613215576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161320c906149f2565b60405180910390fd5b6000602154141561322b5761322a84846136b0565b5b6132358484613800565b1561342d57600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806132db5750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561332657601a54821115613325576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161331c90614ad2565b60405180910390fd5b5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156133ce5750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561342c57601d54826133e085611984565b6133ea9190614cfd565b111561342b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161342290614ab2565b60405180910390fd5b5b5b600060019050600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806134d45750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156134de57600090505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561359457601760149054906101000a900460ff1615801561355d5750601760159054906101000a900460ff165b1561359357600061356d30611984565b9050601e54811061359157601f54811061358757601f5490505b613590816139d7565b5b505b5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561369a574360215414801561360157506136008585613800565b5b15613699576001602360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161369090614992565b60405180910390fd5b5b6136a685858584613c2d565b9150509392505050565b602260009054906101000a900460ff166137fc576136ce8282613800565b1580156137285750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1561373557436021819055505b6001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001602260006101000a81548160ff0219169083151502179055506001601760156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15960016040516137f3919061493a565b60405180910390a15b5050565b600061380a611eac565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156138785750613848611eac565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156138ce5750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156139245750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561395e575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156139975750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156139cf57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b905092915050565b6001601760146101000a81548160ff0219169083151502179055506000600e54601054600f54613a079190614cfd565b613a119190614cfd565b1415613a1c57613c0f565b601154600e54601054600f54613a329190614cfd565b613a3c9190614cfd565b14613a4657613c0f565b60006002601154600f5484613a5b9190614d84565b613a659190614d53565b613a6f9190614d53565b905060008183613a7f9190614dde565b9050613a8a81613d68565b600047905060006002601154600f5484613aa49190614d84565b613aae9190614d53565b613ab89190614d53565b90506000841115613b0957613acd8482613f8d565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561848286604051613b0093929190614bb0565b60405180910390a15b60008183613b179190614dde565b1115613c0a57601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc60115460105485613b6a9190614d84565b613b749190614d53565b9081150290604051600060405180830381858888f19350505050158015613b9f573d6000803e3d6000fd5b50601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015613c08573d6000803e3d6000fd5b505b505050505b6000601760146101000a81548160ff02191690831515021790555050565b600082600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613c7e9190614dde565b92505081905550600082613c925783613c9e565b613c9d86868661404f565b5b905080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613cef9190614cfd565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613d539190614b12565b60405180910390a36001915050949350505050565b6000600267ffffffffffffffff811115613d8557613d84614fe2565b5b604051908082528060200260200182016040528015613db35781602001602082028036833780820191505090505b5090503081600081518110613dcb57613dca614fb3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613e6d57600080fd5b505afa158015613e81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ea591906142b6565b81600181518110613eb957613eb8614fb3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613f57959493929190614b2d565b600060405180830381600087803b158015613f7157600080fd5b505af1158015613f85573d6000803e3d6000fd5b505050505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401613ff6969594939291906148d9565b6060604051808303818588803b15801561400f57600080fd5b505af1158015614023573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061404891906144f6565b5050505050565b600080601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156140c657612710600d54846140b99190614d84565b6140c39190614d53565b90505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561413a576127106011548461412d9190614d84565b6141379190614d53565b90505b80600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546141899190614cfd565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516141ed9190614b12565b60405180910390a380836142019190614dde565b9150509392505050565b60008135905061421a8161525f565b92915050565b60008151905061422f8161525f565b92915050565b60008135905061424481615276565b92915050565b6000813590506142598161528d565b92915050565b60008135905061426e816152a4565b92915050565b600081519050614283816152a4565b92915050565b60006020828403121561429f5761429e615011565b5b60006142ad8482850161420b565b91505092915050565b6000602082840312156142cc576142cb615011565b5b60006142da84828501614220565b91505092915050565b600080604083850312156142fa576142f9615011565b5b600061430885828601614235565b925050602061431985828601614235565b9150509250929050565b6000806040838503121561433a57614339615011565b5b60006143488582860161420b565b92505060206143598582860161420b565b9150509250929050565b60008060006060848603121561437c5761437b615011565b5b600061438a8682870161420b565b935050602061439b8682870161420b565b92505060406143ac8682870161425f565b9150509250925092565b600080604083850312156143cd576143cc615011565b5b60006143db8582860161420b565b92505060206143ec8582860161424a565b9150509250929050565b6000806040838503121561440d5761440c615011565b5b600061441b8582860161420b565b925050602061442c8582860161425f565b9150509250929050565b60006020828403121561444c5761444b615011565b5b600061445a8482850161424a565b91505092915050565b6000806040838503121561447a57614479615011565b5b60006144888582860161425f565b92505060206144998582860161425f565b9150509250929050565b6000806000606084860312156144bc576144bb615011565b5b60006144ca8682870161425f565b93505060206144db8682870161425f565b92505060406144ec8682870161425f565b9150509250925092565b60008060006060848603121561450f5761450e615011565b5b600061451d86828701614274565b935050602061452e86828701614274565b925050604061453f86828701614274565b9150509250925092565b6000806000806080858703121561456357614562615011565b5b60006145718782880161425f565b94505060206145828782880161425f565b93505060406145938782880161425f565b92505060606145a48782880161425f565b91505092959194509250565b60006145bc83836145c8565b60208301905092915050565b6145d181614e12565b82525050565b6145e081614e12565b82525050565b60006145f182614cb8565b6145fb8185614cdb565b935061460683614ca8565b8060005b8381101561463757815161461e88826145b0565b975061462983614cce565b92505060018101905061460a565b5085935050505092915050565b61464d81614e36565b82525050565b61465c81614e79565b82525050565b61466b81614e8b565b82525050565b600061467c82614cc3565b6146868185614cec565b9350614696818560208601614ec1565b61469f81615016565b840191505092915050565b60006146b7601483614cec565b91506146c282615027565b602082019050919050565b60006146da601183614cec565b91506146e582615050565b602082019050919050565b60006146fd602383614cec565b915061470882615079565b604082019050919050565b6000614720601683614cec565b915061472b826150c8565b602082019050919050565b6000614743601383614cec565b915061474e826150f1565b602082019050919050565b6000614766601483614cec565b91506147718261511a565b602082019050919050565b6000614789601283614cec565b915061479482615143565b602082019050919050565b60006147ac600883614cec565b91506147b78261516c565b602082019050919050565b60006147cf601383614cec565b91506147da82615195565b602082019050919050565b60006147f2601a83614cec565b91506147fd826151be565b602082019050919050565b6000614815601883614cec565b9150614820826151e7565b602082019050919050565b6000614838603d83614cec565b915061484382615210565b604082019050919050565b61485781614e62565b82525050565b61486681614e6c565b82525050565b600060208201905061488160008301846145d7565b92915050565b600060408201905061489c60008301856145d7565b6148a960208301846145d7565b9392505050565b60006040820190506148c560008301856145d7565b6148d26020830184614644565b9392505050565b600060c0820190506148ee60008301896145d7565b6148fb602083018861484e565b6149086040830187614662565b6149156060830186614662565b61492260808301856145d7565b61492f60a083018461484e565b979650505050505050565b600060208201905061494f6000830184614644565b92915050565b600060208201905061496a6000830184614653565b92915050565b6000602082019050818103600083015261498a8184614671565b905092915050565b600060208201905081810360008301526149ab816146aa565b9050919050565b600060208201905081810360008301526149cb816146cd565b9050919050565b600060208201905081810360008301526149eb816146f0565b9050919050565b60006020820190508181036000830152614a0b81614713565b9050919050565b60006020820190508181036000830152614a2b81614736565b9050919050565b60006020820190508181036000830152614a4b81614759565b9050919050565b60006020820190508181036000830152614a6b8161477c565b9050919050565b60006020820190508181036000830152614a8b8161479f565b9050919050565b60006020820190508181036000830152614aab816147c2565b9050919050565b60006020820190508181036000830152614acb816147e5565b9050919050565b60006020820190508181036000830152614aeb81614808565b9050919050565b60006020820190508181036000830152614b0b8161482b565b9050919050565b6000602082019050614b27600083018461484e565b92915050565b600060a082019050614b42600083018861484e565b614b4f6020830187614662565b8181036040830152614b6181866145e6565b9050614b7060608301856145d7565b614b7d608083018461484e565b9695505050505050565b6000604082019050614b9c600083018561484e565b614ba9602083018461484e565b9392505050565b6000606082019050614bc5600083018661484e565b614bd2602083018561484e565b614bdf604083018461484e565b949350505050565b6000608082019050614bfc600083018761484e565b614c09602083018661484e565b614c16604083018561484e565b614c23606083018461484e565b95945050505050565b600060c082019050614c41600083018961484e565b614c4e602083018861484e565b614c5b604083018761484e565b614c68606083018661484e565b614c75608083018561484e565b614c8260a083018461484e565b979650505050505050565b6000602082019050614ca2600083018461485d565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614d0882614e62565b9150614d1383614e62565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614d4857614d47614f26565b5b828201905092915050565b6000614d5e82614e62565b9150614d6983614e62565b925082614d7957614d78614f55565b5b828204905092915050565b6000614d8f82614e62565b9150614d9a83614e62565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614dd357614dd2614f26565b5b828202905092915050565b6000614de982614e62565b9150614df483614e62565b925082821015614e0757614e06614f26565b5b828203905092915050565b6000614e1d82614e42565b9050919050565b6000614e2f82614e42565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614e8482614e9d565b9050919050565b6000614e9682614e62565b9050919050565b6000614ea882614eaf565b9050919050565b6000614eba82614e42565b9050919050565b60005b83811015614edf578082015181840152602081019050614ec4565b83811115614eee576000848401525b50505050565b60006002820490506001821680614f0c57607f821691505b60208210811415614f2057614f1f614f84565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f46726f6e7452756e6e696e672069732042616421000000000000000000000000600082015250565b7f43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000600082015250565b7f4d7573742062652061626f766520302e3125206f6620746f74616c207375707060008201527f6c792e0000000000000000000000000000000000000000000000000000000000602082015250565b7f54726164696e67206973206e6f74206163746976652100000000000000000000600082015250565b7f426c61636b6c6973746564206164647265737300000000000000000000000000600082015250565b7f45524332303a205a65726f20616464726573732e000000000000000000000000600082015250565b7f4f6e65207765656b20636f6f6c646f776e2e0000000000000000000000000000600082015250565b7f4d757374203e302e000000000000000000000000000000000000000000000000600082015250565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b7f4578636565647320746865206d61785478416d6f756e742e0000000000000000600082015250565b7f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660008201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000602082015250565b61526881614e12565b811461527357600080fd5b50565b61527f81614e24565b811461528a57600080fd5b50565b61529681614e36565b81146152a157600080fd5b50565b6152ad81614e62565b81146152b857600080fd5b5056fea2646970667358221220c72e57723ccafbf4ba89574c67f7596c3a80e5bf67f5a2b253f73816d34d0e9064736f6c63430008070033
Deployed Bytecode Sourcemap
6973:19936:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8517:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7579:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14332:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8342:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14945:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8053:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26333:573;;;;;;;;;;;;;:::i;:::-;;14067:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9506:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15559:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7765:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18875:310;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14156:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15873:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9452:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7641:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18561:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8384:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19998:172;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8845:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12750:761;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17365:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15431:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17498:187;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9353:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14645:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13519:195;;;;;;;;;;;;;:::i;:::-;;7864:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25886:439;;;;;;;;;;;;;:::i;:::-;;16907:450;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14418:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12663:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14242:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18192:361;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16096:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14770:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25458:420;;;;;;;;;;;;;:::i;:::-;;17693:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7990:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19819:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17832:352;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19548:263;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7927:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14504:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7703:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16329:570;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19193:347;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8517:85;8560:42;8517:85;:::o;7579:39::-;;;;:::o;14332:80::-;14380:13;14404:5;14397:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14332:80;:::o;8342:35::-;;;;;;;;;;;;;:::o;14945:161::-;15020:4;15037:39;15046:12;:10;:12::i;:::-;15060:7;15069:6;15037:8;:39::i;:::-;15094:4;15087:11;;14945:161;;;;:::o;8053:94::-;;;;:::o;26333:573::-;11128:12;:10;:12::i;:::-;11118:22;;:6;;;;;;;;;;:22;;;11110:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;26403:3:::1;26382:12;:24;;;;26438:3;26417:18;:24;;;;26473:3;26452:18;:24;;;;26544:18;;26523;;26508:12;;:33;;;;:::i;:::-;:54;;;;:::i;:::-;26487:18;:75;;;;26597:3;26575:13;:25;;;;26633:3;26611:19;:25;;;;26669:3;26647:19;:25;;;;26743:19;;26721;;26705:13;;:35;;;;:::i;:::-;:57;;;;:::i;:::-;26683:19;:79;;;;26778:120;26788:12;;26802:18;;26822;;26842:13;;26857:19;;26878;;26778:120;;;;;;;;;;;:::i;:::-;;;;;;;;26333:573::o:0;14067:83::-;14122:7;14140;;14133:14;;14067:83;:::o;9506:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;15559:306::-;15659:4;15715:17;15680:11;:19;15692:6;15680:19;;;;;;;;;;;;;;;:31;15700:10;15680:31;;;;;;;;;;;;;;;;:52;15676:126;;15784:6;15749:11;:19;15761:6;15749:19;;;;;;;;;;;;;;;:31;15769:10;15749:31;;;;;;;;;;;;;;;;:41;;;;;;;:::i;:::-;;;;;;;;15676:126;15821:36;15831:6;15839:9;15850:6;15821:9;:36::i;:::-;15814:43;;15559:306;;;;;:::o;7765:90::-;;;;:::o;18875:310::-;11128:12;:10;:12::i;:::-;11118:22;;:6;;;;;;;;;;:22;;;11110:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;18965:13:::1;19003:7;18992;18982;;:17;;;;:::i;:::-;18981:29;;;;:::i;:::-;18965:45;;19049:4;19039:7;;:14;;;;:::i;:::-;19029:5;:25;;19021:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;19122:5;19105:14;:22;;;;19143:34;19160:7;19169;19143:34;;;;;;;:::i;:::-;;;;;;;;18954:231;18875:310:::0;;:::o;14156:80::-;14208:5;8196:1;14217:16;;14156:80;:::o;15873:215::-;15961:4;15978:80;15987:12;:10;:12::i;:::-;16001:7;16047:10;16010:11;:25;16022:12;:10;:12::i;:::-;16010:25;;;;;;;;;;;;;;;:34;16036:7;16010:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;15978:8;:80::i;:::-;16076:4;16069:11;;15873:215;;;;:::o;9452:45::-;;;;;;;;;;;;;:::o;7641:39::-;;;;:::o;18561:306::-;11128:12;:10;:12::i;:::-;11118:22;;:6;;;;;;;;;;:22;;;11110:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;18650:13:::1;18688:7;18677;18667;;:17;;;;:::i;:::-;18666:29;;;;:::i;:::-;18650:45;;18734:4;18724:7;;:14;;;;:::i;:::-;18714:5;:25;;18706:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;18805:5;18790:12;:20;;;;18826:33;18842:7;18851;18826:33;;;;;;;:::i;:::-;;;;;;;;18639:228;18561:306:::0;;:::o;8384:21::-;;;;;;;;;;;;;:::o;19998:172::-;11128:12;:10;:12::i;:::-;11118:22;;:6;;;;;;;;;;:22;;;11110:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;20109:5:::1;20083:14;:23;20098:7;20083:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;20130:32;20147:7;20156:5;20130:32;;;;;;;:::i;:::-;;;;;;;;19998:172:::0;;:::o;8845:41::-;;;;;;;;;;;;;:::o;12750:761::-;11128:12;:10;:12::i;:::-;11118:22;;:6;;;;;;;;;;:22;;;11110:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;12851:1:::1;12831:22;;:8;:22;;;;12823:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;8560:42;12938:16;;:8;:16;;;;12930:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;13031:34;13051:6;::::0;::::1;;;;;;;;13059:5;13031:19;:34::i;:::-;13076:35;13096:8;13106:4;13076:19;:35::i;:::-;13164:6;::::0;::::1;;;;;;;;13136:35;;:16;;;;;;;;;;;:35;;;13132:90;;;13213:8;13186:16;;:36;;;;;;;;;;;;;;;;;;13132:90;13275:17;13285:6;::::0;::::1;;;;;;;;13275:9;:17::i;:::-;13243:11;:19;13255:6:::0;::::1;;;;;;;;;;13243:19;;;;;;;;;;;;;;;:29;13263:8;13243:29;;;;;;;;;;;;;;;:49;;;;13326:1;13306:17;13316:6;::::0;::::1;;;;;;;;13306:9;:17::i;:::-;:21;13303:99;;;13344:46;13354:6;::::0;::::1;;;;;;;;13362:8;13372:17;13382:6;::::0;::::1;;;;;;;;13372:9;:17::i;:::-;13344:9;:46::i;:::-;;13303:99;13431:8;13422:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;13484:8;13455:38;;13476:6;::::0;::::1;;;;;;;;13455:38;;;;;;;;;;;;12750:761:::0;:::o;17365:125::-;17430:4;17454:19;:28;17474:7;17454:28;;;;;;;;;;;;;;;;;;;;;;;;;17447:35;;17365:125;;;:::o;15431:120::-;15484:4;15508:35;15516:7;15525:17;15508:7;:35::i;:::-;15501:42;;15431:120;;;:::o;17498:187::-;11128:12;:10;:12::i;:::-;11118:22;;:6;;;;;;;;;;:22;;;11110:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;17617:7:::1;17586:19;:28;17606:7;17586:28;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;17640:37;17660:7;17669;17640:37;;;;;;;:::i;:::-;;;;;;;;17498:187:::0;;:::o;9353:44::-;;;;;;;;;;;;;:::o;14645:117::-;14711:7;14738;:16;14746:7;14738:16;;;;;;;;;;;;;;;;14731:23;;14645:117;;;:::o;13519:195::-;11128:12;:10;:12::i;:::-;11118:22;;:6;;;;;;;;;;:22;;;11110:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;13586:34:::1;13606:6;::::0;::::1;;;;;;;;13614:5;13586:19;:34::i;:::-;13648:1;13631:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;13703:1;13666:40;;13687:6;::::0;::::1;;;;;;;;13666:40;;;;;;;;;;;;13519:195::o:0;7864:40::-;;;;:::o;25886:439::-;11128:12;:10;:12::i;:::-;11118:22;;:6;;;;;;;;;;:22;;;11110:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;26006:1:::1;25990:13;;:17;;;;:::i;:::-;25968:13;:39;;;;26062:1;26040:19;;:23;;;;:::i;:::-;26018:19;:45;;;;26118:1;26096:19;;:23;;;;:::i;:::-;26074:19;:45;;;;26190:19;;26168;;26152:13;;:35;;;;:::i;:::-;:57;;;;:::i;:::-;26130:19;:79;;;;26225:92;26240:13;;26255:19;;26276;;26297;;26225:92;;;;;;;;;:::i;:::-;;;;;;;;25886:439::o:0;16907:450::-;11128:12;:10;:12::i;:::-;11118:22;;:6;;;;;;;;;;:22;;;11110:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;16999:5:::1;16988:16;;:7;:16;;;16984:326;;;17037:5;17021:7;:13;17029:4;17021:13;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;16984:326;;;17100:1;17079:17;;:22;17075:139;;17168:7;17148:17;;17130:15;:35;;;;:::i;:::-;:45;17122:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;17075:139;17244:4;17228:7;:13;17236:4;17228:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;17283:15;17263:17;:35;;;;16984:326;17335:4;17325:24;;;17341:7;17325:24;;;;;;:::i;:::-;;;;;;;;16907:450:::0;;:::o;14418:80::-;14470:7;14488;:5;:7::i;:::-;14481:14;;14418:80;:::o;12663:79::-;12701:7;12728:6;;;;;;;;;;;12721:13;;12663:79;:::o;14242:84::-;14292:13;14316:7;14309:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14242:84;:::o;18192:361::-;11128:12;:10;:12::i;:::-;11118:22;;:6;;;;;;;;;;:22;;;11110:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;18312:3:::1;18296:13;:19;;;;18348:9;18326:19;:31;;;;18390:9;18368:19;:31;;;;18470:19;;18448;;18432:13;;:35;;;;:::i;:::-;:57;;;;:::i;:::-;18410:19;:79;;;;18505:40;18519:3;18524:9;18535;18505:40;;;;;;;;:::i;:::-;;;;;;;;18192:361:::0;;;:::o;16096:225::-;16189:4;16206:85;16215:12;:10;:12::i;:::-;16229:7;16275:15;16238:11;:25;16250:12;:10;:12::i;:::-;16238:25;;;;;;;;;;;;;;;:34;16264:7;16238:34;;;;;;;;;;;;;;;;:52;;;;:::i;:::-;16206:8;:85::i;:::-;16309:4;16302:11;;16096:225;;;;:::o;14770:167::-;14848:4;14865:42;14875:12;:10;:12::i;:::-;14889:9;14900:6;14865:9;:42::i;:::-;;14925:4;14918:11;;14770:167;;;;:::o;25458:420::-;11128:12;:10;:12::i;:::-;11118:22;;:6;;;;;;;;;;:22;;;11110:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;25572:1:::1;25557:12;;:16;;;;:::i;:::-;25536:12;:37;;;;25626:1;25605:18;;:22;;;;:::i;:::-;25584:18;:43;;;;25680:1;25659:18;;:22;;;;:::i;:::-;25638:18;:43;;;;25749:18;;25728;;25713:12;;:33;;;;:::i;:::-;:54;;;;:::i;:::-;25692:18;:75;;;;25783:87;25797:12;;25811:18;;25831;;25851;;25783:87;;;;;;;;;:::i;:::-;;;;;;;;25458:420::o:0;17693:131::-;11128:12;:10;:12::i;:::-;11118:22;;:6;;;;;;;;;;:22;;;11110:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;17771:7:::1;17758:10;;:20;;;;;;;;;;;;;;;;;;17794:22;17808:7;17794:22;;;;;;:::i;:::-;;;;;;;;17693:131:::0;:::o;7990:40::-;;;;:::o;19819:171::-;11128:12;:10;:12::i;:::-;11118:22;;:6;;;;;;;;;;:22;;;11110:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;19920:8:::1;19896:21;;:32;;;;;;;;;;;;;;;;;;19944:38;19973:8;19944:38;;;;;;:::i;:::-;;;;;;;;19819:171:::0;:::o;17832:352::-;11128:12;:10;:12::i;:::-;11118:22;;:6;;;;;;;;;;:22;;;11110:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;17950:3:::1;17935:12;:18;;;;17985:9;17964:18;:30;;;;18026:9;18005:18;:30;;;;18103:18;;18082;;18067:12;;:33;;;;:::i;:::-;:54;;;;:::i;:::-;18046:18;:75;;;;18137:39;18150:3;18155:9;18166;18137:39;;;;;;;;:::i;:::-;;;;;;;;17832:352:::0;;;:::o;19548:263::-;11128:12;:10;:12::i;:::-;11118:22;;:6;;;;;;;;;;:22;;;11110:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;19686:15:::1;19659:16;;:43;;;;;;;;;;;;;;;;;;19735:10;19713:11;;:33;;;;;;;;;;;;;;;;;;19791:11;;;;;;;;;;;19762:41;;19773:16;;;;;;;;;;;19762:41;;;;;;;;;;;;19548:263:::0;;:::o;7927:40::-;;;;:::o;14504:133::-;14588:7;14606:11;:19;14618:6;14606:19;;;;;;;;;;;;;;;:28;14626:7;14606:28;;;;;;;;;;;;;;;;14599:35;;14504:133;;;;:::o;7703:39::-;;;;:::o;16329:570::-;11128:12;:10;:12::i;:::-;11118:22;;:6;;;;;;;;;;:22;;;11110:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;16400:29:::1;16451:9;16400:61;;16472:16;16509:10;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16491:47;;;16547:4;16554:10;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16491:81;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16472:100;;16607:1;16587:22;;:8;:22;;;16583:207;;;16653:10;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16635:50;;;16694:4;16701:10;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16635:84;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16626:6;;:93;;;;;;;;;;;;;;;;;;16583:207;;;16770:8;16761:6;;:17;;;;;;;;;;;;;;;;;;16583:207;16846:10;16805:53;;16826:9;;;;;;;;;;;16805:53;;;;;;;;;;;;16881:10;16869:9;;:22;;;;;;;;;;;;;;;;;;16389:510;;16329:570:::0;:::o;19193:347::-;11128:12;:10;:12::i;:::-;11118:22;;:6;;;;;;;;;;:22;;;11110:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;19393:16:::1;19373;19363:7;;:26;;;;:::i;:::-;19362:47;;;;:::i;:::-;19346:13;:63;;;;19461:13;19444;19434:7;;:23;;;;:::i;:::-;19433:41;;;;:::i;:::-;19420:10;:54;;;;19490:42;19506:13;;19521:10;;19490:42;;;;;;;:::i;:::-;;;;;;;;19193:347:::0;;;;:::o;1366:107::-;1411:15;1454:10;1439:26;;1366:107;:::o;15114:309::-;15226:1;15208:20;;:6;:20;;;;15200:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;15290:1;15271:21;;:7;:21;;;;15263:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;15360:6;15329:11;:19;15341:6;15329:19;;;;;;;;;;;;;;;:28;15349:7;15329:28;;;;;;;;;;;;;;;:37;;;;15399:7;15382:33;;15391:6;15382:33;;;15408:6;15382:33;;;;;;:::i;:::-;;;;;;;;15114:309;;;:::o;20509:1803::-;20588:4;20629:1;20613:18;;:4;:18;;;;20605:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;20689:1;20675:16;;:2;:16;;;;20667:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;20744:1;20735:6;:10;20727:31;;;;;;;;;;;;:::i;:::-;;;;;;;;;20778:14;:20;20793:4;20778:20;;;;;;;;;;;;;;;;;;;;;;;;;20777:21;:44;;;;;20803:14;:18;20818:2;20803:18;;;;;;;;;;;;;;;;;;;;;;;;;20802:19;20777:44;20769:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;20863:10;;;;;;;;;;;20858:76;;20890:32;;;;;;;;;;:::i;:::-;;;;;;;;20858:76;20966:1;20950:12;;:17;20946:78;;;20984:28;21003:4;21009:2;20984:18;:28::i;:::-;20946:78;21047:20;21058:4;21064:2;21047:10;:20::i;:::-;21044:346;;;21087:7;:13;21095:4;21087:13;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;;21104:7;:11;21112:2;21104:11;;;;;;;;;;;;;;;;;;;;;;;;;21087:28;21084:126;;;21153:12;;21143:6;:22;;21135:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;21084:126;21233:14;;;;;;;;;;;21227:20;;:2;:20;;;;:36;;;;;21252:7;:11;21260:2;21252:11;;;;;;;;;;;;;;;;;;;;;;;;;21251:12;21227:36;21224:155;;;21318:14;;21308:6;21292:13;21302:2;21292:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;21284:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;21224:155;21044:346;21402:12;21417:4;21402:19;;21435;:25;21455:4;21435:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;21464:19;:23;21484:2;21464:23;;;;;;;;;;;;;;;;;;;;;;;;;21435:52;21432:98;;;21513:5;21503:15;;21432:98;21552:6;;;;;;;;;;;21546:12;;:2;:12;;;21542:474;;;21580:16;;;;;;;;;;;21579:17;:42;;;;;21600:21;;;;;;;;;;;21579:42;21575:424;;;21642:28;21673:24;21691:4;21673:9;:24::i;:::-;21642:55;;21744:13;;21720:20;:37;21716:268;;21809:10;;21785:20;:34;21782:124;;21872:10;;21849:33;;21782:124;21928:36;21943:20;21928:14;:36::i;:::-;21716:268;21623:376;21575:424;21542:474;22040:6;;;;;;;;;;;22032:14;;:4;:14;;;22028:213;;;22083:12;22067;;:28;:52;;;;;22099:20;22110:4;22116:2;22099:10;:20::i;:::-;22067:52;22063:167;;;22161:4;22140:14;:18;22155:2;22140:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;22184:30;;;;;;;;;;:::i;:::-;;;;;;;;22063:167;22028:213;22260:44;22278:4;22284:2;22288:6;22296:7;22260:17;:44::i;:::-;22253:51;;;20509:1803;;;;;:::o;24172:437::-;24250:25;;;;;;;;;;;24245:357;;24297:20;24308:4;24314:2;24297:10;:20::i;:::-;24296:21;:37;;;;;24327:6;;;;;;;;;;;24321:12;;:2;:12;;;24296:37;24292:106;;;24369:12;24354;:27;;;;24292:106;24440:4;24414:17;:23;24432:4;24414:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;24487:4;24459:25;;:32;;;;;;;;;;;;;;;;;;24532:4;24508:21;;:28;;;;;;;;;;;;;;;;;;24556:34;24585:4;24556:34;;;;;;:::i;:::-;;;;;;;;24245:357;24172:437;;:::o;20178:323::-;20246:4;20278:7;:5;:7::i;:::-;20270:15;;:4;:15;;;;:45;;;;;20308:7;:5;:7::i;:::-;20302:13;;:2;:13;;;;20270:45;:84;;;;;20333:17;:21;20351:2;20333:21;;;;;;;;;;;;;;;;;;;;;;;;;20332:22;20270:84;:125;;;;;20372:17;:23;20390:4;20372:23;;;;;;;;;;;;;;;;;;;;;;;;;20371:24;20270:125;:152;;;;;8560:42;20412:10;;:2;:10;;;;20270:152;:185;;;;;20453:1;20439:16;;:2;:16;;;;20270:185;:223;;;;;20488:4;20472:21;;:4;:21;;;;20270:223;20263:230;;20178:323;;;;:::o;22320:1079::-;11011:4;10992:16;;:23;;;;;;;;;;;;;;;;;;22470:1:::1;22453:13;;22431:19;;22409;;:41;;;;:::i;:::-;:57;;;;:::i;:::-;:62;22405:79;;;22475:7;;22405:79;22559:19;;22542:13;;22520:19;;22498;;:41;;;;:::i;:::-;:57;;;;:::i;:::-;:80;22494:97;;22582:7;;22494:97;22603:21;22698:1;22675:19;;22652;;22629:20;:42;;;;:::i;:::-;22628:66;;;;:::i;:::-;22627:72;;;;:::i;:::-;22603:96;;22712:20;22758:13;22735:20;:36;;;;:::i;:::-;22712:59;;22782:30;22799:12;22782:16;:30::i;:::-;22825:22;22850:21;22825:46;;22882:24;22974:1;22951:19;;22928;;22911:14;:36;;;;:::i;:::-;22910:60;;;;:::i;:::-;22909:66;;;;:::i;:::-;22882:93;;23008:1;22992:13;:17;22988:177;;;23026:45;23039:13;23054:16;23026:12;:45::i;:::-;23091:62;23106:13;23121:16;23139:13;23091:62;;;;;;;;:::i;:::-;;;;;;;;22988:177;23215:1;23196:16;23179:14;:33;;;;:::i;:::-;:37;23175:217;;;23233:16;;;;;;;;;;;:25;;:89;23301:19;;23278;;23261:14;:36;;;;:::i;:::-;23260:60;;;;:::i;:::-;23233:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;23337:11;;;;;;;;;;;:20;;:43;23358:21;23337:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;23175:217;22394:1005;;;;11026:1;11057:5:::0;11038:16;;:24;;;;;;;;;;;;;;;;;;22320:1079;:::o;24617:346::-;24717:4;24751:6;24734:7;:13;24742:4;24734:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;24768:22;24794:7;24793:48;;24835:6;24793:48;;;24805:27;24815:4;24821:2;24825:6;24805:9;:27::i;:::-;24793:48;24768:73;;24867:14;24852:7;:11;24860:2;24852:11;;;;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;24914:2;24899:34;;24908:4;24899:34;;;24918:14;24899:34;;;;;;:::i;:::-;;;;;;;;24951:4;24944:11;;;24617:346;;;;;;:::o;23407:417::-;23474:21;23512:1;23498:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23474:40;;23543:4;23525;23530:1;23525:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;23569:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23559:4;23564:1;23559:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;23598:9;;;;;;;;;;;:60;;;23673:11;23699:1;23743:4;23770;23790:15;23598:218;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23463:361;23407:417;:::o;23832:332::-;23913:9;;;;;;;;;;;:25;;;23946:9;23979:4;23999:11;24025:1;24068;8560:42;24130:15;23913:243;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;23832:332;;:::o;24971:479::-;25050:7;25070:17;25110:6;;;;;;;;;;;25102:14;;:4;:14;;;25098:96;;;25177:5;25155:18;;25146:6;:27;;;;:::i;:::-;25145:37;;;;:::i;:::-;25133:49;;25098:96;25216:6;;;;;;;;;;;25210:12;;:2;:12;;;25206:95;;;25284:5;25261:19;;25252:6;:28;;;;:::i;:::-;25251:38;;;;:::i;:::-;25239:50;;25206:95;25339:9;25313:7;:22;25329:4;25313:22;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;25387:4;25364:40;;25373:4;25364:40;;;25394:9;25364:40;;;;;;:::i;:::-;;;;;;;;25433:9;25424:6;:18;;;;:::i;:::-;25417:25;;;24971:479;;;;;:::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:329::-;954:6;1003:2;991:9;982:7;978:23;974:32;971:119;;;1009:79;;:::i;:::-;971:119;1129:1;1154:53;1199:7;1190:6;1179:9;1175:22;1154:53;:::i;:::-;1144:63;;1100:117;895:329;;;;:::o;1230:351::-;1300:6;1349:2;1337:9;1328:7;1324:23;1320:32;1317:119;;;1355:79;;:::i;:::-;1317:119;1475:1;1500:64;1556:7;1547:6;1536:9;1532:22;1500:64;:::i;:::-;1490:74;;1446:128;1230:351;;;;:::o;1587:506::-;1671:6;1679;1728:2;1716:9;1707:7;1703:23;1699:32;1696:119;;;1734:79;;:::i;:::-;1696:119;1854:1;1879:61;1932:7;1923:6;1912:9;1908:22;1879:61;:::i;:::-;1869:71;;1825:125;1989:2;2015:61;2068:7;2059:6;2048:9;2044:22;2015:61;:::i;:::-;2005:71;;1960:126;1587:506;;;;;:::o;2099:474::-;2167:6;2175;2224:2;2212:9;2203:7;2199:23;2195:32;2192:119;;;2230:79;;:::i;:::-;2192:119;2350:1;2375:53;2420:7;2411:6;2400:9;2396:22;2375:53;:::i;:::-;2365:63;;2321:117;2477:2;2503:53;2548:7;2539:6;2528:9;2524:22;2503:53;:::i;:::-;2493:63;;2448:118;2099:474;;;;;:::o;2579:619::-;2656:6;2664;2672;2721:2;2709:9;2700:7;2696:23;2692:32;2689:119;;;2727:79;;:::i;:::-;2689:119;2847:1;2872:53;2917:7;2908:6;2897:9;2893:22;2872:53;:::i;:::-;2862:63;;2818:117;2974:2;3000:53;3045:7;3036:6;3025:9;3021:22;3000:53;:::i;:::-;2990:63;;2945:118;3102:2;3128:53;3173:7;3164:6;3153:9;3149:22;3128:53;:::i;:::-;3118:63;;3073:118;2579:619;;;;;:::o;3204:468::-;3269:6;3277;3326:2;3314:9;3305:7;3301:23;3297:32;3294:119;;;3332:79;;:::i;:::-;3294:119;3452:1;3477:53;3522:7;3513:6;3502:9;3498:22;3477:53;:::i;:::-;3467:63;;3423:117;3579:2;3605:50;3647:7;3638:6;3627:9;3623:22;3605:50;:::i;:::-;3595:60;;3550:115;3204:468;;;;;:::o;3678:474::-;3746:6;3754;3803:2;3791:9;3782:7;3778:23;3774:32;3771:119;;;3809:79;;:::i;:::-;3771:119;3929:1;3954:53;3999:7;3990:6;3979:9;3975:22;3954:53;:::i;:::-;3944:63;;3900:117;4056:2;4082:53;4127:7;4118:6;4107:9;4103:22;4082:53;:::i;:::-;4072:63;;4027:118;3678:474;;;;;:::o;4158:323::-;4214:6;4263:2;4251:9;4242:7;4238:23;4234:32;4231:119;;;4269:79;;:::i;:::-;4231:119;4389:1;4414:50;4456:7;4447:6;4436:9;4432:22;4414:50;:::i;:::-;4404:60;;4360:114;4158:323;;;;:::o;4487:474::-;4555:6;4563;4612:2;4600:9;4591:7;4587:23;4583:32;4580:119;;;4618:79;;:::i;:::-;4580:119;4738:1;4763:53;4808:7;4799:6;4788:9;4784:22;4763:53;:::i;:::-;4753:63;;4709:117;4865:2;4891:53;4936:7;4927:6;4916:9;4912:22;4891:53;:::i;:::-;4881:63;;4836:118;4487:474;;;;;:::o;4967:619::-;5044:6;5052;5060;5109:2;5097:9;5088:7;5084:23;5080:32;5077:119;;;5115:79;;:::i;:::-;5077:119;5235:1;5260:53;5305:7;5296:6;5285:9;5281:22;5260:53;:::i;:::-;5250:63;;5206:117;5362:2;5388:53;5433:7;5424:6;5413:9;5409:22;5388:53;:::i;:::-;5378:63;;5333:118;5490:2;5516:53;5561:7;5552:6;5541:9;5537:22;5516:53;:::i;:::-;5506:63;;5461:118;4967:619;;;;;:::o;5592:663::-;5680:6;5688;5696;5745:2;5733:9;5724:7;5720:23;5716:32;5713:119;;;5751:79;;:::i;:::-;5713:119;5871:1;5896:64;5952:7;5943:6;5932:9;5928:22;5896:64;:::i;:::-;5886:74;;5842:128;6009:2;6035:64;6091:7;6082:6;6071:9;6067:22;6035:64;:::i;:::-;6025:74;;5980:129;6148:2;6174:64;6230:7;6221:6;6210:9;6206:22;6174:64;:::i;:::-;6164:74;;6119:129;5592:663;;;;;:::o;6261:765::-;6347:6;6355;6363;6371;6420:3;6408:9;6399:7;6395:23;6391:33;6388:120;;;6427:79;;:::i;:::-;6388:120;6547:1;6572:53;6617:7;6608:6;6597:9;6593:22;6572:53;:::i;:::-;6562:63;;6518:117;6674:2;6700:53;6745:7;6736:6;6725:9;6721:22;6700:53;:::i;:::-;6690:63;;6645:118;6802:2;6828:53;6873:7;6864:6;6853:9;6849:22;6828:53;:::i;:::-;6818:63;;6773:118;6930:2;6956:53;7001:7;6992:6;6981:9;6977:22;6956:53;:::i;:::-;6946:63;;6901:118;6261:765;;;;;;;:::o;7032:179::-;7101:10;7122:46;7164:3;7156:6;7122:46;:::i;:::-;7200:4;7195:3;7191:14;7177:28;;7032:179;;;;:::o;7217:108::-;7294:24;7312:5;7294:24;:::i;:::-;7289:3;7282:37;7217:108;;:::o;7331:118::-;7418:24;7436:5;7418:24;:::i;:::-;7413:3;7406:37;7331:118;;:::o;7485:732::-;7604:3;7633:54;7681:5;7633:54;:::i;:::-;7703:86;7782:6;7777:3;7703:86;:::i;:::-;7696:93;;7813:56;7863:5;7813:56;:::i;:::-;7892:7;7923:1;7908:284;7933:6;7930:1;7927:13;7908:284;;;8009:6;8003:13;8036:63;8095:3;8080:13;8036:63;:::i;:::-;8029:70;;8122:60;8175:6;8122:60;:::i;:::-;8112:70;;7968:224;7955:1;7952;7948:9;7943:14;;7908:284;;;7912:14;8208:3;8201:10;;7609:608;;;7485:732;;;;:::o;8223:109::-;8304:21;8319:5;8304:21;:::i;:::-;8299:3;8292:34;8223:109;;:::o;8338:183::-;8451:63;8508:5;8451:63;:::i;:::-;8446:3;8439:76;8338:183;;:::o;8527:147::-;8622:45;8661:5;8622:45;:::i;:::-;8617:3;8610:58;8527:147;;:::o;8680:364::-;8768:3;8796:39;8829:5;8796:39;:::i;:::-;8851:71;8915:6;8910:3;8851:71;:::i;:::-;8844:78;;8931:52;8976:6;8971:3;8964:4;8957:5;8953:16;8931:52;:::i;:::-;9008:29;9030:6;9008:29;:::i;:::-;9003:3;8999:39;8992:46;;8772:272;8680:364;;;;:::o;9050:366::-;9192:3;9213:67;9277:2;9272:3;9213:67;:::i;:::-;9206:74;;9289:93;9378:3;9289:93;:::i;:::-;9407:2;9402:3;9398:12;9391:19;;9050:366;;;:::o;9422:::-;9564:3;9585:67;9649:2;9644:3;9585:67;:::i;:::-;9578:74;;9661:93;9750:3;9661:93;:::i;:::-;9779:2;9774:3;9770:12;9763:19;;9422:366;;;:::o;9794:::-;9936:3;9957:67;10021:2;10016:3;9957:67;:::i;:::-;9950:74;;10033:93;10122:3;10033:93;:::i;:::-;10151:2;10146:3;10142:12;10135:19;;9794:366;;;:::o;10166:::-;10308:3;10329:67;10393:2;10388:3;10329:67;:::i;:::-;10322:74;;10405:93;10494:3;10405:93;:::i;:::-;10523:2;10518:3;10514:12;10507:19;;10166:366;;;:::o;10538:::-;10680:3;10701:67;10765:2;10760:3;10701:67;:::i;:::-;10694:74;;10777:93;10866:3;10777:93;:::i;:::-;10895:2;10890:3;10886:12;10879:19;;10538:366;;;:::o;10910:::-;11052:3;11073:67;11137:2;11132:3;11073:67;:::i;:::-;11066:74;;11149:93;11238:3;11149:93;:::i;:::-;11267:2;11262:3;11258:12;11251:19;;10910:366;;;:::o;11282:::-;11424:3;11445:67;11509:2;11504:3;11445:67;:::i;:::-;11438:74;;11521:93;11610:3;11521:93;:::i;:::-;11639:2;11634:3;11630:12;11623:19;;11282:366;;;:::o;11654:365::-;11796:3;11817:66;11881:1;11876:3;11817:66;:::i;:::-;11810:73;;11892:93;11981:3;11892:93;:::i;:::-;12010:2;12005:3;12001:12;11994:19;;11654:365;;;:::o;12025:366::-;12167:3;12188:67;12252:2;12247:3;12188:67;:::i;:::-;12181:74;;12264:93;12353:3;12264:93;:::i;:::-;12382:2;12377:3;12373:12;12366:19;;12025:366;;;:::o;12397:::-;12539:3;12560:67;12624:2;12619:3;12560:67;:::i;:::-;12553:74;;12636:93;12725:3;12636:93;:::i;:::-;12754:2;12749:3;12745:12;12738:19;;12397:366;;;:::o;12769:::-;12911:3;12932:67;12996:2;12991:3;12932:67;:::i;:::-;12925:74;;13008:93;13097:3;13008:93;:::i;:::-;13126:2;13121:3;13117:12;13110:19;;12769:366;;;:::o;13141:::-;13283:3;13304:67;13368:2;13363:3;13304:67;:::i;:::-;13297:74;;13380:93;13469:3;13380:93;:::i;:::-;13498:2;13493:3;13489:12;13482:19;;13141:366;;;:::o;13513:118::-;13600:24;13618:5;13600:24;:::i;:::-;13595:3;13588:37;13513:118;;:::o;13637:112::-;13720:22;13736:5;13720:22;:::i;:::-;13715:3;13708:35;13637:112;;:::o;13755:222::-;13848:4;13886:2;13875:9;13871:18;13863:26;;13899:71;13967:1;13956:9;13952:17;13943:6;13899:71;:::i;:::-;13755:222;;;;:::o;13983:332::-;14104:4;14142:2;14131:9;14127:18;14119:26;;14155:71;14223:1;14212:9;14208:17;14199:6;14155:71;:::i;:::-;14236:72;14304:2;14293:9;14289:18;14280:6;14236:72;:::i;:::-;13983:332;;;;;:::o;14321:320::-;14436:4;14474:2;14463:9;14459:18;14451:26;;14487:71;14555:1;14544:9;14540:17;14531:6;14487:71;:::i;:::-;14568:66;14630:2;14619:9;14615:18;14606:6;14568:66;:::i;:::-;14321:320;;;;;:::o;14647:807::-;14896:4;14934:3;14923:9;14919:19;14911:27;;14948:71;15016:1;15005:9;15001:17;14992:6;14948:71;:::i;:::-;15029:72;15097:2;15086:9;15082:18;15073:6;15029:72;:::i;:::-;15111:80;15187:2;15176:9;15172:18;15163:6;15111:80;:::i;:::-;15201;15277:2;15266:9;15262:18;15253:6;15201:80;:::i;:::-;15291:73;15359:3;15348:9;15344:19;15335:6;15291:73;:::i;:::-;15374;15442:3;15431:9;15427:19;15418:6;15374:73;:::i;:::-;14647:807;;;;;;;;;:::o;15460:210::-;15547:4;15585:2;15574:9;15570:18;15562:26;;15598:65;15660:1;15649:9;15645:17;15636:6;15598:65;:::i;:::-;15460:210;;;;:::o;15676:274::-;15795:4;15833:2;15822:9;15818:18;15810:26;;15846:97;15940:1;15929:9;15925:17;15916:6;15846:97;:::i;:::-;15676:274;;;;:::o;15956:313::-;16069:4;16107:2;16096:9;16092:18;16084:26;;16156:9;16150:4;16146:20;16142:1;16131:9;16127:17;16120:47;16184:78;16257:4;16248:6;16184:78;:::i;:::-;16176:86;;15956:313;;;;:::o;16275:419::-;16441:4;16479:2;16468:9;16464:18;16456:26;;16528:9;16522:4;16518:20;16514:1;16503:9;16499:17;16492:47;16556:131;16682:4;16556:131;:::i;:::-;16548:139;;16275:419;;;:::o;16700:::-;16866:4;16904:2;16893:9;16889:18;16881:26;;16953:9;16947:4;16943:20;16939:1;16928:9;16924:17;16917:47;16981:131;17107:4;16981:131;:::i;:::-;16973:139;;16700:419;;;:::o;17125:::-;17291:4;17329:2;17318:9;17314:18;17306:26;;17378:9;17372:4;17368:20;17364:1;17353:9;17349:17;17342:47;17406:131;17532:4;17406:131;:::i;:::-;17398:139;;17125:419;;;:::o;17550:::-;17716:4;17754:2;17743:9;17739:18;17731:26;;17803:9;17797:4;17793:20;17789:1;17778:9;17774:17;17767:47;17831:131;17957:4;17831:131;:::i;:::-;17823:139;;17550:419;;;:::o;17975:::-;18141:4;18179:2;18168:9;18164:18;18156:26;;18228:9;18222:4;18218:20;18214:1;18203:9;18199:17;18192:47;18256:131;18382:4;18256:131;:::i;:::-;18248:139;;17975:419;;;:::o;18400:::-;18566:4;18604:2;18593:9;18589:18;18581:26;;18653:9;18647:4;18643:20;18639:1;18628:9;18624:17;18617:47;18681:131;18807:4;18681:131;:::i;:::-;18673:139;;18400:419;;;:::o;18825:::-;18991:4;19029:2;19018:9;19014:18;19006:26;;19078:9;19072:4;19068:20;19064:1;19053:9;19049:17;19042:47;19106:131;19232:4;19106:131;:::i;:::-;19098:139;;18825:419;;;:::o;19250:::-;19416:4;19454:2;19443:9;19439:18;19431:26;;19503:9;19497:4;19493:20;19489:1;19478:9;19474:17;19467:47;19531:131;19657:4;19531:131;:::i;:::-;19523:139;;19250:419;;;:::o;19675:::-;19841:4;19879:2;19868:9;19864:18;19856:26;;19928:9;19922:4;19918:20;19914:1;19903:9;19899:17;19892:47;19956:131;20082:4;19956:131;:::i;:::-;19948:139;;19675:419;;;:::o;20100:::-;20266:4;20304:2;20293:9;20289:18;20281:26;;20353:9;20347:4;20343:20;20339:1;20328:9;20324:17;20317:47;20381:131;20507:4;20381:131;:::i;:::-;20373:139;;20100:419;;;:::o;20525:::-;20691:4;20729:2;20718:9;20714:18;20706:26;;20778:9;20772:4;20768:20;20764:1;20753:9;20749:17;20742:47;20806:131;20932:4;20806:131;:::i;:::-;20798:139;;20525:419;;;:::o;20950:::-;21116:4;21154:2;21143:9;21139:18;21131:26;;21203:9;21197:4;21193:20;21189:1;21178:9;21174:17;21167:47;21231:131;21357:4;21231:131;:::i;:::-;21223:139;;20950:419;;;:::o;21375:222::-;21468:4;21506:2;21495:9;21491:18;21483:26;;21519:71;21587:1;21576:9;21572:17;21563:6;21519:71;:::i;:::-;21375:222;;;;:::o;21603:831::-;21866:4;21904:3;21893:9;21889:19;21881:27;;21918:71;21986:1;21975:9;21971:17;21962:6;21918:71;:::i;:::-;21999:80;22075:2;22064:9;22060:18;22051:6;21999:80;:::i;:::-;22126:9;22120:4;22116:20;22111:2;22100:9;22096:18;22089:48;22154:108;22257:4;22248:6;22154:108;:::i;:::-;22146:116;;22272:72;22340:2;22329:9;22325:18;22316:6;22272:72;:::i;:::-;22354:73;22422:3;22411:9;22407:19;22398:6;22354:73;:::i;:::-;21603:831;;;;;;;;:::o;22440:332::-;22561:4;22599:2;22588:9;22584:18;22576:26;;22612:71;22680:1;22669:9;22665:17;22656:6;22612:71;:::i;:::-;22693:72;22761:2;22750:9;22746:18;22737:6;22693:72;:::i;:::-;22440:332;;;;;:::o;22778:442::-;22927:4;22965:2;22954:9;22950:18;22942:26;;22978:71;23046:1;23035:9;23031:17;23022:6;22978:71;:::i;:::-;23059:72;23127:2;23116:9;23112:18;23103:6;23059:72;:::i;:::-;23141;23209:2;23198:9;23194:18;23185:6;23141:72;:::i;:::-;22778:442;;;;;;:::o;23226:553::-;23403:4;23441:3;23430:9;23426:19;23418:27;;23455:71;23523:1;23512:9;23508:17;23499:6;23455:71;:::i;:::-;23536:72;23604:2;23593:9;23589:18;23580:6;23536:72;:::i;:::-;23618;23686:2;23675:9;23671:18;23662:6;23618:72;:::i;:::-;23700;23768:2;23757:9;23753:18;23744:6;23700:72;:::i;:::-;23226:553;;;;;;;:::o;23785:775::-;24018:4;24056:3;24045:9;24041:19;24033:27;;24070:71;24138:1;24127:9;24123:17;24114:6;24070:71;:::i;:::-;24151:72;24219:2;24208:9;24204:18;24195:6;24151:72;:::i;:::-;24233;24301:2;24290:9;24286:18;24277:6;24233:72;:::i;:::-;24315;24383:2;24372:9;24368:18;24359:6;24315:72;:::i;:::-;24397:73;24465:3;24454:9;24450:19;24441:6;24397:73;:::i;:::-;24480;24548:3;24537:9;24533:19;24524:6;24480:73;:::i;:::-;23785:775;;;;;;;;;:::o;24566:214::-;24655:4;24693:2;24682:9;24678:18;24670:26;;24706:67;24770:1;24759:9;24755:17;24746:6;24706:67;:::i;:::-;24566:214;;;;:::o;24867:132::-;24934:4;24957:3;24949:11;;24987:4;24982:3;24978:14;24970:22;;24867:132;;;:::o;25005:114::-;25072:6;25106:5;25100:12;25090:22;;25005:114;;;:::o;25125:99::-;25177:6;25211:5;25205:12;25195:22;;25125:99;;;:::o;25230:113::-;25300:4;25332;25327:3;25323:14;25315:22;;25230:113;;;:::o;25349:184::-;25448:11;25482:6;25477:3;25470:19;25522:4;25517:3;25513:14;25498:29;;25349:184;;;;:::o;25539:169::-;25623:11;25657:6;25652:3;25645:19;25697:4;25692:3;25688:14;25673:29;;25539:169;;;;:::o;25714:305::-;25754:3;25773:20;25791:1;25773:20;:::i;:::-;25768:25;;25807:20;25825:1;25807:20;:::i;:::-;25802:25;;25961:1;25893:66;25889:74;25886:1;25883:81;25880:107;;;25967:18;;:::i;:::-;25880:107;26011:1;26008;26004:9;25997:16;;25714:305;;;;:::o;26025:185::-;26065:1;26082:20;26100:1;26082:20;:::i;:::-;26077:25;;26116:20;26134:1;26116:20;:::i;:::-;26111:25;;26155:1;26145:35;;26160:18;;:::i;:::-;26145:35;26202:1;26199;26195:9;26190:14;;26025:185;;;;:::o;26216:348::-;26256:7;26279:20;26297:1;26279:20;:::i;:::-;26274:25;;26313:20;26331:1;26313:20;:::i;:::-;26308:25;;26501:1;26433:66;26429:74;26426:1;26423:81;26418:1;26411:9;26404:17;26400:105;26397:131;;;26508:18;;:::i;:::-;26397:131;26556:1;26553;26549:9;26538:20;;26216:348;;;;:::o;26570:191::-;26610:4;26630:20;26648:1;26630:20;:::i;:::-;26625:25;;26664:20;26682:1;26664:20;:::i;:::-;26659:25;;26703:1;26700;26697:8;26694:34;;;26708:18;;:::i;:::-;26694:34;26753:1;26750;26746:9;26738:17;;26570:191;;;;:::o;26767:96::-;26804:7;26833:24;26851:5;26833:24;:::i;:::-;26822:35;;26767:96;;;:::o;26869:104::-;26914:7;26943:24;26961:5;26943:24;:::i;:::-;26932:35;;26869:104;;;:::o;26979:90::-;27013:7;27056:5;27049:13;27042:21;27031:32;;26979:90;;;:::o;27075:126::-;27112:7;27152:42;27145:5;27141:54;27130:65;;27075:126;;;:::o;27207:77::-;27244:7;27273:5;27262:16;;27207:77;;;:::o;27290:86::-;27325:7;27365:4;27358:5;27354:16;27343:27;;27290:86;;;:::o;27382:152::-;27458:9;27491:37;27522:5;27491:37;:::i;:::-;27478:50;;27382:152;;;:::o;27540:121::-;27598:9;27631:24;27649:5;27631:24;:::i;:::-;27618:37;;27540:121;;;:::o;27667:126::-;27717:9;27750:37;27781:5;27750:37;:::i;:::-;27737:50;;27667:126;;;:::o;27799:113::-;27849:9;27882:24;27900:5;27882:24;:::i;:::-;27869:37;;27799:113;;;:::o;27918:307::-;27986:1;27996:113;28010:6;28007:1;28004:13;27996:113;;;28095:1;28090:3;28086:11;28080:18;28076:1;28071:3;28067:11;28060:39;28032:2;28029:1;28025:10;28020:15;;27996:113;;;28127:6;28124:1;28121:13;28118:101;;;28207:1;28198:6;28193:3;28189:16;28182:27;28118:101;27967:258;27918:307;;;:::o;28231:320::-;28275:6;28312:1;28306:4;28302:12;28292:22;;28359:1;28353:4;28349:12;28380:18;28370:81;;28436:4;28428:6;28424:17;28414:27;;28370:81;28498:2;28490:6;28487:14;28467:18;28464:38;28461:84;;;28517:18;;:::i;:::-;28461:84;28282:269;28231:320;;;:::o;28557:180::-;28605:77;28602:1;28595:88;28702:4;28699:1;28692:15;28726:4;28723:1;28716:15;28743:180;28791:77;28788:1;28781:88;28888:4;28885:1;28878:15;28912:4;28909:1;28902:15;28929:180;28977:77;28974:1;28967:88;29074:4;29071:1;29064:15;29098:4;29095:1;29088:15;29115:180;29163:77;29160:1;29153:88;29260:4;29257:1;29250:15;29284:4;29281:1;29274:15;29301:180;29349:77;29346:1;29339:88;29446:4;29443:1;29436:15;29470:4;29467:1;29460:15;29610:117;29719:1;29716;29709:12;29733:102;29774:6;29825:2;29821:7;29816:2;29809:5;29805:14;29801:28;29791:38;;29733:102;;;:::o;29841:170::-;29981:22;29977:1;29969:6;29965:14;29958:46;29841:170;:::o;30017:167::-;30157:19;30153:1;30145:6;30141:14;30134:43;30017:167;:::o;30190:222::-;30330:34;30326:1;30318:6;30314:14;30307:58;30399:5;30394:2;30386:6;30382:15;30375:30;30190:222;:::o;30418:172::-;30558:24;30554:1;30546:6;30542:14;30535:48;30418:172;:::o;30596:169::-;30736:21;30732:1;30724:6;30720:14;30713:45;30596:169;:::o;30771:170::-;30911:22;30907:1;30899:6;30895:14;30888:46;30771:170;:::o;30947:168::-;31087:20;31083:1;31075:6;31071:14;31064:44;30947:168;:::o;31121:158::-;31261:10;31257:1;31249:6;31245:14;31238:34;31121:158;:::o;31285:169::-;31425:21;31421:1;31413:6;31409:14;31402:45;31285:169;:::o;31460:176::-;31600:28;31596:1;31588:6;31584:14;31577:52;31460:176;:::o;31642:174::-;31782:26;31778:1;31770:6;31766:14;31759:50;31642:174;:::o;31822:248::-;31962:34;31958:1;31950:6;31946:14;31939:58;32031:31;32026:2;32018:6;32014:15;32007:56;31822:248;:::o;32076:122::-;32149:24;32167:5;32149:24;:::i;:::-;32142:5;32139:35;32129:63;;32188:1;32185;32178:12;32129:63;32076:122;:::o;32204:138::-;32285:32;32311:5;32285:32;:::i;:::-;32278:5;32275:43;32265:71;;32332:1;32329;32322:12;32265:71;32204:138;:::o;32348:116::-;32418:21;32433:5;32418:21;:::i;:::-;32411:5;32408:32;32398:60;;32454:1;32451;32444:12;32398:60;32348:116;:::o;32470:122::-;32543:24;32561:5;32543:24;:::i;:::-;32536:5;32533:35;32523:63;;32582:1;32579;32572:12;32523:63;32470:122;:::o
Swarm Source
ipfs://c72e57723ccafbf4ba89574c67f7596c3a80e5bf67f5a2b253f73816d34d0e90
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.