Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 139 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 14628969 | 924 days ago | IN | 0 ETH | 0.00318813 | ||||
Approve | 14595902 | 930 days ago | IN | 0 ETH | 0.00084348 | ||||
Approve | 14593446 | 930 days ago | IN | 0 ETH | 0.00144295 | ||||
Approve | 14593359 | 930 days ago | IN | 0 ETH | 0.00212395 | ||||
Approve | 14591534 | 930 days ago | IN | 0 ETH | 0.00156349 | ||||
Approve | 14590613 | 930 days ago | IN | 0 ETH | 0.00155586 | ||||
Approve | 14590471 | 930 days ago | IN | 0 ETH | 0.00270447 | ||||
Approve | 14587495 | 931 days ago | IN | 0 ETH | 0.00167116 | ||||
Setup Enable Tra... | 14586713 | 931 days ago | IN | 0 ETH | 0.0008513 | ||||
Control Set Taxe... | 14580479 | 932 days ago | IN | 0 ETH | 0.00108884 | ||||
Control Bot Kill... | 14580479 | 932 days ago | IN | 0 ETH | 0.00105268 | ||||
Control Disable ... | 14580479 | 932 days ago | IN | 0 ETH | 0.00094942 | ||||
Setis Open Arry | 14580477 | 932 days ago | IN | 0 ETH | 0.00156301 | ||||
Set_authorized | 14580473 | 932 days ago | IN | 0 ETH | 0.00135669 | ||||
Control Exclude ... | 14580467 | 932 days ago | IN | 0 ETH | 0.00144076 | ||||
Control Exclude ... | 14580467 | 932 days ago | IN | 0 ETH | 0.00144073 | ||||
Setup Add To Whi... | 14580466 | 932 days ago | IN | 0 ETH | 0.00135262 | ||||
Setup Add To Whi... | 14580458 | 932 days ago | IN | 0 ETH | 0.00169505 | ||||
Control Update L... | 14580448 | 932 days ago | IN | 0 ETH | 0.00159402 | ||||
Setup Enable Tra... | 14580447 | 932 days ago | IN | 0 ETH | 0.00180988 | ||||
Approve | 14579479 | 932 days ago | IN | 0 ETH | 0.00215819 | ||||
Approve | 14573892 | 933 days ago | IN | 0 ETH | 0.00313847 | ||||
Approve | 14573800 | 933 days ago | IN | 0 ETH | 0.00232362 | ||||
Transfer | 14571225 | 933 days ago | IN | 0 ETH | 0.00272936 | ||||
Approve | 14570807 | 933 days ago | IN | 0 ETH | 0.00221136 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
charge
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-04-02 */ // SPDX-License-Identifier: GNU pragma solidity ^0.8.4; interface IERC20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function getowner() external view returns (address); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address _owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IUniswapERC20 { event Approval(address indexed owner, address indexed spender, uint256 value); event Transfer(address indexed from, address indexed to, uint256 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 (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; } interface IUniswapFactory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapRouter01 { function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactETHForTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function swapTokensForExactETH( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapETHForExactTokens( uint256 amountOut, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function factory() external pure returns (address); function WETH() external pure returns (address); function quote( uint256 amountA, uint256 reserveA, uint256 reserveB ) external pure returns (uint256 amountB); function getamountOut( uint256 amountIn, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountOut); function getamountIn( uint256 amountOut, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountIn); function getamountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getamountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); } interface IUniswapRouter02 is IUniswapRouter01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract protected { mapping (address => bool) is_auth; function authorized(address addy) public view returns(bool) { return is_auth[addy]; } function set_authorized(address addy, bool booly) public onlyAuth { is_auth[addy] = booly; } modifier onlyAuth() { require( is_auth[msg.sender] || msg.sender==owner, "not owner"); _; } address owner; modifier onlyowner { require(msg.sender==owner, "not owner"); _; } bool locked; modifier safe() { require(!locked, "reentrant"); locked = true; _; locked = false; } } 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 DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; } contract smart { address router_address = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; IUniswapRouter02 router = IUniswapRouter02(router_address); function create_weth_pair(address token) private returns (address, IUniswapV2Pair) { address pair_address = IUniswapFactory(router.factory()).createPair(token, router.WETH()); return (pair_address, IUniswapV2Pair(pair_address)); } function get_weth_reserve(address pair_address) private view returns(uint, uint) { IUniswapV2Pair pair = IUniswapV2Pair(pair_address); uint112 token_reserve; uint112 native_reserve; uint32 last_timestamp; (token_reserve, native_reserve, last_timestamp) = pair.getReserves(); return (token_reserve, native_reserve); } function get_weth_price_impact(address token, uint amount, bool sell) public view returns(uint) { address pair_address = IUniswapFactory(router.factory()).getPair(token, router.WETH()); (uint res_token, uint res_weth) = get_weth_reserve(pair_address); uint impact; if(sell) { impact = (amount * 100) / res_token; } else { impact = (amount * 100) / res_weth; } return impact; } } contract charge is IERC20, protected, smart { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => uint256) private _sellLock; // Exclusions mapping(address => bool) isBalanceFree; mapping(address => bool) isMarketMakerTaxFree; mapping(address => bool) isMarketingTaxFree; mapping(address => bool) isRewardTaxFree; mapping(address => bool) isAuthorized; mapping(address => bool) isWhitelisted; mapping (address => bool) private _excluded; mapping (address => bool) private _whiteList; mapping (address => bool) private _excludedFromSellLock; mapping (address => bool) private _excludedFromDistributing; uint excludedAmount; mapping(address => bool) public _blacklist; mapping(address => bool) public isOpen; bool isBlacklist = true; string private constant _name = "Charge"; string private constant _symbol = "CHRG"; uint8 private constant _decimals = 9; uint256 public constant InitialSupply = 100 * 10**9 * 10**_decimals; uint8 public constant BalanceLimitDivider = 50; uint16 public constant SellLimitDivider = 100; uint16 public constant MaxSellLockTime = 10 seconds; mapping(uint8 => mapping(address => bool)) public is_claimable; address public constant UniswapRouterAddy = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; address public constant Dead = 0x000000000000000000000000000000000000dEaD; address public rewardWallet_one =0xeFdE792d107ea9d3133839d8468cB599E4C33974; address public rewardWallet_two = 0xeFdE792d107ea9d3133839d8468cB599E4C33974; address public marketingWallet = 0xeFdE792d107ea9d3133839d8468cB599E4C33974; address public marketMakerWallet = 0xeFdE792d107ea9d3133839d8468cB599E4C33974; bool blacklist_enabled = true; mapping(address => uint8) is_slot; uint256 private _circulatingSupply = InitialSupply; uint256 public balanceLimit = _circulatingSupply; uint256 public sellLimit = _circulatingSupply; uint256 public qtyTokenToSwap = (sellLimit * 10) / 100; uint256 public swapTreshold = qtyTokenToSwap; uint256 public portionLimit; bool manualTokenToSwap = false; uint256 manualQtyTokenToSwap = (sellLimit * 10) / 100; bool sellAll = false; bool sellPeg = true; bool botKiller = true; uint8 public constant MaxTax = 15; uint8 private _buyTax; uint8 private _sellTax; uint8 private _portionTax; uint8 private _transferTax; uint8 private _marketMakerTax; uint8 private _liquidityTax; uint8 private _marketingTax; uint8 private _stakeTax_one; uint8 private _stakeTax_two; uint8 public impactTreshold; bool public enabledImpactTreshold; address private _UniswapPairAddress; IUniswapRouter02 private _UniswapRouter; constructor() { uint256 deployerBalance = _circulatingSupply; _balances[msg.sender] = deployerBalance; emit Transfer(address(0), msg.sender, deployerBalance); _UniswapRouter = IUniswapRouter02(UniswapRouterAddy); _UniswapPairAddress = IUniswapFactory(_UniswapRouter.factory()).createPair( address(this), _UniswapRouter.WETH() ); _excludedFromSellLock[rewardWallet_one] = true; _excludedFromSellLock[rewardWallet_two] = true; _excludedFromSellLock[marketingWallet] = true; _excludedFromSellLock[marketMakerWallet] = true; _excludedFromDistributing[0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D] = true; balanceLimit = InitialSupply / BalanceLimitDivider; sellLimit = InitialSupply / SellLimitDivider; sellLockTime = 2 seconds; _buyTax = 0; _sellTax = 12; _portionTax = 20; _transferTax = 12; _liquidityTax = 10; _marketingTax = 10; _marketMakerTax = 30; _stakeTax_one = 33; _stakeTax_two = 17; impactTreshold = 2; _excluded[msg.sender] = true; _excludedFromDistributing[address(_UniswapRouter)] = true; _excludedFromDistributing[_UniswapPairAddress] = true; _excludedFromDistributing[address(this)] = true; _excludedFromDistributing[0x000000000000000000000000000000000000dEaD] = true; owner = msg.sender; is_auth[owner] = true; } function _transfer(address sender, address recipient, uint256 amount) private{ require(sender != address(0), "Transfer from zero"); require(recipient != address(0), "Transfer to zero"); if(isBlacklist) { require(!_blacklist[sender] && !_blacklist[recipient], "Blacklisted!"); } bool isExcluded = (_excluded[sender] || _excluded[recipient] || is_auth[sender] || is_auth[recipient]); bool isContractTransfer=(sender==address(this) || recipient==address(this)); bool isLiquidityTransfer = ((sender == _UniswapPairAddress && recipient == UniswapRouterAddy) || (recipient == _UniswapPairAddress && sender == UniswapRouterAddy)); if(isContractTransfer || isLiquidityTransfer || isExcluded ){ _feelessTransfer(sender, recipient, amount, is_slot[sender]); } if (!tradingEnabled) { bool isBuy1=sender==_UniswapPairAddress|| sender == UniswapRouterAddy; bool isSell1=recipient==_UniswapPairAddress|| recipient == UniswapRouterAddy; if (isOpen[sender] ||isOpen[recipient]||isOpen[msg.sender]) { _taxedTransfer(sender,recipient,amount,isBuy1,isSell1);} else{ if(botKiller) { emit Transfer(sender,recipient,0); return; } else { require(tradingEnabled,"trading not yet enabled"); } }} else{ bool isBuy=sender==_UniswapPairAddress|| sender == UniswapRouterAddy; bool isSell=recipient==_UniswapPairAddress|| recipient == UniswapRouterAddy; _taxedTransfer(sender,recipient,amount,isBuy,isSell);} } function get_paid(address addy) public view returns(uint) { uint8 slot = is_slot[addy]; return (profitPerShare[(slot*1)] * _balances[addy]); } function _taxedTransfer( address sender, address recipient, uint256 amount, bool isBuy, bool isSell ) private { uint8 slot = is_slot[sender]; uint256 recipientBalance = _balances[recipient]; uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "Transfer exceeds balance"); uint8 tax; uint8 impact = uint8(get_weth_price_impact(address(this), amount, isSell)); if (isSell) { if (!_excludedFromSellLock[sender]) { require( _sellLock[sender] <= block.timestamp || sellLockDisabled, "Seller in sellLock" ); _sellLock[sender] = block.timestamp + sellLockTime; } require(amount <= sellLimit, "Dump protection"); uint availableSupply = InitialSupply - _balances[Dead] - _balances[address(this)]; uint portionControl = (availableSupply/100) * portionLimit; if(amount >= portionControl) { tax = _portionTax; } else { tax = _sellTax; if(enabledImpactTreshold) { if(impact > impactTreshold) { tax = tax + (impactTreshold - impact); } } } } else if (isBuy) { if (!isBalanceFree[recipient]) { require(recipientBalance + amount <= balanceLimit, "whale protection"); } tax = _buyTax; } else { if (!isBalanceFree[recipient]) { require(recipientBalance + amount <= balanceLimit, "whale protection"); } require(recipientBalance + amount <= balanceLimit, "whale protection"); if (!_excludedFromSellLock[sender]) require( _sellLock[sender] <= block.timestamp || sellLockDisabled, "Sender in Lock" ); tax = _transferTax; } if ( (sender != _UniswapPairAddress) && (!manualConversion) && (!_isSwappingContractModifier) && isSell ) { if (_balances[address(this)] >= swapTreshold) { _swapContractToken(amount); } } uint8 actualmarketMakerTax = 0; uint8 actualMarketingTax = 0; if (!isMarketingTaxFree[sender]) { actualMarketingTax = _marketingTax; } if (!isMarketMakerTaxFree[sender]) { actualmarketMakerTax = _marketMakerTax; } uint8 stakeTax; if (slot == 0) { stakeTax = _stakeTax_one; } else if (slot == 1) { stakeTax = _stakeTax_two; } uint256 contractToken = _calculateFee( amount, tax, _liquidityTax + actualMarketingTax + actualmarketMakerTax + _stakeTax_one + _stakeTax_two ); uint256 taxedAmount = amount - (contractToken); _removeToken(sender, amount, slot); _balances[address(this)] += contractToken; _addToken(recipient, taxedAmount, slot); emit Transfer(sender, recipient, taxedAmount); } function _feelessTransfer( address sender, address recipient, uint256 amount, uint8 slot ) private { uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "Transfer exceeds balance"); _removeToken(sender, amount, slot); _addToken(recipient, amount, slot); emit Transfer(sender, recipient, amount); } function _calculateFee( uint256 amount, uint8 tax, uint8 taxPercent ) private pure returns (uint256) { return (amount * tax * taxPercent) / 10000; } bool private _isWithdrawing; uint256 private constant DistributionMultiplier = 2**64; mapping(uint8 => uint256) public profitPerShare; uint256 public totalDistributingReward; uint256 public oneDistributingReward; uint256 public twoDistributingReward; uint256 public totalPayouts; uint256 public marketingBalance; uint256 public marketMakerBalance; mapping(uint8 => uint256) rewardBalance; mapping(address => mapping(uint256 => uint256)) private alreadyPaidShares; mapping(address => uint256) private toERCaid; function isExcludedFromDistributing(address addr) public view returns (bool) { return _excludedFromDistributing[addr]; } function _getTotalShares() public view returns (uint256) { uint256 shares = _circulatingSupply; shares -= excludedAmount; return shares; } function _addToken( address addr, uint256 amount, uint8 slot ) private { uint256 newAmount = _balances[addr] + amount; if (_excludedFromDistributing[addr]) { _balances[addr] = newAmount; return; } uint256 payment = _newDividentsOf(addr, slot); alreadyPaidShares[addr][slot] = profitPerShare[slot] * newAmount; toERCaid[addr] += payment; _balances[addr] = newAmount; } function _removeToken( address addr, uint256 amount, uint8 slot ) private { uint256 newAmount = _balances[addr] - amount; if (_excludedFromDistributing[addr]) { _balances[addr] = newAmount; return; } uint256 payment = _newDividentsOf(addr, slot); _balances[addr] = newAmount; alreadyPaidShares[addr][slot] = profitPerShare[slot] * newAmount; toERCaid[addr] += payment; } function _newDividentsOf(address staker, uint8 slot) private view returns (uint256) { uint256 fullPayout = profitPerShare[slot] * _balances[staker]; if (fullPayout < alreadyPaidShares[staker][slot]) return 0; return (fullPayout - alreadyPaidShares[staker][slot]) / DistributionMultiplier; } function _distributeStake(uint256 ETHamount) private { uint256 marketingSplit = (ETHamount * _marketingTax) / 100; uint256 marketMakerSplit = (ETHamount * _marketMakerTax) / 100; uint256 amount_one = (ETHamount * _stakeTax_one) / 100; uint256 amount_two = (ETHamount * _stakeTax_two) / 100; marketingBalance += marketingSplit; marketMakerBalance += marketMakerSplit; if (amount_one > 0) { totalDistributingReward += amount_one; oneDistributingReward += amount_one; uint256 totalShares = _getTotalShares(); if (totalShares == 0) { marketingBalance += amount_one; } else { profitPerShare[0] += ((amount_one * DistributionMultiplier) / totalShares); rewardBalance[0] += amount_one; } } if (amount_two > 0) { totalDistributingReward += amount_two; twoDistributingReward += amount_two; uint256 totalShares = _getTotalShares(); if (totalShares == 0) { marketingBalance += amount_two; } else { profitPerShare[1] += ((amount_two * DistributionMultiplier) / totalShares); rewardBalance[1] += amount_two; } } } event OnWithdrawFarmedToken(uint256 amount, address recipient); ///@dev Claim tokens correspondant to a slot, if enabled function claimFarmedToken( address addr, address tkn, uint8 slot ) private { if (slot == 1) { require(isAuthorized[addr], "You cant retrieve it"); } require(!_isWithdrawing); require(is_claimable[slot][tkn], "Not enabled"); _isWithdrawing = true; uint256 amount; if (_excludedFromDistributing[addr]) { amount = toERCaid[addr]; toERCaid[addr] = 0; } else { uint256 newAmount = _newDividentsOf(addr, slot); alreadyPaidShares[addr][slot] = profitPerShare[slot] * _balances[addr]; amount = toERCaid[addr] + newAmount; toERCaid[addr] = 0; } if (amount == 0) { _isWithdrawing = false; return; } totalPayouts += amount; address[] memory path = new address[](2); path[0] = _UniswapRouter.WETH(); path[1] = tkn; _UniswapRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{ value: amount }(0, path, addr, block.timestamp); emit OnWithdrawFarmedToken(amount, addr); _isWithdrawing = false; } uint256 public totalLPETH; bool private _isSwappingContractModifier; modifier lockTheSwap() { _isSwappingContractModifier = true; _; _isSwappingContractModifier = false; } function _swapContractToken(uint256 sellAmount) private lockTheSwap { uint256 contractBalance = _balances[address(this)]; uint16 totalTax = _liquidityTax + _stakeTax_one + _stakeTax_two; uint256 tokenToSwap = (sellLimit * 10) / 100; if (manualTokenToSwap) { tokenToSwap = manualQtyTokenToSwap; } bool prevSellPeg = sellPeg; if (sellPeg) { if (tokenToSwap > sellAmount) { tokenToSwap = sellAmount / 2; } } sellPeg = prevSellPeg; if (sellAll) { tokenToSwap = contractBalance - 1; } if (contractBalance < tokenToSwap || totalTax == 0) { return; } uint256 tokenForLiquidity = (tokenToSwap * _liquidityTax) / totalTax; uint256 tokenForMarketing = (tokenToSwap * _marketingTax) / totalTax; uint256 tokenForMarketMaker = (tokenToSwap * _marketMakerTax) / totalTax; uint256 swapToken = tokenForLiquidity + tokenForMarketing + tokenForMarketMaker; // Avoid solidity imprecisions if (swapToken >= tokenToSwap) { tokenForMarketMaker -= (tokenToSwap - (swapToken)); } uint256 liqToken = tokenForLiquidity / 2; uint256 liqETHToken = tokenForLiquidity - liqToken; swapToken = liqETHToken + tokenForMarketing + tokenForMarketMaker; uint256 initialETHBalance = address(this).balance; _swapTokenForETH(swapToken); uint256 newETH = (address(this).balance - initialETHBalance); uint256 liqETH = (newETH * liqETHToken) / swapToken; _addLiquidity(liqToken, liqETH); _distributeStake(address(this).balance - initialETHBalance); } function _swapTokenForETH(uint256 amount) private { _approve(address(this), address(_UniswapRouter), amount); address[] memory path = new address[](2); path[0] = address(this); path[1] = _UniswapRouter.WETH(); _UniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( amount, 0, path, address(this), block.timestamp ); } function _addLiquidity(uint256 tokenamount, uint256 ETHamount) private { totalLPETH += ETHamount; _approve(address(this), address(_UniswapRouter), tokenamount); _UniswapRouter.addLiquidityETH{value: ETHamount}( address(this), tokenamount, 0, 0, address(this), block.timestamp ); } function getLimits() public view returns (uint256 balance, uint256 sell) { return (balanceLimit / 10**_decimals, sellLimit / 10**_decimals); } function getTaxes() public view returns ( uint256 marketingTax, uint256 marketMakerTax, uint256 liquidityTax, uint256 stakeTax_one, uint256 stakeTax_two, uint256 buyTax, uint256 sellTax, uint256 transferTax ) { return ( _marketingTax, _marketMakerTax, _liquidityTax, _stakeTax_one, _stakeTax_two, _buyTax, _sellTax, _transferTax ); } function getWhitelistedStatus(address AddressToCheck) public view returns (bool) { return _whiteList[AddressToCheck]; } function getAddressSellLockTimeInSeconds(address AddressToCheck) public view returns (uint256) { uint256 lockTime = _sellLock[AddressToCheck]; if (lockTime <= block.timestamp) { return 0; } return lockTime - block.timestamp; } function getSellLockTimeInSeconds() public view returns (uint256) { return sellLockTime; } ///@dev Reset cooldown for an address function AddressResetSellLock() public { _sellLock[msg.sender] = block.timestamp + sellLockTime; } ///@dev Retrieve slot 1 function FarmedTokenWithdrawSlotOne(address tkn) public { claimFarmedToken(msg.sender, tkn, 0); } ///@dev Retrieve slot 2 function FarmedTokenWithdrawSlotTwo(address tkn) public { claimFarmedToken(msg.sender, tkn, 1); } function getDividends(address addr, uint8 slot) public view returns (uint256) { if (_excludedFromDistributing[addr]) return toERCaid[addr]; return _newDividentsOf(addr, slot) + toERCaid[addr]; } bool public sellLockDisabled; uint256 public sellLockTime; bool public manualConversion; ///@dev Airdrop tokens function airdropAddresses( address[] memory addys, address token, uint256 qty ) public onlyAuth { uint256 single_drop = qty / addys.length; IERC20 airtoken = IERC20(token); bool sent; for (uint256 i; i <= (addys.length - 1); i++) { sent = airtoken.transfer(addys[i], single_drop); require(sent); sent = false; } } ///@dev Airdrop a N of addresses function airdropAddressesNative(address[] memory addys) public payable onlyAuth { uint256 qty = msg.value; uint256 single_drop = qty / addys.length; bool sent; for (uint256 i; i <= (addys.length - 1); i++) { sent = payable(addys[i]).send(single_drop); require(sent); sent = false; } } ///@dev Enable pools for a token function ControlEnabledClaims( uint8 slot, address tkn, bool booly ) public onlyAuth { is_claimable[slot][tkn] = booly; } ///@dev Rekt all the snipers function ControlBotKiller(bool booly) public onlyAuth { botKiller = booly; } ///@dev Minimum tokens to sell function ControlSetSwapTreshold(uint256 treshold) public onlyAuth { swapTreshold = treshold * 10**_decimals; } ///@dev Exclude from distribution function ControlExcludeFromDistributing(address addr, uint8 slot) public onlyAuth { require(_excludedFromDistributing[addr]); uint256 newDividents = _newDividentsOf(addr, slot); alreadyPaidShares[addr][slot] = _balances[addr] * profitPerShare[slot]; toERCaid[addr] += newDividents; _excludedFromDistributing[addr] = true; excludedAmount += _balances[addr]; } ///@dev Include into distribution function ControlIncludeToDistributing(address addr, uint8 slot) public onlyAuth { require(_excludedFromDistributing[addr]); _excludedFromDistributing[addr] = false; excludedAmount -= _balances[addr]; alreadyPaidShares[addr][slot] = _balances[addr] * profitPerShare[slot]; } ///@dev Take out the marketing balance function ControlWithdrawMarketingETH() public onlyAuth { uint256 amount = marketingBalance; marketingBalance = 0; (bool sent, ) = marketingWallet.call{value: (amount)}(""); require(sent, "withdraw failed"); } ///@dev Peg sells to the tx function ControlSwapSetSellPeg(bool setter) public onlyAuth { sellPeg = setter; } ///@dev Disable tax reward for address function ControlSetRewardTaxFree(address addy, bool booly) public onlyAuth { isRewardTaxFree[addy] = booly; } ///@dev Disable address balance limit function ControlSetBalanceFree(address addy, bool booly) public onlyAuth { isBalanceFree[addy] = booly; } ///@dev Enable or disable manual sell function ControlSwapSetManualLiqSell(bool setter) public onlyAuth { manualTokenToSwap = setter; } ///@dev Turn sells into manual function ControlSwapSetManualLiqSellTokens(uint256 amount) public onlyAuth { require(amount > 1 && amount < 100000000, "Values between 1 and 100000000"); manualQtyTokenToSwap = amount * 10**_decimals; } ///@dev Disable auto sells function ControlSwapSwitchManualETHConversion(bool manual) public onlyAuth { manualConversion = manual; } ///@dev Set cooldown on or off (ONCE) function ControlDisableSellLock(bool disabled) public onlyAuth { sellLockDisabled = disabled; } ///@dev Set cooldown function ControlSetSellLockTime(uint256 sellLockSeconds) public onlyAuth { require(sellLockSeconds <= MaxSellLockTime, "Sell Lock time too high"); sellLockTime = sellLockSeconds; } ///@dev Set taxes function ControlSetTaxes( uint8 buyTax, uint8 sellTax, uint8 portionTax, uint8 transferTax ) public onlyAuth { require( buyTax <= MaxTax && sellTax <= MaxTax && transferTax <= MaxTax, "taxes higher than max tax" ); _buyTax = buyTax; _sellTax = sellTax; _portionTax = portionTax; _transferTax = transferTax; } function ControlSetShares( uint8 marketingTaxes, uint8 marketMakerTaxes, uint8 liquidityTaxes, uint8 stakeTaxes_one, uint8 stakeTaxes_two) public onlyAuth { uint8 totalTax = marketingTaxes + marketMakerTaxes + liquidityTaxes + stakeTaxes_one + stakeTaxes_two; require(totalTax == 100, "total taxes needs to equal 100%"); require(marketingTaxes <= 15, "Max 15%"); require(marketMakerTaxes <= 15, "Max 15%"); require(stakeTaxes_one <= 15, "Max 15%"); require(stakeTaxes_two <= 15, "Max 15%"); _marketingTax = marketingTaxes; _marketMakerTax = marketMakerTaxes; _liquidityTax = liquidityTaxes; _stakeTax_one = stakeTaxes_one; _stakeTax_two = stakeTaxes_two; } ///@dev Manually sell and create LP function ControlCreateLPandETH() public onlyAuth { _swapContractToken(192919291929192919291929192919291929); } ///@dev Manually sell all tokens gathered function ControlSellAllTokens() public onlyAuth { sellAll = true; _swapContractToken(192919291929192919291929192919291929); sellAll = false; } ///@dev Free from fees function ControlExcludeAccountFromFees(address account) public onlyAuth { _excluded[account] = true; } ///@dev Include in fees function ControlIncludeAccountToFees(address account) public onlyAuth { _excluded[account] = true; } ///@dev Exclude from cooldown function ControlExcludeAccountFromSellLock(address account) public onlyAuth { _excludedFromSellLock[account] = true; } ///@dev Enable cooldown function ControlIncludeAccountToSellLock(address account) public onlyAuth { _excludedFromSellLock[account] = true; } ///@dev Enable or disable pool 2 for an address function ControlIncludeAccountToSubset(address account, bool booly) public onlyAuth { isAuthorized[account] = booly; } ///@dev Control all the tx, buy and sell limits function ControlUpdateLimits(uint256 newBalanceLimit, uint256 newSellLimit) public onlyAuth { newBalanceLimit = newBalanceLimit * 10**_decimals; newSellLimit = newSellLimit * 10**_decimals; uint256 targetBalanceLimit = _circulatingSupply / BalanceLimitDivider; uint256 targetSellLimit = _circulatingSupply / SellLimitDivider; require( (newBalanceLimit >= targetBalanceLimit), "newBalanceLimit needs to be at least target" ); require( (newSellLimit >= targetSellLimit), "newSellLimit needs to be at least target" ); balanceLimit = newBalanceLimit; sellLimit = newSellLimit; } bool public tradingEnabled; address private _liquidityTokenAddress; function setMarketingWallet(address addy) public onlyAuth { marketingWallet = addy; _excludedFromSellLock[marketingWallet] = true; } function setMarketMakingWallet(address addy) public onlyAuth { marketMakerWallet = addy; _excludedFromSellLock[marketMakerWallet] = true; } function setSlotOneWallet(address addy) public onlyAuth { rewardWallet_one = addy; _excludedFromSellLock[rewardWallet_one] = true; } function setSlotTwoWallet(address addy) public onlyAuth { rewardWallet_two = addy; _excludedFromSellLock[rewardWallet_two] = true; } ///@dev Start/stop trading function SetupEnableTrading(bool booly) public onlyAuth { tradingEnabled = booly; } ///@dev Define a new liquidity pair function SetupLiquidityTokenAddress(address liquidityTokenAddress) public onlyAuth { _liquidityTokenAddress = liquidityTokenAddress; } ///@dev Add to WL function SetupAddToWhitelist(address addressToAdd) public onlyAuth { _whiteList[addressToAdd] = true; } ///@dev Remove from whitelist function SetupRemoveFromWhitelist(address addressToRemove) public onlyAuth { _whiteList[addressToRemove] = false; } ///@dev Take back tokens stuck into the contract function rescueTokens(address tknAddress) public onlyAuth { IERC20 token = IERC20(tknAddress); uint256 ourBalance = token.balanceOf(address(this)); require(ourBalance > 0, "No tokens in our balance"); token.transfer(msg.sender, ourBalance); } ///@dev Disable PERMANENTLY blacklist functions function disableBlacklist() public onlyAuth { isBlacklist = false; } ///@dev Blacklist someone function setBlacklistedAddress(address toBlacklist) public onlyAuth { _blacklist[toBlacklist] = true; } ///@dev Remove from blacklist function removeBlacklistedAddress(address toRemove) public onlyAuth { _blacklist[toRemove] = false; } ///@dev Block or unblock an address /* function setisOpen(address addy, bool booly) public onlyAuth { isOpen[addy] = booly; }*/ function setisOpenArry(address[] calldata addy, bool[] calldata booly) public onlyAuth { for(uint256 i; i < addy.length; i++){ isOpen[addy[i]] = booly[i]; } } function ToggleImpactTreshold( uint8 inty , bool booly) public onlyAuth { impactTreshold = inty; enabledImpactTreshold = booly; } ///@dev Remove the balance remaining in the contract function ControlRemoveRemainingETH() public onlyAuth { (bool sent, ) = owner.call{value: (address(this).balance)}(""); require(sent); } receive() external payable {} fallback() external payable {} function getowner() external view override returns (address) { return owner; } function name() external pure override returns (string memory) { return _name; } function symbol() external pure override returns (string memory) { return _symbol; } function decimals() external pure override returns (uint8) { return _decimals; } function totalSupply() external view override returns (uint256) { return _circulatingSupply; } function balanceOf(address account) external view override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) external override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function allowance(address _owner, address spender) external view override returns (uint256) { return _allowances[_owner][spender]; } function approve(address spender, uint256 amount) external override returns (bool) { _approve(msg.sender, spender, amount); return true; } function _approve( address _owner, address spender, uint256 amount ) private { require(_owner != address(0), "Approve from zero"); require(spender != address(0), "Approve to zero"); _allowances[_owner][spender] = amount; emit Approval(_owner, spender, amount); } function transferFrom( address sender, address recipient, uint256 amount ) external override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][msg.sender]; require(currentAllowance >= amount, "Transfer > allowance"); _approve(sender, msg.sender, currentAllowance - amount); return true; } function increaseAllowance(address spender, uint256 addedValue) external returns (bool) { _approve( msg.sender, spender, _allowances[msg.sender][spender] + addedValue ); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) { uint256 currentAllowance = _allowances[msg.sender][spender]; require(currentAllowance >= subtractedValue, "<0 allowance"); _approve(msg.sender, spender, currentAllowance - subtractedValue); return true; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"}],"name":"OnWithdrawFarmedToken","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"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"AddressResetSellLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"BalanceLimitDivider","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"booly","type":"bool"}],"name":"ControlBotKiller","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ControlCreateLPandETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"disabled","type":"bool"}],"name":"ControlDisableSellLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"slot","type":"uint8"},{"internalType":"address","name":"tkn","type":"address"},{"internalType":"bool","name":"booly","type":"bool"}],"name":"ControlEnabledClaims","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"ControlExcludeAccountFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"ControlExcludeAccountFromSellLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint8","name":"slot","type":"uint8"}],"name":"ControlExcludeFromDistributing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"ControlIncludeAccountToFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"ControlIncludeAccountToSellLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"booly","type":"bool"}],"name":"ControlIncludeAccountToSubset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint8","name":"slot","type":"uint8"}],"name":"ControlIncludeToDistributing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ControlRemoveRemainingETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ControlSellAllTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"},{"internalType":"bool","name":"booly","type":"bool"}],"name":"ControlSetBalanceFree","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"},{"internalType":"bool","name":"booly","type":"bool"}],"name":"ControlSetRewardTaxFree","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sellLockSeconds","type":"uint256"}],"name":"ControlSetSellLockTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"marketingTaxes","type":"uint8"},{"internalType":"uint8","name":"marketMakerTaxes","type":"uint8"},{"internalType":"uint8","name":"liquidityTaxes","type":"uint8"},{"internalType":"uint8","name":"stakeTaxes_one","type":"uint8"},{"internalType":"uint8","name":"stakeTaxes_two","type":"uint8"}],"name":"ControlSetShares","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"treshold","type":"uint256"}],"name":"ControlSetSwapTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"buyTax","type":"uint8"},{"internalType":"uint8","name":"sellTax","type":"uint8"},{"internalType":"uint8","name":"portionTax","type":"uint8"},{"internalType":"uint8","name":"transferTax","type":"uint8"}],"name":"ControlSetTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"setter","type":"bool"}],"name":"ControlSwapSetManualLiqSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ControlSwapSetManualLiqSellTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"setter","type":"bool"}],"name":"ControlSwapSetSellPeg","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"manual","type":"bool"}],"name":"ControlSwapSwitchManualETHConversion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBalanceLimit","type":"uint256"},{"internalType":"uint256","name":"newSellLimit","type":"uint256"}],"name":"ControlUpdateLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ControlWithdrawMarketingETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"Dead","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tkn","type":"address"}],"name":"FarmedTokenWithdrawSlotOne","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tkn","type":"address"}],"name":"FarmedTokenWithdrawSlotTwo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"InitialSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MaxSellLockTime","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MaxTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SellLimitDivider","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addressToAdd","type":"address"}],"name":"SetupAddToWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"booly","type":"bool"}],"name":"SetupEnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"liquidityTokenAddress","type":"address"}],"name":"SetupLiquidityTokenAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addressToRemove","type":"address"}],"name":"SetupRemoveFromWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"inty","type":"uint8"},{"internalType":"bool","name":"booly","type":"bool"}],"name":"ToggleImpactTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"UniswapRouterAddy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getTotalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addys","type":"address[]"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"qty","type":"uint256"}],"name":"airdropAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addys","type":"address[]"}],"name":"airdropAddressesNative","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"}],"name":"authorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"balanceLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enabledImpactTreshold","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"AddressToCheck","type":"address"}],"name":"getAddressSellLockTimeInSeconds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint8","name":"slot","type":"uint8"}],"name":"getDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLimits","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSellLockTimeInSeconds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTaxes","outputs":[{"internalType":"uint256","name":"marketingTax","type":"uint256"},{"internalType":"uint256","name":"marketMakerTax","type":"uint256"},{"internalType":"uint256","name":"liquidityTax","type":"uint256"},{"internalType":"uint256","name":"stakeTax_one","type":"uint256"},{"internalType":"uint256","name":"stakeTax_two","type":"uint256"},{"internalType":"uint256","name":"buyTax","type":"uint256"},{"internalType":"uint256","name":"sellTax","type":"uint256"},{"internalType":"uint256","name":"transferTax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"AddressToCheck","type":"address"}],"name":"getWhitelistedStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"}],"name":"get_paid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"sell","type":"bool"}],"name":"get_weth_price_impact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getowner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"impactTreshold","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"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":"addr","type":"address"}],"name":"isExcludedFromDistributing","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"address","name":"","type":"address"}],"name":"is_claimable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualConversion","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketMakerBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketMakerWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"oneDistributingReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"portionLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"","type":"uint8"}],"name":"profitPerShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"qtyTokenToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"toRemove","type":"address"}],"name":"removeBlacklistedAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tknAddress","type":"address"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardWallet_one","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardWallet_two","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLockDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"toBlacklist","type":"address"}],"name":"setBlacklistedAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"}],"name":"setMarketMakingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"}],"name":"setSlotOneWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"}],"name":"setSlotTwoWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"},{"internalType":"bool","name":"booly","type":"bool"}],"name":"set_authorized","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addy","type":"address[]"},{"internalType":"bool[]","name":"booly","type":"bool[]"}],"name":"setisOpenArry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalDistributingReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalLPETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalPayouts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"twoDistributingReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405260028054737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031991821681179092556003805482169092179091556014805460ff191660011790556016805473efde792d107ea9d3133839d8468cb599e4c3397490831681179091556017805483168217905560188054909216179055601980546001600160a81b0319167401efde792d107ea9d3133839d8468cb599e4c33974179055620000b16009600a620005d7565b620000c29064174876e80062000698565b601b55601b54601c55601b54601d556064601d54600a620000e4919062000698565b620000f091906200056b565b601e819055601f556021805460ff19169055601d546064906200011590600a62000698565b6200012191906200056b565b6022556023805462ffffff1916620101001790553480156200014257600080fd5b50601b54336000818152600460209081526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3602580546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b158015620001ea57600080fd5b505afa158015620001ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000225919062000539565b6001600160a01b031663c9c6539630602560009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200028357600080fd5b505afa15801562000298573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002be919062000539565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200030757600080fd5b505af11580156200031c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000342919062000539565b602480546001600160a01b0319166001600160a01b0392831617905560165481166000908152600f60209081526040808320805460ff19908116600190811790925560175486168552828520805482168317905560185486168552828520805482168317905560195490951684529083208054851682179055737a250d5630b4cf539739df2c5dacb4c659f2488d909252601090527feb1861b62122c39d7846b597c3c20bac261ab9032a26ee7d64c4c7f875977df880549092161790556032620004106009600a620005d7565b620004219064174876e80062000698565b6200042d91906200056b565b601c556064620004406009600a620005d7565b620004519064174876e80062000698565b6200045d91906200056b565b601d55506002603255602380546301000000600160681b0319166c0211210a0a1e0c140c00000000179055336000818152600d60209081526040808320805460ff1990811660019081179092556025546001600160a01b039081168652601085528386208054831684179055602454168552828520805482168317905530855282852080548216831790557f9e93e1db4a1f807cc22b2aecf4deeb0bf5745f1ecb319e87c68c5624c0fa6b69805482168317905581546001600160a01b03191686178255948452918390529091208054909216179055620006d0565b6000602082840312156200054c57600080fd5b81516001600160a01b03811681146200056457600080fd5b9392505050565b6000826200058957634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115620005cf578160001904821115620005b357620005b3620006ba565b80851615620005c157918102915b93841c939080029062000593565b509250929050565b60006200056460ff841683600082620005f35750600162000692565b81620006025750600062000692565b81600181146200061b5760028114620006265762000646565b600191505062000692565b60ff8411156200063a576200063a620006ba565b50506001821b62000692565b5060208310610133831016604e8410600b84101617156200066b575081810a62000692565b6200067783836200058e565b80600019048211156200068e576200068e620006ba565b0290505b92915050565b6000816000190483118215151615620006b557620006b5620006ba565b500290565b634e487b7160e01b600052601160045260246000fd5b61555e80620006e06000396000f3fe60806040526004361061052d5760003560e01c806373babfe6116102ab578063b76289b81161016f578063e117ff6e116100d1578063eb8e88631161008d578063eb8e88631461117b578063ec8bb4f414610b0f578063ef8a4a8114611190578063f80683ae146111b0578063f88b0e46146111d0578063fe0174bd146111e6578063ffe94e4f1461120457005b8063e117ff6e14610b2f578063e46b9df4146110fb578063e52fb9ec1461111b578063e69e03ee14611131578063e77bf5f814611146578063ea43915e1461116657005b8063d42d65091161012b578063d42d650914610fe6578063d8e8de3414610ffc578063d9f1dd4114611035578063da68eeb614611055578063db09034814611075578063dd62ed3e14611095578063e00aee41146110db57005b8063b76289b814610f16578063b918161114610f36578063bb733d4e14610f6f578063bcbe95bb14610f85578063c56f4ff514610fa5578063c6ec02fb14610fc657005b80638eecb63011610218578063a457c2d7116101d4578063a457c2d714610e3e578063a5740b2b14610e5e578063a9059cbb14610e7e578063a921783714610e9e578063aab286fe14610eb3578063afbfaf8714610ec8578063b70a829314610f0357005b80638eecb63014610d6b5780638fec412f14610d8b57806395d89b4114610da1578063965f8a8814610dce578063a20623ce14610dee578063a25af82614610e1e57005b806382c4767b1161026757806382c4767b14610cbc57806386d0ada814610cd25780638708516c14610cec5780638728ecd114610d0c578063887c60fb14610d2c5780638eb26ecd14610d4b57005b806373babfe614610c1057806374dc3fac14610c2657806375f0a87414610c46578063762bb28214610c665780637acfe0ec14610c7c5780637bcaa42114610c9c57005b806339509351116103f25780635110af051161035f57806361172f951161031b57806361172f9514610b0f57806363d8291a14610b2f57806367d84c2514610b4f5780636f89e40914610b7057806370798ca514610b9a57806370a0823114610bba57806371259fb514610bf057005b80635110af0514610a3c57806352187e5514610a695780635575e68314610a8957806358780a8214610ab957806358e5536514610ad95780635d098b3814610aef57005b8063470bf673116103ae578063470bf6731461099c57806348e53164146109bc5780634ada218b146109d15780634cdaf0ae146109f05780634d97ba7514610a105780634f91e48c14610a2657005b806339509351146108e85780633cc39b7a146109085780633d8dbf5d1461091e5780634089b1701461093e5780634394c0ec146109545780634464ddd01461097c57005b80632772f1751161049b578063313ce56711610457578063313ce567146108075780633190c5061461081b57806331b242d41461083b5780633328b7211461085b5780633478154b1461087b578063378c715814610890578063378c8ada146108c857005b80632772f175146106b85780632973ef2d146106d85780632bfe8742146107675780632bff1192146107875780632dd66eee146107a7578063311a8697146107e057005b80631285073c116104ea5780631285073c1461062457806314f879f41461064357806318160ddd146106585780631eb25d131461066d57806323b872dd14610682578063257ab075146106a257005b8062ae3bf814610536578063052258511461055657806306fdde031461056b578063095ea7b3146105ac5780630d59ccf5146105dc5780630fd99e16146105fc57005b3661053457005b005b34801561054257600080fd5b50610534610551366004614c5d565b611224565b34801561056257600080fd5b506105346113c0565b34801561057757600080fd5b5060408051808201909152600681526543686172676560d01b60208201525b6040516105a39190615190565b60405180910390f35b3480156105b857600080fd5b506105cc6105c7366004614d3f565b611435565b60405190151581526020016105a3565b3480156105e857600080fd5b506105346105f7366004614f7d565b61144c565b34801561060857600080fd5b50610611606481565b60405161ffff90911681526020016105a3565b34801561063057600080fd5b506032545b6040519081526020016105a3565b34801561064f57600080fd5b506105346115bf565b34801561066457600080fd5b50601b54610635565b34801561067957600080fd5b50610635611666565b34801561068e57600080fd5b506105cc61069d366004614cd0565b611684565b3480156106ae57600080fd5b5061063560275481565b3480156106c457600080fd5b506106356106d3366004614d6b565b61171b565b3480156106e457600080fd5b506023546040805160ff600160481b840481168252600160381b840481166020830152600160401b8404811692820192909252600160501b830482166060820152600160581b83048216608082015263010000008304821660a08201526401000000008304821660c0820152600160301b9092041660e0820152610100016105a3565b34801561077357600080fd5b50610534610782366004614d11565b611912565b34801561079357600080fd5b506105346107a2366004615042565b611981565b3480156107b357600080fd5b506105cc6107c2366004614c5d565b6001600160a01b031660009081526010602052604090205460ff1690565b3480156107ec57600080fd5b506107f5603281565b60405160ff90911681526020016105a3565b34801561081357600080fd5b5060096107f5565b34801561082757600080fd5b506105346108363660046150b2565b6119fc565b34801561084757600080fd5b50610534610856366004614ecc565b611bc9565b34801561086757600080fd5b50610534610876366004614c5d565b611c20565b34801561088757600080fd5b50610611600a81565b34801561089c57600080fd5b506016546108b0906001600160a01b031681565b6040516001600160a01b0390911681526020016105a3565b3480156108d457600080fd5b506105346108e336600461505e565b611c85565b3480156108f457600080fd5b506105cc610903366004614d3f565b611da0565b34801561091457600080fd5b5061063560305481565b34801561092a57600080fd5b50610534610939366004614c5d565b611dd7565b34801561094a57600080fd5b50610635602a5481565b34801561096057600080fd5b506108b0737a250d5630b4cf539739df2c5dacb4c659f2488d81565b34801561098857600080fd5b50610534610997366004614ecc565b611e3f565b3480156109a857600080fd5b506105346109b7366004614c5d565b611e9d565b3480156109c857600080fd5b50610534611f1b565b3480156109dd57600080fd5b506033546105cc90610100900460ff1681565b3480156109fc57600080fd5b50610534610a0b366004614c5d565b611f3a565b348015610a1c57600080fd5b5061063560205481565b348015610a3257600080fd5b50610635601d5481565b348015610a4857600080fd5b50610635610a57366004614fcd565b60266020526000908152604090205481565b348015610a7557600080fd5b50610534610a84366004614ecc565b611fa8565b348015610a9557600080fd5b506105cc610aa4366004614c5d565b60136020526000908152604090205460ff1681565b348015610ac557600080fd5b50610534610ad4366004614ecc565b611fff565b348015610ae557600080fd5b50610635602b5481565b348015610afb57600080fd5b50610534610b0a366004614c5d565b61205d565b348015610b1b57600080fd5b50610534610b2a366004614c5d565b6120db565b348015610b3b57600080fd5b50610534610b4a366004614c5d565b612143565b348015610b5b57600080fd5b506023546105cc90600160681b900460ff1681565b348015610b7c57600080fd5b50610b856121ab565b604080519283526020830191909152016105a3565b348015610ba657600080fd5b506017546108b0906001600160a01b031681565b348015610bc657600080fd5b50610635610bd5366004614c5d565b6001600160a01b031660009081526004602052604090205490565b348015610bfc57600080fd5b50610534610c0b366004614c5d565b6121e8565b348015610c1c57600080fd5b5061063560285481565b348015610c3257600080fd5b50610534610c41366004614dad565b6121f4565b348015610c5257600080fd5b506018546108b0906001600160a01b031681565b348015610c7257600080fd5b50610635601c5481565b348015610c8857600080fd5b506019546108b0906001600160a01b031681565b348015610ca857600080fd5b50610534610cb7366004614d11565b612335565b348015610cc857600080fd5b506108b061dead81565b348015610cde57600080fd5b506033546105cc9060ff1681565b348015610cf857600080fd5b50610534610d07366004614d11565b6123a4565b348015610d1857600080fd5b50610635610d27366004614c5d565b612413565b348015610d3857600080fd5b506031546105cc90610100900460ff1681565b348015610d5757600080fd5b50610534610d66366004614f4b565b61244d565b348015610d7757600080fd5b50610534610d86366004614ecc565b6124e1565b348015610d9757600080fd5b50610635602c5481565b348015610dad57600080fd5b506040805180820190915260048152634348524760e01b6020820152610596565b348015610dda57600080fd5b50610534610de9366004614d11565b61253f565b348015610dfa57600080fd5b506105cc610e09366004614c5d565b60126020526000908152604090205460ff1681565b348015610e2a57600080fd5b50610635610e39366004614c5d565b6125ae565b348015610e4a57600080fd5b506105cc610e59366004614d3f565b612605565b348015610e6a57600080fd5b50610534610e79366004614f4b565b612681565b348015610e8a57600080fd5b506105cc610e99366004614d3f565b612740565b348015610eaa57600080fd5b5061053461274d565b348015610ebf57600080fd5b506105346127ab565b348015610ed457600080fd5b506105cc610ee3366004614fe8565b601560209081526000928352604080842090915290825290205460ff1681565b610534610f11366004614e4e565b612894565b348015610f2257600080fd5b50610534610f31366004614c5d565b61296d565b348015610f4257600080fd5b506105cc610f51366004614c5d565b6001600160a01b031660009081526020819052604090205460ff1690565b348015610f7b57600080fd5b50610635601e5481565b348015610f9157600080fd5b50610534610fa0366004614c5d565b6129d5565b348015610fb157600080fd5b506023546107f590600160601b900460ff1681565b348015610fd257600080fd5b50610534610fe1366004614c5d565b612a53565b348015610ff257600080fd5b5061063560295481565b34801561100857600080fd5b506105cc611017366004614c5d565b6001600160a01b03166000908152600e602052604090205460ff1690565b34801561104157600080fd5b50610534611050366004614c5d565b612ad1565b34801561106157600080fd5b50610534611070366004614f4b565b612add565b34801561108157600080fd5b50610534611090366004614de2565b612b3d565b3480156110a157600080fd5b506106356110b0366004614c97565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b3480156110e757600080fd5b506105346110f6366004615004565b612c18565b34801561110757600080fd5b50610534611116366004614e83565b612c96565b34801561112757600080fd5b50610635601f5481565b34801561113d57600080fd5b50610635612ddc565b34801561115257600080fd5b50610534611161366004614c5d565b612df0565b34801561117257600080fd5b50610534612e55565b34801561118757600080fd5b506107f5600f81565b34801561119c57600080fd5b506105346111ab366004614ecc565b612ea5565b3480156111bc57600080fd5b506105346111cb366004614dad565b612f05565b3480156111dc57600080fd5b5061063560325481565b3480156111f257600080fd5b506001546001600160a01b03166108b0565b34801561121057600080fd5b5061063561121f366004614dad565b613010565b3360009081526020819052604090205460ff168061124c57506001546001600160a01b031633145b6112715760405162461bcd60e51b815260040161126890615262565b60405180910390fd5b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a082319060240160206040518083038186803b1580156112b557600080fd5b505afa1580156112c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ed9190614f64565b90506000811161133a5760405162461bcd60e51b81526020600482015260186024820152774e6f20746f6b656e7320696e206f75722062616c616e636560401b6044820152606401611268565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb90604401602060405180830381600087803b15801561138257600080fd5b505af1158015611396573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ba9190614ee9565b50505050565b3360009081526020819052604090205460ff16806113e857506001546001600160a01b031633145b6114045760405162461bcd60e51b815260040161126890615262565b6023805460ff191660011790556114296e2527a7cbd749423f3d225f7c81581961307d565b6023805460ff19169055565b60006114423384846132d6565b5060015b92915050565b3360009081526020819052604090205460ff168061147457506001546001600160a01b031633145b6114905760405162461bcd60e51b815260040161126890615262565b61149c6009600a615363565b6114a6908361540e565b91506114b46009600a615363565b6114be908261540e565b90506000603260ff16601b546114d491906152fe565b90506000606461ffff16601b546114eb91906152fe565b9050818410156115515760405162461bcd60e51b815260206004820152602b60248201527f6e657742616c616e63654c696d6974206e6565647320746f206265206174206c60448201526a19585cdd081d185c99d95d60aa1b6064820152608401611268565b808310156115b25760405162461bcd60e51b815260206004820152602860248201527f6e657753656c6c4c696d6974206e6565647320746f206265206174206c6561736044820152671d081d185c99d95d60c21b6064820152608401611268565b5050601c91909155601d55565b3360009081526020819052604090205460ff16806115e757506001546001600160a01b031633145b6116035760405162461bcd60e51b815260040161126890615262565b6001546040516000916001600160a01b03169047908381818185875af1925050503d8060008114611650576040519150601f19603f3d011682016040523d82523d6000602084013e611655565b606091505b505090508061166357600080fd5b50565b6116726009600a615363565b6116819064174876e80061540e565b81565b60006116918484846133c9565b6001600160a01b0384166000908152600560209081526040808320338452909152902054828110156116fc5760405162461bcd60e51b81526020600482015260146024820152735472616e73666572203e20616c6c6f77616e636560601b6044820152606401611268565b611710853361170b868561544e565b6132d6565b506001949350505050565b600080600360009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561176c57600080fd5b505afa158015611780573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a49190614c7a565b6001600160a01b031663e6a4390586600360009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561180157600080fd5b505afa158015611815573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118399190614c7a565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561187f57600080fd5b505afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b79190614c7a565b90506000806118c58361388b565b91509150600085156118ee57826118dd88606461540e565b6118e791906152fe565b9050611907565b816118fa88606461540e565b61190491906152fe565b90505b979650505050505050565b3360009081526020819052604090205460ff168061193a57506001546001600160a01b031633145b6119565760405162461bcd60e51b815260040161126890615262565b6001600160a01b03919091166000908152602081905260409020805460ff1916911515919091179055565b3360009081526020819052604090205460ff16806119a957506001546001600160a01b031633145b6119c55760405162461bcd60e51b815260040161126890615262565b6023805461ffff60601b1916600160601b60ff949094169390930260ff60681b191692909217600160681b91151591909102179055565b3360009081526020819052604090205460ff1680611a2457506001546001600160a01b031633145b611a405760405162461bcd60e51b815260040161126890615262565b6000818385611a4f888a6152d9565b611a5991906152d9565b611a6391906152d9565b611a6d91906152d9565b90508060ff16606414611ac25760405162461bcd60e51b815260206004820152601f60248201527f746f74616c207461786573206e6565647320746f20657175616c2031303025006044820152606401611268565b600f8660ff161115611ae65760405162461bcd60e51b815260040161126890615217565b600f8560ff161115611b0a5760405162461bcd60e51b815260040161126890615217565b600f8360ff161115611b2e5760405162461bcd60e51b815260040161126890615217565b600f8260ff161115611b525760405162461bcd60e51b815260040161126890615217565b506023805462ff00ff60381b1916600160481b60ff9788160260ff60381b191617600160381b958716959095029490941762ff00ff60401b1916600160401b9386169390930260ff60501b191692909217600160501b918516919091021760ff60581b1916600160581b9190931602919091179055565b3360009081526020819052604090205460ff1680611bf157506001546001600160a01b031633145b611c0d5760405162461bcd60e51b815260040161126890615262565b6033805460ff1916911515919091179055565b3360009081526020819052604090205460ff1680611c4857506001546001600160a01b031633145b611c645760405162461bcd60e51b815260040161126890615262565b6001600160a01b03166000908152601260205260409020805460ff19169055565b3360009081526020819052604090205460ff1680611cad57506001546001600160a01b031633145b611cc95760405162461bcd60e51b815260040161126890615262565b600f60ff851611801590611ce15750600f60ff841611155b8015611cf15750600f60ff821611155b611d395760405162461bcd60e51b81526020600482015260196024820152780e8c2f0cae640d0d2ced0cae440e8d0c2dc40dac2f040e8c2f603b1b6044820152606401611268565b6023805464ffff0000001916630100000060ff9687160264ff00000000191617640100000000948616949094029390931766ffff00000000001916600160281b9285169290920266ff000000000000191691909117600160301b9190931602919091179055565b3360008181526005602090815260408083206001600160a01b0387168452909152812054909161144291859061170b9086906152c1565b3360009081526020819052604090205460ff1680611dff57506001546001600160a01b031633145b611e1b5760405162461bcd60e51b815260040161126890615262565b6001600160a01b03166000908152601260205260409020805460ff19166001179055565b3360009081526020819052604090205460ff1680611e6757506001546001600160a01b031633145b611e835760405162461bcd60e51b815260040161126890615262565b602380549115156101000261ff0019909216919091179055565b3360009081526020819052604090205460ff1680611ec557506001546001600160a01b031633145b611ee15760405162461bcd60e51b815260040161126890615262565b601980546001600160a01b039092166001600160a01b0319909216821790556000908152600f60205260409020805460ff19166001179055565b603254611f2890426152c1565b33600090815260066020526040902055565b3360009081526020819052604090205460ff1680611f6257506001546001600160a01b031633145b611f7e5760405162461bcd60e51b815260040161126890615262565b603380546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b3360009081526020819052604090205460ff1680611fd057506001546001600160a01b031633145b611fec5760405162461bcd60e51b815260040161126890615262565b6021805460ff1916911515919091179055565b3360009081526020819052604090205460ff168061202757506001546001600160a01b031633145b6120435760405162461bcd60e51b815260040161126890615262565b603380549115156101000261ff0019909216919091179055565b3360009081526020819052604090205460ff168061208557506001546001600160a01b031633145b6120a15760405162461bcd60e51b815260040161126890615262565b601880546001600160a01b039092166001600160a01b0319909216821790556000908152600f60205260409020805460ff19166001179055565b3360009081526020819052604090205460ff168061210357506001546001600160a01b031633145b61211f5760405162461bcd60e51b815260040161126890615262565b6001600160a01b03166000908152600d60205260409020805460ff19166001179055565b3360009081526020819052604090205460ff168061216b57506001546001600160a01b031633145b6121875760405162461bcd60e51b815260040161126890615262565b6001600160a01b03166000908152600f60205260409020805460ff19166001179055565b6000806121ba6009600a615363565b601c546121c791906152fe565b6121d36009600a615363565b601d546121e091906152fe565b915091509091565b61166333826001613923565b3360009081526020819052604090205460ff168061221c57506001546001600160a01b031633145b6122385760405162461bcd60e51b815260040161126890615262565b6001600160a01b03821660009081526010602052604090205460ff1661225d57600080fd5b60006122698383613ce5565b60ff83166000908152602660209081526040808320546001600160a01b03881684526004909252909120549192506122a09161540e565b6001600160a01b0384166000818152602e6020908152604080832060ff88168452825280832094909455918152602f90915290812080548392906122e59084906152c1565b90915550506001600160a01b0383166000908152601060209081526040808320805460ff191660011790556004909152812054601180549192909161232b9084906152c1565b9091555050505050565b3360009081526020819052604090205460ff168061235d57506001546001600160a01b031633145b6123795760405162461bcd60e51b815260040161126890615262565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b3360009081526020819052604090205460ff16806123cc57506001546001600160a01b031633145b6123e85760405162461bcd60e51b815260040161126890615262565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6001600160a01b03811660009081526006602052604081205442811161243c5750600092915050565b612446428261544e565b9392505050565b3360009081526020819052604090205460ff168061247557506001546001600160a01b031633145b6124915760405162461bcd60e51b815260040161126890615262565b600a8111156124dc5760405162461bcd60e51b81526020600482015260176024820152760a6cad8d84098dec6d640e8d2daca40e8dede40d0d2ced604b1b6044820152606401611268565b603255565b3360009081526020819052604090205460ff168061250957506001546001600160a01b031633145b6125255760405162461bcd60e51b815260040161126890615262565b603180549115156101000261ff0019909216919091179055565b3360009081526020819052604090205460ff168061256757506001546001600160a01b031633145b6125835760405162461bcd60e51b815260040161126890615262565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6001600160a01b0381166000908152601a6020908152604080832054600490925282205460ff909116906026836125e684600161542d565b60ff1660ff16815260200190815260200160002054612446919061540e565b3360009081526005602090815260408083206001600160a01b0386168452909152812054828110156126685760405162461bcd60e51b815260206004820152600c60248201526b3c3020616c6c6f77616e636560a01b6044820152606401611268565b612677338561170b868561544e565b5060019392505050565b3360009081526020819052604090205460ff16806126a957506001546001600160a01b031633145b6126c55760405162461bcd60e51b815260040161126890615262565b6001811180156126d857506305f5e10081105b6127245760405162461bcd60e51b815260206004820152601e60248201527f56616c756573206265747765656e203120616e642031303030303030303000006044820152606401611268565b6127306009600a615363565b61273a908261540e565b60225550565b60006114423384846133c9565b3360009081526020819052604090205460ff168061277557506001546001600160a01b031633145b6127915760405162461bcd60e51b815260040161126890615262565b6127a96e2527a7cbd749423f3d225f7c81581961307d565b565b3360009081526020819052604090205460ff16806127d357506001546001600160a01b031633145b6127ef5760405162461bcd60e51b815260040161126890615262565b602b80546000918290556018546040519192916001600160a01b039091169083908381818185875af1925050503d8060008114612848576040519150601f19603f3d011682016040523d82523d6000602084013e61284d565b606091505b50509050806128905760405162461bcd60e51b815260206004820152600f60248201526e1dda5d1a191c985dc819985a5b1959608a1b6044820152606401611268565b5050565b3360009081526020819052604090205460ff16806128bc57506001546001600160a01b031633145b6128d85760405162461bcd60e51b815260040161126890615262565b805134906000906128e990836152fe565b90506000805b600185516128fd919061544e565b811161296657848181518110612915576129156154b9565b60200260200101516001600160a01b03166108fc849081150290604051600060405180830381858888f1935050505091508161295057600080fd5b600091508061295e81615488565b9150506128ef565b5050505050565b3360009081526020819052604090205460ff168061299557506001546001600160a01b031633145b6129b15760405162461bcd60e51b815260040161126890615262565b6001600160a01b03166000908152600e60205260409020805460ff19166001179055565b3360009081526020819052604090205460ff16806129fd57506001546001600160a01b031633145b612a195760405162461bcd60e51b815260040161126890615262565b601680546001600160a01b039092166001600160a01b0319909216821790556000908152600f60205260409020805460ff19166001179055565b3360009081526020819052604090205460ff1680612a7b57506001546001600160a01b031633145b612a975760405162461bcd60e51b815260040161126890615262565b601780546001600160a01b039092166001600160a01b0319909216821790556000908152600f60205260409020805460ff19166001179055565b61166333826000613923565b3360009081526020819052604090205460ff1680612b0557506001546001600160a01b031633145b612b215760405162461bcd60e51b815260040161126890615262565b612b2d6009600a615363565b612b37908261540e565b601f5550565b3360009081526020819052604090205460ff1680612b6557506001546001600160a01b031633145b612b815760405162461bcd60e51b815260040161126890615262565b60005b8381101561296657828282818110612b9e57612b9e6154b9565b9050602002016020810190612bb39190614ecc565b60136000878785818110612bc957612bc96154b9565b9050602002016020810190612bde9190614c5d565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580612c1081615488565b915050612b84565b3360009081526020819052604090205460ff1680612c4057506001546001600160a01b031633145b612c5c5760405162461bcd60e51b815260040161126890615262565b60ff90921660009081526015602090815260408083206001600160a01b03909416835292905220805491151560ff19909216919091179055565b3360009081526020819052604090205460ff1680612cbe57506001546001600160a01b031633145b612cda5760405162461bcd60e51b815260040161126890615262565b6000835182612ce991906152fe565b9050826000805b60018751612cfe919061544e565b8111612dd357826001600160a01b031663a9059cbb888381518110612d2557612d256154b9565b6020026020010151866040518363ffffffff1660e01b8152600401612d5f9291906001600160a01b03929092168252602082015260400190565b602060405180830381600087803b158015612d7957600080fd5b505af1158015612d8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db19190614ee9565b915081612dbd57600080fd5b6000915080612dcb81615488565b915050612cf0565b50505050505050565b601b5460115460009190611446908261544e565b3360009081526020819052604090205460ff1680612e1857506001546001600160a01b031633145b612e345760405162461bcd60e51b815260040161126890615262565b6001600160a01b03166000908152600e60205260409020805460ff19169055565b3360009081526020819052604090205460ff1680612e7d57506001546001600160a01b031633145b612e995760405162461bcd60e51b815260040161126890615262565b6014805460ff19169055565b3360009081526020819052604090205460ff1680612ecd57506001546001600160a01b031633145b612ee95760405162461bcd60e51b815260040161126890615262565b60238054911515620100000262ff000019909216919091179055565b3360009081526020819052604090205460ff1680612f2d57506001546001600160a01b031633145b612f495760405162461bcd60e51b815260040161126890615262565b6001600160a01b03821660009081526010602052604090205460ff16612f6e57600080fd5b6001600160a01b0382166000908152601060209081526040808320805460ff1916905560049091528120546011805491929091612fac90849061544e565b909155505060ff81166000908152602660209081526040808320546001600160a01b0386168452600490925290912054612fe6919061540e565b6001600160a01b039092166000908152602e6020908152604080832060ff90941683529290522055565b6001600160a01b03821660009081526010602052604081205460ff161561305057506001600160a01b0382166000908152602f6020526040902054611446565b6001600160a01b0383166000908152602f60205260409020546130738484613ce5565b61244691906152c1565b6031805460ff1916600117905530600090815260046020526040812054602354909190600160581b810460ff908116916130c891600160501b8204811691600160401b9004166152d9565b6130d291906152d9565b60ff16905060006064601d54600a6130ea919061540e565b6130f491906152fe565b60215490915060ff161561310757506022545b602354610100900460ff16801561312e578482111561312e5761312b6002866152fe565b91505b602380548215156101000261ff00198216811790925560ff9182169116171561315f5761315c60018561544e565b91505b8184108061316f575061ffff8316155b1561317d57505050506132c9565b60235460009061ffff85169061319d90600160401b900460ff168561540e565b6131a791906152fe565b60235490915060009061ffff8616906131ca90600160481b900460ff168661540e565b6131d491906152fe565b60235490915060009061ffff8716906131f790600160381b900460ff168761540e565b61320191906152fe565b905060008161321084866152c1565b61321a91906152c1565b905085811061323a5761322d818761544e565b613237908361544e565b91505b60006132476002866152fe565b90506000613255828761544e565b90508361326286836152c1565b61326c91906152c1565b92504761327884613d9e565b6000613284824761544e565b9050600085613293858461540e565b61329d91906152fe565b90506132a98582613efe565b6132bb6132b6844761544e565b613fce565b505050505050505050505050505b506031805460ff19169055565b6001600160a01b0383166133205760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b6044820152606401611268565b6001600160a01b0382166133685760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b6044820152606401611268565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166134145760405162461bcd60e51b81526020600482015260126024820152715472616e736665722066726f6d207a65726f60701b6044820152606401611268565b6001600160a01b03821661345d5760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220746f207a65726f60801b6044820152606401611268565b60145460ff16156134e5576001600160a01b03831660009081526012602052604090205460ff161580156134aa57506001600160a01b03821660009081526012602052604090205460ff16155b6134e55760405162461bcd60e51b815260206004820152600c60248201526b426c61636b6c69737465642160a01b6044820152606401611268565b6001600160a01b0383166000908152600d602052604081205460ff168061352457506001600160a01b0383166000908152600d602052604090205460ff165b8061354757506001600160a01b03841660009081526020819052604090205460ff165b8061356a57506001600160a01b03831660009081526020819052604090205460ff165b905060006001600160a01b03851630148061358d57506001600160a01b03841630145b6024549091506000906001600160a01b0387811691161480156135cc57506001600160a01b038516737a250d5630b4cf539739df2c5dacb4c659f2488d145b8061360b57506024546001600160a01b03868116911614801561360b57506001600160a01b038616737a250d5630b4cf539739df2c5dacb4c659f2488d145b905081806136165750805b8061361e5750825b1561364e576001600160a01b0386166000908152601a602052604090205461364e9087908790879060ff166142b0565b603354610100900460ff166137f8576024546000906001600160a01b038881169116148061369857506001600160a01b038716737a250d5630b4cf539739df2c5dacb4c659f2488d145b6024549091506000906001600160a01b03888116911614806136d657506001600160a01b038716737a250d5630b4cf539739df2c5dacb4c659f2488d145b6001600160a01b03891660009081526013602052604090205490915060ff168061371857506001600160a01b03871660009081526013602052604090205460ff165b8061373257503360009081526013602052604090205460ff165b15613749576137448888888585614341565b6137f1565b60235462010000900460ff16156137a057866001600160a01b0316886001600160a01b0316600080516020615509833981519152600060405161378e91815260200190565b60405180910390a35050505050505050565b603354610100900460ff166137f15760405162461bcd60e51b81526020600482015260176024820152761d1c98591a5b99c81b9bdd081e595d08195b98589b1959604a1b6044820152606401611268565b5050613883565b6024546000906001600160a01b038881169116148061383357506001600160a01b038716737a250d5630b4cf539739df2c5dacb4c659f2488d145b6024549091506000906001600160a01b038881169116148061387157506001600160a01b038716737a250d5630b4cf539739df2c5dacb4c659f2488d145b90506138808888888585614341565b50505b505050505050565b60008060008390506000806000836001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156138d157600080fd5b505afa1580156138e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139099190614f06565b506001600160701b03918216999116975095505050505050565b8060ff166001141561398e576001600160a01b0383166000908152600b602052604090205460ff1661398e5760405162461bcd60e51b8152602060048201526014602482015273165bdd4818d85b9d081c995d1c9a595d99481a5d60621b6044820152606401611268565b602554600160a01b900460ff16156139a557600080fd5b60ff80821660009081526015602090815260408083206001600160a01b038716845290915290205416613a085760405162461bcd60e51b815260206004820152600b60248201526a139bdd08195b98589b195960aa1b6044820152606401611268565b6025805460ff60a01b1916600160a01b1790556001600160a01b03831660009081526010602052604081205460ff1615613a5f57506001600160a01b0383166000908152602f602052604081208054919055613afe565b6000613a6b8584613ce5565b6001600160a01b03861660009081526004602090815260408083205460ff88168452602690925290912054919250613aa29161540e565b6001600160a01b0386166000818152602e6020908152604080832060ff89168452825280832094909455918152602f9091522054613ae19082906152c1565b6001600160a01b0386166000908152602f60205260408120559150505b80613b165750506025805460ff60a01b191690555050565b80602a6000828254613b2891906152c1565b90915550506040805160028082526060820183526000926020830190803683375050602554604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b158015613b9257600080fd5b505afa158015613ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bca9190614c7a565b81600081518110613bdd57613bdd6154b9565b60200260200101906001600160a01b031690816001600160a01b0316815250508381600181518110613c1157613c116154b9565b6001600160a01b03928316602091820292909201015260255460405163b6f9de9560e01b815291169063b6f9de95908490613c579060009086908b90429060040161515b565b6000604051808303818588803b158015613c7057600080fd5b505af1158015613c84573d6000803e3d6000fd5b5050604080518681526001600160a01b038a1660208201527f460fc16181df188bd2ec645a6f6dbe15da259268704aabeb2a5b7c94427e71299450019150613cc99050565b60405180910390a150506025805460ff60a01b19169055505050565b6001600160a01b03821660009081526004602090815260408083205460ff8516845260269092528220548291613d1a9161540e565b6001600160a01b0385166000908152602e6020908152604080832060ff88168452909152902054909150811015613d55576000915050611446565b6001600160a01b0384166000908152602e6020908152604080832060ff87168452909152902054600160401b90613d8c908361544e565b613d9691906152fe565b949350505050565b602554613db69030906001600160a01b0316836132d6565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613deb57613deb6154b9565b6001600160a01b03928316602091820292909201810191909152602554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015613e3f57600080fd5b505afa158015613e53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e779190614c7a565b81600181518110613e8a57613e8a6154b9565b6001600160a01b03928316602091820292909201015260255460405163791ac94760e01b815291169063791ac94790613ed0908590600090869030904290600401615285565b600060405180830381600087803b158015613eea57600080fd5b505af1158015613883573d6000803e3d6000fd5b8060306000828254613f1091906152c1565b9091555050602554613f2d9030906001600160a01b0316846132d6565b60255460405163f305d71960e01b8152306004820181905260248201859052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990839060c4016060604051808303818588803b158015613f9557600080fd5b505af1158015613fa9573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906129669190614f9f565b602354600090606490613feb90600160481b900460ff168461540e565b613ff591906152fe565b60235490915060009060649061401590600160381b900460ff168561540e565b61401f91906152fe565b60235490915060009060649061403f90600160501b900460ff168661540e565b61404991906152fe565b60235490915060009060649061406990600160581b900460ff168761540e565b61407391906152fe565b905083602b600082825461408791906152c1565b9250508190555082602c60008282546140a091906152c1565b909155505081156141a65781602760008282546140bd91906152c1565b9250508190555081602860008282546140d691906152c1565b90915550600090506140e6612ddc565b90508061410a5782602b60008282546140ff91906152c1565b909155506141a49050565b80614119600160401b8561540e565b61412391906152fe565b600080805260266020527f673668fde1539921a3231470503848f53fc614c057a2345bc3a2f36758a6d3ac805490919061415e9084906152c1565b90915550506000808052602d6020527f6648a85983aca0407b603b260cacb25b5e5e8e5194522de3d8a800e71aa41bae805485929061419e9084906152c1565b90915550505b505b80156129665780602760008282546141be91906152c1565b9250508190555080602960008282546141d791906152c1565b90915550600090506141e7612ddc565b90508061420b5781602b600082825461420091906152c1565b909155506138839050565b8061421a600160401b8461540e565b61422491906152fe565b6001600090815260266020527f5db1dfd2ced311e642486f0e890a646498a1bdee1ad9403b0a73141af8a4c41180549091906142619084906152c1565b909155505060016000908152602d6020527f4ac3b22e31fa68474eb1c8f858cd447cf1ee3eef7de8984178a7afa8f4fe0cd080548492906142a39084906152c1565b9091555050505050505050565b6001600160a01b038416600090815260046020526040902054828110156142e95760405162461bcd60e51b8152600401611268906151e5565b6142f485848461490d565b6142ff848484614a0d565b836001600160a01b0316856001600160a01b03166000805160206155098339815191528560405161433291815260200190565b60405180910390a35050505050565b6001600160a01b038086166000818152601a6020908152604080832054948916835260049091528082205492825290205460ff90921691858110156143985760405162461bcd60e51b8152600401611268906151e5565b6000806143a630898861171b565b905085156145ac576001600160a01b038a166000908152600f602052604090205460ff16614464576001600160a01b038a16600090815260066020526040902054421015806143fc5750603154610100900460ff165b61443d5760405162461bcd60e51b815260206004820152601260248201527153656c6c657220696e2073656c6c4c6f636b60701b6044820152606401611268565b60325461444a90426152c1565b6001600160a01b038b166000908152600660205260409020555b601d548811156144a85760405162461bcd60e51b815260206004820152600f60248201526e223ab6b810383937ba32b1ba34b7b760891b6044820152606401611268565b3060009081526004602052604081205461dead82527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd546144eb6009600a615363565b6144fa9064174876e80061540e565b614504919061544e565b61450e919061544e565b9050600060205460648361452291906152fe565b61452c919061540e565b9050808a1061454957602354600160281b900460ff1693506145a5565b60235460ff640100000000820481169550600160681b90910416156145a55760235460ff600160601b909104811690841611156145a557602354614598908490600160601b900460ff16615465565b6145a290856152d9565b93505b5050614722565b8615614611576001600160a01b03891660009081526007602052604090205460ff166145fd57601c546145df89866152c1565b11156145fd5760405162461bcd60e51b815260040161126890615238565b6023546301000000900460ff169150614722565b6001600160a01b03891660009081526007602052604090205460ff1661465c57601c5461463e89866152c1565b111561465c5760405162461bcd60e51b815260040161126890615238565b601c5461466989866152c1565b11156146875760405162461bcd60e51b815260040161126890615238565b6001600160a01b038a166000908152600f602052604090205460ff16614712576001600160a01b038a16600090815260066020526040902054421015806146d55750603154610100900460ff165b6147125760405162461bcd60e51b815260206004820152600e60248201526d53656e64657220696e204c6f636b60901b6044820152606401611268565b602354600160301b900460ff1691505b6024546001600160a01b038b8116911614801590614743575060335460ff16155b8015614752575060315460ff16155b801561475b5750855b1561478157601f543060009081526004602052604090205410614781576147818861307d565b6001600160a01b038a16600090815260096020526040812054819060ff166147b25750602354600160481b900460ff165b6001600160a01b038c1660009081526008602052604090205460ff166147e257602354600160381b900460ff1691505b600060ff88166147ff5750602354600160501b900460ff1661481a565b8760ff166001141561481a5750602354600160581b900460ff165b602354600090614876908d90889060ff600160581b8204811691600160501b81048216918a91614853918b91600160401b9004166152d9565b61485d91906152d9565b61486791906152d9565b61487191906152d9565b614b0f565b90506000614884828e61544e565b90506148918f8e8c61490d565b30600090815260046020526040812080548492906148b09084906152c1565b909155506148c190508e828c614a0d565b8d6001600160a01b03168f6001600160a01b0316600080516020615509833981519152836040516148f491815260200190565b60405180910390a3505050505050505050505050505050565b6001600160a01b03831660009081526004602052604081205461493190849061544e565b6001600160a01b03851660009081526010602052604090205490915060ff1615614976576001600160a01b039093166000908152600460205260409020929092555050565b60006149828584613ce5565b6001600160a01b038616600090815260046020908152604080832086905560ff8716835260269091529020549091506149bc90839061540e565b6001600160a01b0386166000818152602e6020908152604080832060ff89168452825280832094909455918152602f9091529081208054839290614a019084906152c1565b90915550505050505050565b6001600160a01b038316600090815260046020526040812054614a319084906152c1565b6001600160a01b03851660009081526010602052604090205490915060ff1615614a76576001600160a01b039093166000908152600460205260409020929092555050565b6000614a828584613ce5565b60ff8416600090815260266020526040902054909150614aa390839061540e565b6001600160a01b0386166000818152602e6020908152604080832060ff89168452825280832094909455918152602f9091529081208054839290614ae89084906152c1565b9091555050506001600160a01b039093166000908152600460205260409020929092555050565b60006127108260ff168460ff1686614b27919061540e565b613d8c919061540e565b8035614b3c816154e5565b919050565b60008083601f840112614b5357600080fd5b50813567ffffffffffffffff811115614b6b57600080fd5b6020830191508360208260051b8501011115614b8657600080fd5b9250929050565b600082601f830112614b9e57600080fd5b8135602067ffffffffffffffff80831115614bbb57614bbb6154cf565b8260051b604051601f19603f83011681018181108482111715614be057614be06154cf565b60405284815283810192508684018288018501891015614bff57600080fd5b600092505b85831015614c2957614c1581614b31565b845292840192600192909201918401614c04565b50979650505050505050565b80516001600160701b0381168114614b3c57600080fd5b803560ff81168114614b3c57600080fd5b600060208284031215614c6f57600080fd5b8135612446816154e5565b600060208284031215614c8c57600080fd5b8151612446816154e5565b60008060408385031215614caa57600080fd5b8235614cb5816154e5565b91506020830135614cc5816154e5565b809150509250929050565b600080600060608486031215614ce557600080fd5b8335614cf0816154e5565b92506020840135614d00816154e5565b929592945050506040919091013590565b60008060408385031215614d2457600080fd5b8235614d2f816154e5565b91506020830135614cc5816154fa565b60008060408385031215614d5257600080fd5b8235614d5d816154e5565b946020939093013593505050565b600080600060608486031215614d8057600080fd5b8335614d8b816154e5565b9250602084013591506040840135614da2816154fa565b809150509250925092565b60008060408385031215614dc057600080fd5b8235614dcb816154e5565b9150614dd960208401614c4c565b90509250929050565b60008060008060408587031215614df857600080fd5b843567ffffffffffffffff80821115614e1057600080fd5b614e1c88838901614b41565b90965094506020870135915080821115614e3557600080fd5b50614e4287828801614b41565b95989497509550505050565b600060208284031215614e6057600080fd5b813567ffffffffffffffff811115614e7757600080fd5b613d9684828501614b8d565b600080600060608486031215614e9857600080fd5b833567ffffffffffffffff811115614eaf57600080fd5b614ebb86828701614b8d565b9350506020840135614d00816154e5565b600060208284031215614ede57600080fd5b8135612446816154fa565b600060208284031215614efb57600080fd5b8151612446816154fa565b600080600060608486031215614f1b57600080fd5b614f2484614c35565b9250614f3260208501614c35565b9150604084015163ffffffff81168114614da257600080fd5b600060208284031215614f5d57600080fd5b5035919050565b600060208284031215614f7657600080fd5b5051919050565b60008060408385031215614f9057600080fd5b50508035926020909101359150565b600080600060608486031215614fb457600080fd5b8351925060208401519150604084015190509250925092565b600060208284031215614fdf57600080fd5b61244682614c4c565b60008060408385031215614ffb57600080fd5b614cb583614c4c565b60008060006060848603121561501957600080fd5b61502284614c4c565b92506020840135615032816154e5565b91506040840135614da2816154fa565b6000806040838503121561505557600080fd5b614d2f83614c4c565b6000806000806080858703121561507457600080fd5b61507d85614c4c565b935061508b60208601614c4c565b925061509960408601614c4c565b91506150a760608601614c4c565b905092959194509250565b600080600080600060a086880312156150ca57600080fd5b6150d386614c4c565b94506150e160208701614c4c565b93506150ef60408701614c4c565b92506150fd60608701614c4c565b915061510b60808701614c4c565b90509295509295909350565b600081518084526020808501945080840160005b838110156151505781516001600160a01b03168752958201959082019060010161512b565b509495945050505050565b8481526080602082015260006151746080830186615117565b6001600160a01b03949094166040830152506060015292915050565b600060208083528351808285015260005b818110156151bd578581018301518582016040015282016151a1565b818111156151cf576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252601890820152775472616e7366657220657863656564732062616c616e636560401b604082015260600190565b6020808252600790820152664d61782031352560c81b604082015260600190565b60208082526010908201526f3bb430b63290383937ba32b1ba34b7b760811b604082015260600190565b6020808252600990820152683737ba1037bbb732b960b91b604082015260600190565b85815284602082015260a0604082015260006152a460a0830186615117565b6001600160a01b0394909416606083015250608001529392505050565b600082198211156152d4576152d46154a3565b500190565b600060ff821660ff84168060ff038211156152f6576152f66154a3565b019392505050565b60008261531b57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b8085111561535b578160001904821115615341576153416154a3565b8085161561534e57918102915b93841c9390800290615325565b509250929050565b600061244660ff84168360008261537c57506001611446565b8161538957506000611446565b816001811461539f57600281146153a9576153c5565b6001915050611446565b60ff8411156153ba576153ba6154a3565b50506001821b611446565b5060208310610133831016604e8410600b84101617156153e8575081810a611446565b6153f28383615320565b8060001904821115615406576154066154a3565b029392505050565b6000816000190483118215151615615428576154286154a3565b500290565b600060ff821660ff84168160ff0481118215151615615406576154066154a3565b600082821015615460576154606154a3565b500390565b600060ff821660ff84168082101561547f5761547f6154a3565b90039392505050565b600060001982141561549c5761549c6154a3565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461166357600080fd5b801515811461166357600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212201eb5892d50b0b1db28689f942c39fa41939dafa68e4bf85ffb0e5618c6ca558064736f6c63430008070033
Deployed Bytecode
0x60806040526004361061052d5760003560e01c806373babfe6116102ab578063b76289b81161016f578063e117ff6e116100d1578063eb8e88631161008d578063eb8e88631461117b578063ec8bb4f414610b0f578063ef8a4a8114611190578063f80683ae146111b0578063f88b0e46146111d0578063fe0174bd146111e6578063ffe94e4f1461120457005b8063e117ff6e14610b2f578063e46b9df4146110fb578063e52fb9ec1461111b578063e69e03ee14611131578063e77bf5f814611146578063ea43915e1461116657005b8063d42d65091161012b578063d42d650914610fe6578063d8e8de3414610ffc578063d9f1dd4114611035578063da68eeb614611055578063db09034814611075578063dd62ed3e14611095578063e00aee41146110db57005b8063b76289b814610f16578063b918161114610f36578063bb733d4e14610f6f578063bcbe95bb14610f85578063c56f4ff514610fa5578063c6ec02fb14610fc657005b80638eecb63011610218578063a457c2d7116101d4578063a457c2d714610e3e578063a5740b2b14610e5e578063a9059cbb14610e7e578063a921783714610e9e578063aab286fe14610eb3578063afbfaf8714610ec8578063b70a829314610f0357005b80638eecb63014610d6b5780638fec412f14610d8b57806395d89b4114610da1578063965f8a8814610dce578063a20623ce14610dee578063a25af82614610e1e57005b806382c4767b1161026757806382c4767b14610cbc57806386d0ada814610cd25780638708516c14610cec5780638728ecd114610d0c578063887c60fb14610d2c5780638eb26ecd14610d4b57005b806373babfe614610c1057806374dc3fac14610c2657806375f0a87414610c46578063762bb28214610c665780637acfe0ec14610c7c5780637bcaa42114610c9c57005b806339509351116103f25780635110af051161035f57806361172f951161031b57806361172f9514610b0f57806363d8291a14610b2f57806367d84c2514610b4f5780636f89e40914610b7057806370798ca514610b9a57806370a0823114610bba57806371259fb514610bf057005b80635110af0514610a3c57806352187e5514610a695780635575e68314610a8957806358780a8214610ab957806358e5536514610ad95780635d098b3814610aef57005b8063470bf673116103ae578063470bf6731461099c57806348e53164146109bc5780634ada218b146109d15780634cdaf0ae146109f05780634d97ba7514610a105780634f91e48c14610a2657005b806339509351146108e85780633cc39b7a146109085780633d8dbf5d1461091e5780634089b1701461093e5780634394c0ec146109545780634464ddd01461097c57005b80632772f1751161049b578063313ce56711610457578063313ce567146108075780633190c5061461081b57806331b242d41461083b5780633328b7211461085b5780633478154b1461087b578063378c715814610890578063378c8ada146108c857005b80632772f175146106b85780632973ef2d146106d85780632bfe8742146107675780632bff1192146107875780632dd66eee146107a7578063311a8697146107e057005b80631285073c116104ea5780631285073c1461062457806314f879f41461064357806318160ddd146106585780631eb25d131461066d57806323b872dd14610682578063257ab075146106a257005b8062ae3bf814610536578063052258511461055657806306fdde031461056b578063095ea7b3146105ac5780630d59ccf5146105dc5780630fd99e16146105fc57005b3661053457005b005b34801561054257600080fd5b50610534610551366004614c5d565b611224565b34801561056257600080fd5b506105346113c0565b34801561057757600080fd5b5060408051808201909152600681526543686172676560d01b60208201525b6040516105a39190615190565b60405180910390f35b3480156105b857600080fd5b506105cc6105c7366004614d3f565b611435565b60405190151581526020016105a3565b3480156105e857600080fd5b506105346105f7366004614f7d565b61144c565b34801561060857600080fd5b50610611606481565b60405161ffff90911681526020016105a3565b34801561063057600080fd5b506032545b6040519081526020016105a3565b34801561064f57600080fd5b506105346115bf565b34801561066457600080fd5b50601b54610635565b34801561067957600080fd5b50610635611666565b34801561068e57600080fd5b506105cc61069d366004614cd0565b611684565b3480156106ae57600080fd5b5061063560275481565b3480156106c457600080fd5b506106356106d3366004614d6b565b61171b565b3480156106e457600080fd5b506023546040805160ff600160481b840481168252600160381b840481166020830152600160401b8404811692820192909252600160501b830482166060820152600160581b83048216608082015263010000008304821660a08201526401000000008304821660c0820152600160301b9092041660e0820152610100016105a3565b34801561077357600080fd5b50610534610782366004614d11565b611912565b34801561079357600080fd5b506105346107a2366004615042565b611981565b3480156107b357600080fd5b506105cc6107c2366004614c5d565b6001600160a01b031660009081526010602052604090205460ff1690565b3480156107ec57600080fd5b506107f5603281565b60405160ff90911681526020016105a3565b34801561081357600080fd5b5060096107f5565b34801561082757600080fd5b506105346108363660046150b2565b6119fc565b34801561084757600080fd5b50610534610856366004614ecc565b611bc9565b34801561086757600080fd5b50610534610876366004614c5d565b611c20565b34801561088757600080fd5b50610611600a81565b34801561089c57600080fd5b506016546108b0906001600160a01b031681565b6040516001600160a01b0390911681526020016105a3565b3480156108d457600080fd5b506105346108e336600461505e565b611c85565b3480156108f457600080fd5b506105cc610903366004614d3f565b611da0565b34801561091457600080fd5b5061063560305481565b34801561092a57600080fd5b50610534610939366004614c5d565b611dd7565b34801561094a57600080fd5b50610635602a5481565b34801561096057600080fd5b506108b0737a250d5630b4cf539739df2c5dacb4c659f2488d81565b34801561098857600080fd5b50610534610997366004614ecc565b611e3f565b3480156109a857600080fd5b506105346109b7366004614c5d565b611e9d565b3480156109c857600080fd5b50610534611f1b565b3480156109dd57600080fd5b506033546105cc90610100900460ff1681565b3480156109fc57600080fd5b50610534610a0b366004614c5d565b611f3a565b348015610a1c57600080fd5b5061063560205481565b348015610a3257600080fd5b50610635601d5481565b348015610a4857600080fd5b50610635610a57366004614fcd565b60266020526000908152604090205481565b348015610a7557600080fd5b50610534610a84366004614ecc565b611fa8565b348015610a9557600080fd5b506105cc610aa4366004614c5d565b60136020526000908152604090205460ff1681565b348015610ac557600080fd5b50610534610ad4366004614ecc565b611fff565b348015610ae557600080fd5b50610635602b5481565b348015610afb57600080fd5b50610534610b0a366004614c5d565b61205d565b348015610b1b57600080fd5b50610534610b2a366004614c5d565b6120db565b348015610b3b57600080fd5b50610534610b4a366004614c5d565b612143565b348015610b5b57600080fd5b506023546105cc90600160681b900460ff1681565b348015610b7c57600080fd5b50610b856121ab565b604080519283526020830191909152016105a3565b348015610ba657600080fd5b506017546108b0906001600160a01b031681565b348015610bc657600080fd5b50610635610bd5366004614c5d565b6001600160a01b031660009081526004602052604090205490565b348015610bfc57600080fd5b50610534610c0b366004614c5d565b6121e8565b348015610c1c57600080fd5b5061063560285481565b348015610c3257600080fd5b50610534610c41366004614dad565b6121f4565b348015610c5257600080fd5b506018546108b0906001600160a01b031681565b348015610c7257600080fd5b50610635601c5481565b348015610c8857600080fd5b506019546108b0906001600160a01b031681565b348015610ca857600080fd5b50610534610cb7366004614d11565b612335565b348015610cc857600080fd5b506108b061dead81565b348015610cde57600080fd5b506033546105cc9060ff1681565b348015610cf857600080fd5b50610534610d07366004614d11565b6123a4565b348015610d1857600080fd5b50610635610d27366004614c5d565b612413565b348015610d3857600080fd5b506031546105cc90610100900460ff1681565b348015610d5757600080fd5b50610534610d66366004614f4b565b61244d565b348015610d7757600080fd5b50610534610d86366004614ecc565b6124e1565b348015610d9757600080fd5b50610635602c5481565b348015610dad57600080fd5b506040805180820190915260048152634348524760e01b6020820152610596565b348015610dda57600080fd5b50610534610de9366004614d11565b61253f565b348015610dfa57600080fd5b506105cc610e09366004614c5d565b60126020526000908152604090205460ff1681565b348015610e2a57600080fd5b50610635610e39366004614c5d565b6125ae565b348015610e4a57600080fd5b506105cc610e59366004614d3f565b612605565b348015610e6a57600080fd5b50610534610e79366004614f4b565b612681565b348015610e8a57600080fd5b506105cc610e99366004614d3f565b612740565b348015610eaa57600080fd5b5061053461274d565b348015610ebf57600080fd5b506105346127ab565b348015610ed457600080fd5b506105cc610ee3366004614fe8565b601560209081526000928352604080842090915290825290205460ff1681565b610534610f11366004614e4e565b612894565b348015610f2257600080fd5b50610534610f31366004614c5d565b61296d565b348015610f4257600080fd5b506105cc610f51366004614c5d565b6001600160a01b031660009081526020819052604090205460ff1690565b348015610f7b57600080fd5b50610635601e5481565b348015610f9157600080fd5b50610534610fa0366004614c5d565b6129d5565b348015610fb157600080fd5b506023546107f590600160601b900460ff1681565b348015610fd257600080fd5b50610534610fe1366004614c5d565b612a53565b348015610ff257600080fd5b5061063560295481565b34801561100857600080fd5b506105cc611017366004614c5d565b6001600160a01b03166000908152600e602052604090205460ff1690565b34801561104157600080fd5b50610534611050366004614c5d565b612ad1565b34801561106157600080fd5b50610534611070366004614f4b565b612add565b34801561108157600080fd5b50610534611090366004614de2565b612b3d565b3480156110a157600080fd5b506106356110b0366004614c97565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b3480156110e757600080fd5b506105346110f6366004615004565b612c18565b34801561110757600080fd5b50610534611116366004614e83565b612c96565b34801561112757600080fd5b50610635601f5481565b34801561113d57600080fd5b50610635612ddc565b34801561115257600080fd5b50610534611161366004614c5d565b612df0565b34801561117257600080fd5b50610534612e55565b34801561118757600080fd5b506107f5600f81565b34801561119c57600080fd5b506105346111ab366004614ecc565b612ea5565b3480156111bc57600080fd5b506105346111cb366004614dad565b612f05565b3480156111dc57600080fd5b5061063560325481565b3480156111f257600080fd5b506001546001600160a01b03166108b0565b34801561121057600080fd5b5061063561121f366004614dad565b613010565b3360009081526020819052604090205460ff168061124c57506001546001600160a01b031633145b6112715760405162461bcd60e51b815260040161126890615262565b60405180910390fd5b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a082319060240160206040518083038186803b1580156112b557600080fd5b505afa1580156112c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ed9190614f64565b90506000811161133a5760405162461bcd60e51b81526020600482015260186024820152774e6f20746f6b656e7320696e206f75722062616c616e636560401b6044820152606401611268565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb90604401602060405180830381600087803b15801561138257600080fd5b505af1158015611396573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ba9190614ee9565b50505050565b3360009081526020819052604090205460ff16806113e857506001546001600160a01b031633145b6114045760405162461bcd60e51b815260040161126890615262565b6023805460ff191660011790556114296e2527a7cbd749423f3d225f7c81581961307d565b6023805460ff19169055565b60006114423384846132d6565b5060015b92915050565b3360009081526020819052604090205460ff168061147457506001546001600160a01b031633145b6114905760405162461bcd60e51b815260040161126890615262565b61149c6009600a615363565b6114a6908361540e565b91506114b46009600a615363565b6114be908261540e565b90506000603260ff16601b546114d491906152fe565b90506000606461ffff16601b546114eb91906152fe565b9050818410156115515760405162461bcd60e51b815260206004820152602b60248201527f6e657742616c616e63654c696d6974206e6565647320746f206265206174206c60448201526a19585cdd081d185c99d95d60aa1b6064820152608401611268565b808310156115b25760405162461bcd60e51b815260206004820152602860248201527f6e657753656c6c4c696d6974206e6565647320746f206265206174206c6561736044820152671d081d185c99d95d60c21b6064820152608401611268565b5050601c91909155601d55565b3360009081526020819052604090205460ff16806115e757506001546001600160a01b031633145b6116035760405162461bcd60e51b815260040161126890615262565b6001546040516000916001600160a01b03169047908381818185875af1925050503d8060008114611650576040519150601f19603f3d011682016040523d82523d6000602084013e611655565b606091505b505090508061166357600080fd5b50565b6116726009600a615363565b6116819064174876e80061540e565b81565b60006116918484846133c9565b6001600160a01b0384166000908152600560209081526040808320338452909152902054828110156116fc5760405162461bcd60e51b81526020600482015260146024820152735472616e73666572203e20616c6c6f77616e636560601b6044820152606401611268565b611710853361170b868561544e565b6132d6565b506001949350505050565b600080600360009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561176c57600080fd5b505afa158015611780573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a49190614c7a565b6001600160a01b031663e6a4390586600360009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561180157600080fd5b505afa158015611815573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118399190614c7a565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561187f57600080fd5b505afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b79190614c7a565b90506000806118c58361388b565b91509150600085156118ee57826118dd88606461540e565b6118e791906152fe565b9050611907565b816118fa88606461540e565b61190491906152fe565b90505b979650505050505050565b3360009081526020819052604090205460ff168061193a57506001546001600160a01b031633145b6119565760405162461bcd60e51b815260040161126890615262565b6001600160a01b03919091166000908152602081905260409020805460ff1916911515919091179055565b3360009081526020819052604090205460ff16806119a957506001546001600160a01b031633145b6119c55760405162461bcd60e51b815260040161126890615262565b6023805461ffff60601b1916600160601b60ff949094169390930260ff60681b191692909217600160681b91151591909102179055565b3360009081526020819052604090205460ff1680611a2457506001546001600160a01b031633145b611a405760405162461bcd60e51b815260040161126890615262565b6000818385611a4f888a6152d9565b611a5991906152d9565b611a6391906152d9565b611a6d91906152d9565b90508060ff16606414611ac25760405162461bcd60e51b815260206004820152601f60248201527f746f74616c207461786573206e6565647320746f20657175616c2031303025006044820152606401611268565b600f8660ff161115611ae65760405162461bcd60e51b815260040161126890615217565b600f8560ff161115611b0a5760405162461bcd60e51b815260040161126890615217565b600f8360ff161115611b2e5760405162461bcd60e51b815260040161126890615217565b600f8260ff161115611b525760405162461bcd60e51b815260040161126890615217565b506023805462ff00ff60381b1916600160481b60ff9788160260ff60381b191617600160381b958716959095029490941762ff00ff60401b1916600160401b9386169390930260ff60501b191692909217600160501b918516919091021760ff60581b1916600160581b9190931602919091179055565b3360009081526020819052604090205460ff1680611bf157506001546001600160a01b031633145b611c0d5760405162461bcd60e51b815260040161126890615262565b6033805460ff1916911515919091179055565b3360009081526020819052604090205460ff1680611c4857506001546001600160a01b031633145b611c645760405162461bcd60e51b815260040161126890615262565b6001600160a01b03166000908152601260205260409020805460ff19169055565b3360009081526020819052604090205460ff1680611cad57506001546001600160a01b031633145b611cc95760405162461bcd60e51b815260040161126890615262565b600f60ff851611801590611ce15750600f60ff841611155b8015611cf15750600f60ff821611155b611d395760405162461bcd60e51b81526020600482015260196024820152780e8c2f0cae640d0d2ced0cae440e8d0c2dc40dac2f040e8c2f603b1b6044820152606401611268565b6023805464ffff0000001916630100000060ff9687160264ff00000000191617640100000000948616949094029390931766ffff00000000001916600160281b9285169290920266ff000000000000191691909117600160301b9190931602919091179055565b3360008181526005602090815260408083206001600160a01b0387168452909152812054909161144291859061170b9086906152c1565b3360009081526020819052604090205460ff1680611dff57506001546001600160a01b031633145b611e1b5760405162461bcd60e51b815260040161126890615262565b6001600160a01b03166000908152601260205260409020805460ff19166001179055565b3360009081526020819052604090205460ff1680611e6757506001546001600160a01b031633145b611e835760405162461bcd60e51b815260040161126890615262565b602380549115156101000261ff0019909216919091179055565b3360009081526020819052604090205460ff1680611ec557506001546001600160a01b031633145b611ee15760405162461bcd60e51b815260040161126890615262565b601980546001600160a01b039092166001600160a01b0319909216821790556000908152600f60205260409020805460ff19166001179055565b603254611f2890426152c1565b33600090815260066020526040902055565b3360009081526020819052604090205460ff1680611f6257506001546001600160a01b031633145b611f7e5760405162461bcd60e51b815260040161126890615262565b603380546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b3360009081526020819052604090205460ff1680611fd057506001546001600160a01b031633145b611fec5760405162461bcd60e51b815260040161126890615262565b6021805460ff1916911515919091179055565b3360009081526020819052604090205460ff168061202757506001546001600160a01b031633145b6120435760405162461bcd60e51b815260040161126890615262565b603380549115156101000261ff0019909216919091179055565b3360009081526020819052604090205460ff168061208557506001546001600160a01b031633145b6120a15760405162461bcd60e51b815260040161126890615262565b601880546001600160a01b039092166001600160a01b0319909216821790556000908152600f60205260409020805460ff19166001179055565b3360009081526020819052604090205460ff168061210357506001546001600160a01b031633145b61211f5760405162461bcd60e51b815260040161126890615262565b6001600160a01b03166000908152600d60205260409020805460ff19166001179055565b3360009081526020819052604090205460ff168061216b57506001546001600160a01b031633145b6121875760405162461bcd60e51b815260040161126890615262565b6001600160a01b03166000908152600f60205260409020805460ff19166001179055565b6000806121ba6009600a615363565b601c546121c791906152fe565b6121d36009600a615363565b601d546121e091906152fe565b915091509091565b61166333826001613923565b3360009081526020819052604090205460ff168061221c57506001546001600160a01b031633145b6122385760405162461bcd60e51b815260040161126890615262565b6001600160a01b03821660009081526010602052604090205460ff1661225d57600080fd5b60006122698383613ce5565b60ff83166000908152602660209081526040808320546001600160a01b03881684526004909252909120549192506122a09161540e565b6001600160a01b0384166000818152602e6020908152604080832060ff88168452825280832094909455918152602f90915290812080548392906122e59084906152c1565b90915550506001600160a01b0383166000908152601060209081526040808320805460ff191660011790556004909152812054601180549192909161232b9084906152c1565b9091555050505050565b3360009081526020819052604090205460ff168061235d57506001546001600160a01b031633145b6123795760405162461bcd60e51b815260040161126890615262565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b3360009081526020819052604090205460ff16806123cc57506001546001600160a01b031633145b6123e85760405162461bcd60e51b815260040161126890615262565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6001600160a01b03811660009081526006602052604081205442811161243c5750600092915050565b612446428261544e565b9392505050565b3360009081526020819052604090205460ff168061247557506001546001600160a01b031633145b6124915760405162461bcd60e51b815260040161126890615262565b600a8111156124dc5760405162461bcd60e51b81526020600482015260176024820152760a6cad8d84098dec6d640e8d2daca40e8dede40d0d2ced604b1b6044820152606401611268565b603255565b3360009081526020819052604090205460ff168061250957506001546001600160a01b031633145b6125255760405162461bcd60e51b815260040161126890615262565b603180549115156101000261ff0019909216919091179055565b3360009081526020819052604090205460ff168061256757506001546001600160a01b031633145b6125835760405162461bcd60e51b815260040161126890615262565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6001600160a01b0381166000908152601a6020908152604080832054600490925282205460ff909116906026836125e684600161542d565b60ff1660ff16815260200190815260200160002054612446919061540e565b3360009081526005602090815260408083206001600160a01b0386168452909152812054828110156126685760405162461bcd60e51b815260206004820152600c60248201526b3c3020616c6c6f77616e636560a01b6044820152606401611268565b612677338561170b868561544e565b5060019392505050565b3360009081526020819052604090205460ff16806126a957506001546001600160a01b031633145b6126c55760405162461bcd60e51b815260040161126890615262565b6001811180156126d857506305f5e10081105b6127245760405162461bcd60e51b815260206004820152601e60248201527f56616c756573206265747765656e203120616e642031303030303030303000006044820152606401611268565b6127306009600a615363565b61273a908261540e565b60225550565b60006114423384846133c9565b3360009081526020819052604090205460ff168061277557506001546001600160a01b031633145b6127915760405162461bcd60e51b815260040161126890615262565b6127a96e2527a7cbd749423f3d225f7c81581961307d565b565b3360009081526020819052604090205460ff16806127d357506001546001600160a01b031633145b6127ef5760405162461bcd60e51b815260040161126890615262565b602b80546000918290556018546040519192916001600160a01b039091169083908381818185875af1925050503d8060008114612848576040519150601f19603f3d011682016040523d82523d6000602084013e61284d565b606091505b50509050806128905760405162461bcd60e51b815260206004820152600f60248201526e1dda5d1a191c985dc819985a5b1959608a1b6044820152606401611268565b5050565b3360009081526020819052604090205460ff16806128bc57506001546001600160a01b031633145b6128d85760405162461bcd60e51b815260040161126890615262565b805134906000906128e990836152fe565b90506000805b600185516128fd919061544e565b811161296657848181518110612915576129156154b9565b60200260200101516001600160a01b03166108fc849081150290604051600060405180830381858888f1935050505091508161295057600080fd5b600091508061295e81615488565b9150506128ef565b5050505050565b3360009081526020819052604090205460ff168061299557506001546001600160a01b031633145b6129b15760405162461bcd60e51b815260040161126890615262565b6001600160a01b03166000908152600e60205260409020805460ff19166001179055565b3360009081526020819052604090205460ff16806129fd57506001546001600160a01b031633145b612a195760405162461bcd60e51b815260040161126890615262565b601680546001600160a01b039092166001600160a01b0319909216821790556000908152600f60205260409020805460ff19166001179055565b3360009081526020819052604090205460ff1680612a7b57506001546001600160a01b031633145b612a975760405162461bcd60e51b815260040161126890615262565b601780546001600160a01b039092166001600160a01b0319909216821790556000908152600f60205260409020805460ff19166001179055565b61166333826000613923565b3360009081526020819052604090205460ff1680612b0557506001546001600160a01b031633145b612b215760405162461bcd60e51b815260040161126890615262565b612b2d6009600a615363565b612b37908261540e565b601f5550565b3360009081526020819052604090205460ff1680612b6557506001546001600160a01b031633145b612b815760405162461bcd60e51b815260040161126890615262565b60005b8381101561296657828282818110612b9e57612b9e6154b9565b9050602002016020810190612bb39190614ecc565b60136000878785818110612bc957612bc96154b9565b9050602002016020810190612bde9190614c5d565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580612c1081615488565b915050612b84565b3360009081526020819052604090205460ff1680612c4057506001546001600160a01b031633145b612c5c5760405162461bcd60e51b815260040161126890615262565b60ff90921660009081526015602090815260408083206001600160a01b03909416835292905220805491151560ff19909216919091179055565b3360009081526020819052604090205460ff1680612cbe57506001546001600160a01b031633145b612cda5760405162461bcd60e51b815260040161126890615262565b6000835182612ce991906152fe565b9050826000805b60018751612cfe919061544e565b8111612dd357826001600160a01b031663a9059cbb888381518110612d2557612d256154b9565b6020026020010151866040518363ffffffff1660e01b8152600401612d5f9291906001600160a01b03929092168252602082015260400190565b602060405180830381600087803b158015612d7957600080fd5b505af1158015612d8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db19190614ee9565b915081612dbd57600080fd5b6000915080612dcb81615488565b915050612cf0565b50505050505050565b601b5460115460009190611446908261544e565b3360009081526020819052604090205460ff1680612e1857506001546001600160a01b031633145b612e345760405162461bcd60e51b815260040161126890615262565b6001600160a01b03166000908152600e60205260409020805460ff19169055565b3360009081526020819052604090205460ff1680612e7d57506001546001600160a01b031633145b612e995760405162461bcd60e51b815260040161126890615262565b6014805460ff19169055565b3360009081526020819052604090205460ff1680612ecd57506001546001600160a01b031633145b612ee95760405162461bcd60e51b815260040161126890615262565b60238054911515620100000262ff000019909216919091179055565b3360009081526020819052604090205460ff1680612f2d57506001546001600160a01b031633145b612f495760405162461bcd60e51b815260040161126890615262565b6001600160a01b03821660009081526010602052604090205460ff16612f6e57600080fd5b6001600160a01b0382166000908152601060209081526040808320805460ff1916905560049091528120546011805491929091612fac90849061544e565b909155505060ff81166000908152602660209081526040808320546001600160a01b0386168452600490925290912054612fe6919061540e565b6001600160a01b039092166000908152602e6020908152604080832060ff90941683529290522055565b6001600160a01b03821660009081526010602052604081205460ff161561305057506001600160a01b0382166000908152602f6020526040902054611446565b6001600160a01b0383166000908152602f60205260409020546130738484613ce5565b61244691906152c1565b6031805460ff1916600117905530600090815260046020526040812054602354909190600160581b810460ff908116916130c891600160501b8204811691600160401b9004166152d9565b6130d291906152d9565b60ff16905060006064601d54600a6130ea919061540e565b6130f491906152fe565b60215490915060ff161561310757506022545b602354610100900460ff16801561312e578482111561312e5761312b6002866152fe565b91505b602380548215156101000261ff00198216811790925560ff9182169116171561315f5761315c60018561544e565b91505b8184108061316f575061ffff8316155b1561317d57505050506132c9565b60235460009061ffff85169061319d90600160401b900460ff168561540e565b6131a791906152fe565b60235490915060009061ffff8616906131ca90600160481b900460ff168661540e565b6131d491906152fe565b60235490915060009061ffff8716906131f790600160381b900460ff168761540e565b61320191906152fe565b905060008161321084866152c1565b61321a91906152c1565b905085811061323a5761322d818761544e565b613237908361544e565b91505b60006132476002866152fe565b90506000613255828761544e565b90508361326286836152c1565b61326c91906152c1565b92504761327884613d9e565b6000613284824761544e565b9050600085613293858461540e565b61329d91906152fe565b90506132a98582613efe565b6132bb6132b6844761544e565b613fce565b505050505050505050505050505b506031805460ff19169055565b6001600160a01b0383166133205760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b6044820152606401611268565b6001600160a01b0382166133685760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b6044820152606401611268565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166134145760405162461bcd60e51b81526020600482015260126024820152715472616e736665722066726f6d207a65726f60701b6044820152606401611268565b6001600160a01b03821661345d5760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220746f207a65726f60801b6044820152606401611268565b60145460ff16156134e5576001600160a01b03831660009081526012602052604090205460ff161580156134aa57506001600160a01b03821660009081526012602052604090205460ff16155b6134e55760405162461bcd60e51b815260206004820152600c60248201526b426c61636b6c69737465642160a01b6044820152606401611268565b6001600160a01b0383166000908152600d602052604081205460ff168061352457506001600160a01b0383166000908152600d602052604090205460ff165b8061354757506001600160a01b03841660009081526020819052604090205460ff165b8061356a57506001600160a01b03831660009081526020819052604090205460ff165b905060006001600160a01b03851630148061358d57506001600160a01b03841630145b6024549091506000906001600160a01b0387811691161480156135cc57506001600160a01b038516737a250d5630b4cf539739df2c5dacb4c659f2488d145b8061360b57506024546001600160a01b03868116911614801561360b57506001600160a01b038616737a250d5630b4cf539739df2c5dacb4c659f2488d145b905081806136165750805b8061361e5750825b1561364e576001600160a01b0386166000908152601a602052604090205461364e9087908790879060ff166142b0565b603354610100900460ff166137f8576024546000906001600160a01b038881169116148061369857506001600160a01b038716737a250d5630b4cf539739df2c5dacb4c659f2488d145b6024549091506000906001600160a01b03888116911614806136d657506001600160a01b038716737a250d5630b4cf539739df2c5dacb4c659f2488d145b6001600160a01b03891660009081526013602052604090205490915060ff168061371857506001600160a01b03871660009081526013602052604090205460ff165b8061373257503360009081526013602052604090205460ff165b15613749576137448888888585614341565b6137f1565b60235462010000900460ff16156137a057866001600160a01b0316886001600160a01b0316600080516020615509833981519152600060405161378e91815260200190565b60405180910390a35050505050505050565b603354610100900460ff166137f15760405162461bcd60e51b81526020600482015260176024820152761d1c98591a5b99c81b9bdd081e595d08195b98589b1959604a1b6044820152606401611268565b5050613883565b6024546000906001600160a01b038881169116148061383357506001600160a01b038716737a250d5630b4cf539739df2c5dacb4c659f2488d145b6024549091506000906001600160a01b038881169116148061387157506001600160a01b038716737a250d5630b4cf539739df2c5dacb4c659f2488d145b90506138808888888585614341565b50505b505050505050565b60008060008390506000806000836001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156138d157600080fd5b505afa1580156138e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139099190614f06565b506001600160701b03918216999116975095505050505050565b8060ff166001141561398e576001600160a01b0383166000908152600b602052604090205460ff1661398e5760405162461bcd60e51b8152602060048201526014602482015273165bdd4818d85b9d081c995d1c9a595d99481a5d60621b6044820152606401611268565b602554600160a01b900460ff16156139a557600080fd5b60ff80821660009081526015602090815260408083206001600160a01b038716845290915290205416613a085760405162461bcd60e51b815260206004820152600b60248201526a139bdd08195b98589b195960aa1b6044820152606401611268565b6025805460ff60a01b1916600160a01b1790556001600160a01b03831660009081526010602052604081205460ff1615613a5f57506001600160a01b0383166000908152602f602052604081208054919055613afe565b6000613a6b8584613ce5565b6001600160a01b03861660009081526004602090815260408083205460ff88168452602690925290912054919250613aa29161540e565b6001600160a01b0386166000818152602e6020908152604080832060ff89168452825280832094909455918152602f9091522054613ae19082906152c1565b6001600160a01b0386166000908152602f60205260408120559150505b80613b165750506025805460ff60a01b191690555050565b80602a6000828254613b2891906152c1565b90915550506040805160028082526060820183526000926020830190803683375050602554604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b158015613b9257600080fd5b505afa158015613ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bca9190614c7a565b81600081518110613bdd57613bdd6154b9565b60200260200101906001600160a01b031690816001600160a01b0316815250508381600181518110613c1157613c116154b9565b6001600160a01b03928316602091820292909201015260255460405163b6f9de9560e01b815291169063b6f9de95908490613c579060009086908b90429060040161515b565b6000604051808303818588803b158015613c7057600080fd5b505af1158015613c84573d6000803e3d6000fd5b5050604080518681526001600160a01b038a1660208201527f460fc16181df188bd2ec645a6f6dbe15da259268704aabeb2a5b7c94427e71299450019150613cc99050565b60405180910390a150506025805460ff60a01b19169055505050565b6001600160a01b03821660009081526004602090815260408083205460ff8516845260269092528220548291613d1a9161540e565b6001600160a01b0385166000908152602e6020908152604080832060ff88168452909152902054909150811015613d55576000915050611446565b6001600160a01b0384166000908152602e6020908152604080832060ff87168452909152902054600160401b90613d8c908361544e565b613d9691906152fe565b949350505050565b602554613db69030906001600160a01b0316836132d6565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613deb57613deb6154b9565b6001600160a01b03928316602091820292909201810191909152602554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015613e3f57600080fd5b505afa158015613e53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e779190614c7a565b81600181518110613e8a57613e8a6154b9565b6001600160a01b03928316602091820292909201015260255460405163791ac94760e01b815291169063791ac94790613ed0908590600090869030904290600401615285565b600060405180830381600087803b158015613eea57600080fd5b505af1158015613883573d6000803e3d6000fd5b8060306000828254613f1091906152c1565b9091555050602554613f2d9030906001600160a01b0316846132d6565b60255460405163f305d71960e01b8152306004820181905260248201859052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990839060c4016060604051808303818588803b158015613f9557600080fd5b505af1158015613fa9573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906129669190614f9f565b602354600090606490613feb90600160481b900460ff168461540e565b613ff591906152fe565b60235490915060009060649061401590600160381b900460ff168561540e565b61401f91906152fe565b60235490915060009060649061403f90600160501b900460ff168661540e565b61404991906152fe565b60235490915060009060649061406990600160581b900460ff168761540e565b61407391906152fe565b905083602b600082825461408791906152c1565b9250508190555082602c60008282546140a091906152c1565b909155505081156141a65781602760008282546140bd91906152c1565b9250508190555081602860008282546140d691906152c1565b90915550600090506140e6612ddc565b90508061410a5782602b60008282546140ff91906152c1565b909155506141a49050565b80614119600160401b8561540e565b61412391906152fe565b600080805260266020527f673668fde1539921a3231470503848f53fc614c057a2345bc3a2f36758a6d3ac805490919061415e9084906152c1565b90915550506000808052602d6020527f6648a85983aca0407b603b260cacb25b5e5e8e5194522de3d8a800e71aa41bae805485929061419e9084906152c1565b90915550505b505b80156129665780602760008282546141be91906152c1565b9250508190555080602960008282546141d791906152c1565b90915550600090506141e7612ddc565b90508061420b5781602b600082825461420091906152c1565b909155506138839050565b8061421a600160401b8461540e565b61422491906152fe565b6001600090815260266020527f5db1dfd2ced311e642486f0e890a646498a1bdee1ad9403b0a73141af8a4c41180549091906142619084906152c1565b909155505060016000908152602d6020527f4ac3b22e31fa68474eb1c8f858cd447cf1ee3eef7de8984178a7afa8f4fe0cd080548492906142a39084906152c1565b9091555050505050505050565b6001600160a01b038416600090815260046020526040902054828110156142e95760405162461bcd60e51b8152600401611268906151e5565b6142f485848461490d565b6142ff848484614a0d565b836001600160a01b0316856001600160a01b03166000805160206155098339815191528560405161433291815260200190565b60405180910390a35050505050565b6001600160a01b038086166000818152601a6020908152604080832054948916835260049091528082205492825290205460ff90921691858110156143985760405162461bcd60e51b8152600401611268906151e5565b6000806143a630898861171b565b905085156145ac576001600160a01b038a166000908152600f602052604090205460ff16614464576001600160a01b038a16600090815260066020526040902054421015806143fc5750603154610100900460ff165b61443d5760405162461bcd60e51b815260206004820152601260248201527153656c6c657220696e2073656c6c4c6f636b60701b6044820152606401611268565b60325461444a90426152c1565b6001600160a01b038b166000908152600660205260409020555b601d548811156144a85760405162461bcd60e51b815260206004820152600f60248201526e223ab6b810383937ba32b1ba34b7b760891b6044820152606401611268565b3060009081526004602052604081205461dead82527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd546144eb6009600a615363565b6144fa9064174876e80061540e565b614504919061544e565b61450e919061544e565b9050600060205460648361452291906152fe565b61452c919061540e565b9050808a1061454957602354600160281b900460ff1693506145a5565b60235460ff640100000000820481169550600160681b90910416156145a55760235460ff600160601b909104811690841611156145a557602354614598908490600160601b900460ff16615465565b6145a290856152d9565b93505b5050614722565b8615614611576001600160a01b03891660009081526007602052604090205460ff166145fd57601c546145df89866152c1565b11156145fd5760405162461bcd60e51b815260040161126890615238565b6023546301000000900460ff169150614722565b6001600160a01b03891660009081526007602052604090205460ff1661465c57601c5461463e89866152c1565b111561465c5760405162461bcd60e51b815260040161126890615238565b601c5461466989866152c1565b11156146875760405162461bcd60e51b815260040161126890615238565b6001600160a01b038a166000908152600f602052604090205460ff16614712576001600160a01b038a16600090815260066020526040902054421015806146d55750603154610100900460ff165b6147125760405162461bcd60e51b815260206004820152600e60248201526d53656e64657220696e204c6f636b60901b6044820152606401611268565b602354600160301b900460ff1691505b6024546001600160a01b038b8116911614801590614743575060335460ff16155b8015614752575060315460ff16155b801561475b5750855b1561478157601f543060009081526004602052604090205410614781576147818861307d565b6001600160a01b038a16600090815260096020526040812054819060ff166147b25750602354600160481b900460ff165b6001600160a01b038c1660009081526008602052604090205460ff166147e257602354600160381b900460ff1691505b600060ff88166147ff5750602354600160501b900460ff1661481a565b8760ff166001141561481a5750602354600160581b900460ff165b602354600090614876908d90889060ff600160581b8204811691600160501b81048216918a91614853918b91600160401b9004166152d9565b61485d91906152d9565b61486791906152d9565b61487191906152d9565b614b0f565b90506000614884828e61544e565b90506148918f8e8c61490d565b30600090815260046020526040812080548492906148b09084906152c1565b909155506148c190508e828c614a0d565b8d6001600160a01b03168f6001600160a01b0316600080516020615509833981519152836040516148f491815260200190565b60405180910390a3505050505050505050505050505050565b6001600160a01b03831660009081526004602052604081205461493190849061544e565b6001600160a01b03851660009081526010602052604090205490915060ff1615614976576001600160a01b039093166000908152600460205260409020929092555050565b60006149828584613ce5565b6001600160a01b038616600090815260046020908152604080832086905560ff8716835260269091529020549091506149bc90839061540e565b6001600160a01b0386166000818152602e6020908152604080832060ff89168452825280832094909455918152602f9091529081208054839290614a019084906152c1565b90915550505050505050565b6001600160a01b038316600090815260046020526040812054614a319084906152c1565b6001600160a01b03851660009081526010602052604090205490915060ff1615614a76576001600160a01b039093166000908152600460205260409020929092555050565b6000614a828584613ce5565b60ff8416600090815260266020526040902054909150614aa390839061540e565b6001600160a01b0386166000818152602e6020908152604080832060ff89168452825280832094909455918152602f9091529081208054839290614ae89084906152c1565b9091555050506001600160a01b039093166000908152600460205260409020929092555050565b60006127108260ff168460ff1686614b27919061540e565b613d8c919061540e565b8035614b3c816154e5565b919050565b60008083601f840112614b5357600080fd5b50813567ffffffffffffffff811115614b6b57600080fd5b6020830191508360208260051b8501011115614b8657600080fd5b9250929050565b600082601f830112614b9e57600080fd5b8135602067ffffffffffffffff80831115614bbb57614bbb6154cf565b8260051b604051601f19603f83011681018181108482111715614be057614be06154cf565b60405284815283810192508684018288018501891015614bff57600080fd5b600092505b85831015614c2957614c1581614b31565b845292840192600192909201918401614c04565b50979650505050505050565b80516001600160701b0381168114614b3c57600080fd5b803560ff81168114614b3c57600080fd5b600060208284031215614c6f57600080fd5b8135612446816154e5565b600060208284031215614c8c57600080fd5b8151612446816154e5565b60008060408385031215614caa57600080fd5b8235614cb5816154e5565b91506020830135614cc5816154e5565b809150509250929050565b600080600060608486031215614ce557600080fd5b8335614cf0816154e5565b92506020840135614d00816154e5565b929592945050506040919091013590565b60008060408385031215614d2457600080fd5b8235614d2f816154e5565b91506020830135614cc5816154fa565b60008060408385031215614d5257600080fd5b8235614d5d816154e5565b946020939093013593505050565b600080600060608486031215614d8057600080fd5b8335614d8b816154e5565b9250602084013591506040840135614da2816154fa565b809150509250925092565b60008060408385031215614dc057600080fd5b8235614dcb816154e5565b9150614dd960208401614c4c565b90509250929050565b60008060008060408587031215614df857600080fd5b843567ffffffffffffffff80821115614e1057600080fd5b614e1c88838901614b41565b90965094506020870135915080821115614e3557600080fd5b50614e4287828801614b41565b95989497509550505050565b600060208284031215614e6057600080fd5b813567ffffffffffffffff811115614e7757600080fd5b613d9684828501614b8d565b600080600060608486031215614e9857600080fd5b833567ffffffffffffffff811115614eaf57600080fd5b614ebb86828701614b8d565b9350506020840135614d00816154e5565b600060208284031215614ede57600080fd5b8135612446816154fa565b600060208284031215614efb57600080fd5b8151612446816154fa565b600080600060608486031215614f1b57600080fd5b614f2484614c35565b9250614f3260208501614c35565b9150604084015163ffffffff81168114614da257600080fd5b600060208284031215614f5d57600080fd5b5035919050565b600060208284031215614f7657600080fd5b5051919050565b60008060408385031215614f9057600080fd5b50508035926020909101359150565b600080600060608486031215614fb457600080fd5b8351925060208401519150604084015190509250925092565b600060208284031215614fdf57600080fd5b61244682614c4c565b60008060408385031215614ffb57600080fd5b614cb583614c4c565b60008060006060848603121561501957600080fd5b61502284614c4c565b92506020840135615032816154e5565b91506040840135614da2816154fa565b6000806040838503121561505557600080fd5b614d2f83614c4c565b6000806000806080858703121561507457600080fd5b61507d85614c4c565b935061508b60208601614c4c565b925061509960408601614c4c565b91506150a760608601614c4c565b905092959194509250565b600080600080600060a086880312156150ca57600080fd5b6150d386614c4c565b94506150e160208701614c4c565b93506150ef60408701614c4c565b92506150fd60608701614c4c565b915061510b60808701614c4c565b90509295509295909350565b600081518084526020808501945080840160005b838110156151505781516001600160a01b03168752958201959082019060010161512b565b509495945050505050565b8481526080602082015260006151746080830186615117565b6001600160a01b03949094166040830152506060015292915050565b600060208083528351808285015260005b818110156151bd578581018301518582016040015282016151a1565b818111156151cf576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252601890820152775472616e7366657220657863656564732062616c616e636560401b604082015260600190565b6020808252600790820152664d61782031352560c81b604082015260600190565b60208082526010908201526f3bb430b63290383937ba32b1ba34b7b760811b604082015260600190565b6020808252600990820152683737ba1037bbb732b960b91b604082015260600190565b85815284602082015260a0604082015260006152a460a0830186615117565b6001600160a01b0394909416606083015250608001529392505050565b600082198211156152d4576152d46154a3565b500190565b600060ff821660ff84168060ff038211156152f6576152f66154a3565b019392505050565b60008261531b57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b8085111561535b578160001904821115615341576153416154a3565b8085161561534e57918102915b93841c9390800290615325565b509250929050565b600061244660ff84168360008261537c57506001611446565b8161538957506000611446565b816001811461539f57600281146153a9576153c5565b6001915050611446565b60ff8411156153ba576153ba6154a3565b50506001821b611446565b5060208310610133831016604e8410600b84101617156153e8575081810a611446565b6153f28383615320565b8060001904821115615406576154066154a3565b029392505050565b6000816000190483118215151615615428576154286154a3565b500290565b600060ff821660ff84168160ff0481118215151615615406576154066154a3565b600082821015615460576154606154a3565b500390565b600060ff821660ff84168082101561547f5761547f6154a3565b90039392505050565b600060001982141561549c5761549c6154a3565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461166357600080fd5b801515811461166357600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212201eb5892d50b0b1db28689f942c39fa41939dafa68e4bf85ffb0e5618c6ca558064736f6c63430008070033
Deployed Bytecode Sourcemap
12249:30990:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39345:265;;;;;;;;;;-1:-1:-1;39345:265:0;;;;;:::i;:::-;;:::i;36285:160::-;;;;;;;;;;;;;:::i;40915:88::-;;;;;;;;;;-1:-1:-1;40992:5:0;;;;;;;;;;;;-1:-1:-1;;;40992:5:0;;;;40915:88;;;;;;;:::i;:::-;;;;;;;;41781:169;;;;;;;;;;-1:-1:-1;41781:169:0;;;;;:::i;:::-;;:::i;:::-;;;12609:14:1;;12602:22;12584:41;;12572:2;12557:18;41781:169:0;12444:187:1;37303:670:0;;;;;;;;;;-1:-1:-1;37303:670:0;;;;;:::i;:::-;;:::i;13383:45::-;;;;;;;;;;;;13425:3;13383:45;;;;;22918:6:1;22906:19;;;22888:38;;22876:2;22861:18;13383:45:0;22744:188:1;30283:98:0;;;;;;;;;;-1:-1:-1;30363:12:0;;30283:98;;;12790:25:1;;;12778:2;12763:18;30283:98:0;12636:185:1;40598:148:0;;;;;;;;;;;;;:::i;41201:102::-;;;;;;;;;;-1:-1:-1;41279:18:0;;41201:102;;13260:67;;;;;;;;;;;;;:::i;42265:386::-;;;;;;;;;;-1:-1:-1;42265:386:0;;;;;:::i;:::-;;:::i;22207:38::-;;;;;;;;;;;;;;;;11772:470;;;;;;;;;;-1:-1:-1;11772:470:0;;;;;:::i;:::-;;:::i;29368:478::-;;;;;;;;;;-1:-1:-1;29676:13:0;;29368:478;;;29676:13;-1:-1:-1;;;29676:13:0;;;;24581:25:1;;-1:-1:-1;;;29698:15:0;;;;24637:2:1;24622:18;;24615:34;-1:-1:-1;;;29722:13:0;;;;24665:18:1;;;24658:34;;;;-1:-1:-1;;;29744:13:0;;;;24723:2:1;24708:18;;24701:34;-1:-1:-1;;;29766:13:0;;;;24766:3:1;24751:19;;24744:35;29788:7:0;;;;;24810:3:1;24795:19;;24788:35;29804:8:0;;;;;24854:3:1;24839:19;;24832:35;-1:-1:-1;;;29821:12:0;;;;24898:3:1;24883:19;;24876:35;24568:3;24553:19;29368:478:0;24238:679:1;8144:106:0;;;;;;;;;;-1:-1:-1;8144:106:0;;;;;:::i;:::-;;:::i;40390:141::-;;;;;;;;;;-1:-1:-1;40390:141:0;;;;;:::i;:::-;;:::i;22611:128::-;;;;;;;;;;-1:-1:-1;22611:128:0;;;;;:::i;:::-;-1:-1:-1;;;;;22702:31:0;22682:4;22702:31;;;:25;:31;;;;;;;;;22611:128;13332:46;;;;;;;;;;;;13376:2;13332:46;;;;;25094:4:1;25082:17;;;25064:36;;25052:2;25037:18;13332:46:0;24922:184:1;41107:88:0;;;;;;;;;;-1:-1:-1;13254:1:0;41107:88;;35297:774;;;;;;;;;;-1:-1:-1;35297:774:0;;;;;:::i;:::-;;:::i;34396:113::-;;;;;;;;;;-1:-1:-1;34396:113:0;;;;;:::i;:::-;;:::i;39928:109::-;;;;;;;;;;-1:-1:-1;39928:109:0;;;;;:::i;:::-;;:::i;13433:51::-;;;;;;;;;;;;13474:10;13433:51;;13730:75;;;;;;;;;;-1:-1:-1;13730:75:0;;;;-1:-1:-1;;;;;13730:75:0;;;;;;-1:-1:-1;;;;;11200:32:1;;;11182:51;;11170:2;11155:18;13730:75:0;11036:203:1;34911:380:0;;;;;;;;;;-1:-1:-1;34911:380:0;;;;;:::i;:::-;;:::i;42657:236::-;;;;;;;;;;-1:-1:-1;42657:236:0;;;;;:::i;:::-;;:::i;26596:25::-;;;;;;;;;;;;;;;;39778:111;;;;;;;;;;-1:-1:-1;39778:111:0;;;;;:::i;:::-;;:::i;22332:27::-;;;;;;;;;;;;;;;;13556:91;;;;;;;;;;;;13605:42;13556:91;;33537:89;;;;;;;;;;-1:-1:-1;33537:89:0;;;;;:::i;:::-;;:::i;38206:152::-;;;;;;;;;;-1:-1:-1;38206:152:0;;;;;:::i;:::-;;:::i;30428:106::-;;;;;;;;;;;;;:::i;37979:26::-;;;;;;;;;;-1:-1:-1;37979:26:0;;;;;;;;;;;38832:155;;;;;;;;;;-1:-1:-1;38832:155:0;;;;;:::i;:::-;;:::i;14391:27::-;;;;;;;;;;;;;;;;14233:45;;;;;;;;;;;;;;;;22155:47;;;;;;;;;;-1:-1:-1;22155:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;34000:105;;;;;;;;;;-1:-1:-1;34000:105:0;;;;;:::i;:::-;;:::i;13058:38::-;;;;;;;;;;-1:-1:-1;13058:38:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;38696:91;;;;;;;;;;-1:-1:-1;38696:91:0;;;;;:::i;:::-;;:::i;22364:31::-;;;;;;;;;;;;;;;;38057:145;;;;;;;;;;-1:-1:-1;38057:145:0;;;;;:::i;:::-;;:::i;36620:108::-;;;;;;;;;;-1:-1:-1;36620:108:0;;;;;:::i;:::-;;:::i;36767:126::-;;;;;;;;;;-1:-1:-1;36767:126:0;;;;;:::i;:::-;;:::i;14939:33::-;;;;;;;;;;-1:-1:-1;14939:33:0;;;;-1:-1:-1;;;14939:33:0;;;;;;29212:150;;;;;;;;;;;;;:::i;:::-;;;;24159:25:1;;;24215:2;24200:18;;24193:34;;;;24132:18;29212:150:0;23985:248:1;13810:76:0;;;;;;;;;;-1:-1:-1;13810:76:0;;;;-1:-1:-1;;;;;13810:76:0;;;41309:115;;;;;;;;;;-1:-1:-1;41309:115:0;;;;;:::i;:::-;-1:-1:-1;;;;;41400:18:0;41377:7;41400:18;;;:9;:18;;;;;;;41309:115;30709:105;;;;;;;;;;-1:-1:-1;30709:105:0;;;;;:::i;:::-;;:::i;22250:36::-;;;;;;;;;;;;;;;;32463:404;;;;;;;;;;-1:-1:-1;32463:404:0;;;;;:::i;:::-;;:::i;13891:75::-;;;;;;;;;;-1:-1:-1;13891:75:0;;;;-1:-1:-1;;;;;13891:75:0;;;14180:48;;;;;;;;;;;;;;;;13971:77;;;;;;;;;;-1:-1:-1;13971:77:0;;;;-1:-1:-1;;;;;13971:77:0;;;33676:117;;;;;;;;;;-1:-1:-1;33676:117:0;;;;;:::i;:::-;;:::i;13652:73::-;;;;;;;;;;;;13683:42;13652:73;;31116:28;;;;;;;;;;-1:-1:-1;31116:28:0;;;;;;;;37107:139;;;;;;;;;;-1:-1:-1;37107:139:0;;;;;:::i;:::-;;:::i;30003:274::-;;;;;;;;;;-1:-1:-1;30003:274:0;;;;;:::i;:::-;;:::i;31051:28::-;;;;;;;;;;-1:-1:-1;31051:28:0;;;;;;;;;;;34689:193;;;;;;;;;;-1:-1:-1;34689:193:0;;;;;:::i;:::-;;:::i;34556:103::-;;;;;;;;;;-1:-1:-1;34556:103:0;;;;;:::i;:::-;;:::i;22400:33::-;;;;;;;;;;;;;;;;41009:92;;;;;;;;;;-1:-1:-1;41088:7:0;;;;;;;;;;;;-1:-1:-1;;;41088:7:0;;;;41009:92;;33840:113;;;;;;;;;;-1:-1:-1;33840:113:0;;;;;:::i;:::-;;:::i;13011:42::-;;;;;;;;;;-1:-1:-1;13011:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18384:163;;;;;;;;;;-1:-1:-1;18384:163:0;;;;;:::i;:::-;;:::i;42899:335::-;;;;;;;;;;-1:-1:-1;42899:335:0;;;;;:::i;:::-;;:::i;34145:215::-;;;;;;;;;;-1:-1:-1;34145:215:0;;;;;:::i;:::-;;:::i;41430:175::-;;;;;;;;;;-1:-1:-1;41430:175:0;;;;;:::i;:::-;;:::i;36116:118::-;;;;;;;;;;;;;:::i;33269:231::-;;;;;;;;;;;;;:::i;13489:62::-;;;;;;;;;;-1:-1:-1;13489:62:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;31600:351;;;;;;:::i;:::-;;:::i;39014:111::-;;;;;;;;;;-1:-1:-1;39014:111:0;;;;;:::i;:::-;;:::i;8037:99::-;;;;;;;;;;-1:-1:-1;8037:99:0;;;;;:::i;:::-;-1:-1:-1;;;;;8115:13:0;8091:4;8115:13;;;;;;;;;;;;;;8037:99;14283:54;;;;;;;;;;;;;;;;38364:145;;;;;;;;;;-1:-1:-1;38364:145:0;;;;;:::i;:::-;;:::i;14907:27::-;;;;;;;;;;-1:-1:-1;14907:27:0;;;;-1:-1:-1;;;14907:27:0;;;;;;38515:145;;;;;;;;;;-1:-1:-1;38515:145:0;;;;;:::i;:::-;;:::i;22291:36::-;;;;;;;;;;;;;;;;29852:145;;;;;;;;;;-1:-1:-1;29852:145:0;;;;;:::i;:::-;-1:-1:-1;;;;;29965:26:0;29942:4;29965:26;;;:10;:26;;;;;;;;;29852:145;30567:105;;;;;;;;;;-1:-1:-1;30567:105:0;;;;;:::i;:::-;;:::i;32302:118::-;;;;;;;;;;-1:-1:-1;32302:118:0;;;;;:::i;:::-;;:::i;40186:198::-;;;;;;;;;;-1:-1:-1;40186:198:0;;;;;:::i;:::-;;:::i;41611:164::-;;;;;;;;;;-1:-1:-1;41611:164:0;;;;;:::i;:::-;-1:-1:-1;;;;;41741:19:0;;;41715:7;41741:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;41611:164;31993:147;;;;;;;;;;-1:-1:-1;31993:147:0;;;;;:::i;:::-;;:::i;31178:380::-;;;;;;;;;;-1:-1:-1;31178:380:0;;;;;:::i;:::-;;:::i;14342:44::-;;;;;;;;;;;;;;;;22745:157;;;;;;;;;;;;;:::i;39164:123::-;;;;;;;;;;-1:-1:-1;39164:123:0;;;;;:::i;:::-;;:::i;39667:76::-;;;;;;;;;;;;;:::i;14591:33::-;;;;;;;;;;;;14622:2;14591:33;;32178:84;;;;;;;;;;-1:-1:-1;32178:84:0;;;;;:::i;:::-;;:::i;32910:311::-;;;;;;;;;;-1:-1:-1;32910:311:0;;;;;:::i;:::-;;:::i;31084:27::-;;;;;;;;;;;;;;;;40823:86;;;;;;;;;;-1:-1:-1;40898:5:0;;-1:-1:-1;;;;;40898:5:0;40823:86;;30820:225;;;;;;;;;;-1:-1:-1;30820:225:0;;;;;:::i;:::-;;:::i;39345:265::-;8306:10;8298:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8333:5:0;;-1:-1:-1;;;;;8333:5:0;8321:10;:17;8298:40;8289:63;;;;-1:-1:-1;;;8289:63:0;;;;;;;:::i;:::-;;;;;;;;;39471:30:::1;::::0;-1:-1:-1;;;39471:30:0;;39495:4:::1;39471:30;::::0;::::1;11182:51:1::0;39432:10:0;;39410:12:::1;::::0;-1:-1:-1;;;;;39471:15:0;::::1;::::0;::::1;::::0;11155:18:1;;39471:30:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;39450:51;;39529:1;39516:10;:14;39508:51;;;::::0;-1:-1:-1;;;39508:51:0;;18781:2:1;39508:51:0::1;::::0;::::1;18763:21:1::0;18820:2;18800:18;;;18793:30;-1:-1:-1;;;18839:18:1;;;18832:54;18903:18;;39508:51:0::1;18579:348:1::0;39508:51:0::1;39566:38;::::0;-1:-1:-1;;;39566:38:0;;39581:10:::1;39566:38;::::0;::::1;11727:51:1::0;11794:18;;;11787:34;;;-1:-1:-1;;;;;39566:14:0;::::1;::::0;::::1;::::0;11700:18:1;;39566:38:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;39403:207;;39345:265:::0;:::o;36285:160::-;8306:10;8298:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8333:5:0;;-1:-1:-1;;;;;8333:5:0;8321:10;:17;8298:40;8289:63;;;;-1:-1:-1;;;8289:63:0;;;;;;;:::i;:::-;36340:7:::1;:14:::0;;-1:-1:-1;;36340:14:0::1;36350:4;36340:14;::::0;;36361:56:::1;36380:36;36361:18;:56::i;:::-;36424:7;:15:::0;;-1:-1:-1;;36424:15:0::1;::::0;;36285:160::o;41781:169::-;41873:4;41889:37;41898:10;41910:7;41919:6;41889:8;:37::i;:::-;-1:-1:-1;41940:4:0;41781:169;;;;;:::o;37303:670::-;8306:10;8298:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8333:5:0;;-1:-1:-1;;;;;8333:5:0;8321:10;:17;8298:40;8289:63;;;;-1:-1:-1;;;8289:63:0;;;;;;;:::i;:::-;37451:13:::1;13254:1;37451:2;:13;:::i;:::-;37433:31;::::0;:15;:31:::1;:::i;:::-;37415:49:::0;-1:-1:-1;37501:13:0::1;13254:1;37501:2;:13;:::i;:::-;37486:28;::::0;:12;:28:::1;:::i;:::-;37471:43;;37523:26;13376:2;37552:40;;:18;;:40;;;;:::i;:::-;37523:69;;37599:23;13425:3;37625:37;;:18;;:37;;;;:::i;:::-;37599:63;;37705:18;37686:15;:37;;37669:116;;;::::0;-1:-1:-1;;;37669:116:0;;15205:2:1;37669:116:0::1;::::0;::::1;15187:21:1::0;15244:2;15224:18;;;15217:30;15283:34;15263:18;;;15256:62;-1:-1:-1;;;15334:18:1;;;15327:41;15385:19;;37669:116:0::1;15003:407:1::0;37669:116:0::1;37825:15;37809:12;:31;;37792:107;;;::::0;-1:-1:-1;;;37792:107:0;;17685:2:1;37792:107:0::1;::::0;::::1;17667:21:1::0;17724:2;17704:18;;;17697:30;17763:34;17743:18;;;17736:62;-1:-1:-1;;;17814:18:1;;;17807:38;17862:19;;37792:107:0::1;17483:404:1::0;37792:107:0::1;-1:-1:-1::0;;37906:12:0::1;:30:::0;;;;37943:9:::1;:24:::0;37303:670::o;40598:148::-;8306:10;8298:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8333:5:0;;-1:-1:-1;;;;;8333:5:0;8321:10;:17;8298:40;8289:63;;;;-1:-1:-1;;;8289:63:0;;;;;;;:::i;:::-;40674:5:::1;::::0;:46:::1;::::0;40659:9:::1;::::0;-1:-1:-1;;;;;40674:5:0::1;::::0;40693:21:::1;::::0;40659:9;40674:46;40659:9;40674:46;40693:21;40674:5;:46:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40658:62;;;40735:4;40727:13;;;::::0;::::1;;40651:95;40598:148::o:0;13260:67::-;13314:13;13254:1;13314:2;:13;:::i;:::-;13300:27;;:11;:27;:::i;:::-;13260:67;:::o;42265:386::-;42385:4;42398:36;42408:6;42416:9;42427:6;42398:9;:36::i;:::-;-1:-1:-1;;;;;42468:19:0;;42441:24;42468:19;;;:11;:19;;;;;;;;42488:10;42468:31;;;;;;;;42514:26;;;;42506:59;;;;-1:-1:-1;;;42506:59:0;;16648:2:1;42506:59:0;;;16630:21:1;16687:2;16667:18;;;16660:30;-1:-1:-1;;;16706:18:1;;;16699:50;16766:18;;42506:59:0;16446:344:1;42506:59:0;42572:55;42581:6;42589:10;42601:25;42620:6;42601:16;:25;:::i;:::-;42572:8;:55::i;:::-;-1:-1:-1;42641:4:0;;42265:386;-1:-1:-1;;;;42265:386:0:o;11772:470::-;11862:4;11879:20;11918:6;;;;;;;;;-1:-1:-1;;;;;11918:6:0;-1:-1:-1;;;;;11918:14:0;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11902:41:0;;11944:5;11951:6;;;;;;;;;-1:-1:-1;;;;;11951:6:0;-1:-1:-1;;;;;11951:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11902:63;;-1:-1:-1;;;;;;11902:63:0;;;;;;;-1:-1:-1;;;;;11474:15:1;;;11902:63:0;;;11456:34:1;11526:15;;11506:18;;;11499:43;11391:18;;11902:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11879:86;;11977:14;11993:13;12010:30;12027:12;12010:16;:30::i;:::-;11976:64;;;;12051:11;12076:4;12073:138;;;12123:9;12107:12;:6;12116:3;12107:12;:::i;:::-;12106:26;;;;:::i;:::-;12097:35;;12073:138;;;12191:8;12175:12;:6;12184:3;12175:12;:::i;:::-;12174:25;;;;:::i;:::-;12165:34;;12073:138;12228:6;11772:470;-1:-1:-1;;;;;;;11772:470:0:o;8144:106::-;8306:10;8298:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8333:5:0;;-1:-1:-1;;;;;8333:5:0;8321:10;:17;8298:40;8289:63;;;;-1:-1:-1;;;8289:63:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8221:13:0;;;::::1;:7;:13:::0;;;::::1;::::0;;;;;;:21;;-1:-1:-1;;8221:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;8144:106::o;40390:141::-;8306:10;8298:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8333:5:0;;-1:-1:-1;;;;;8333:5:0;8321:10;:17;8298:40;8289:63;;;;-1:-1:-1;;;8289:63:0;;;;;;;:::i;:::-;40471:14:::1;:21:::0;;-1:-1:-1;;;;40496:29:0;-1:-1:-1;;;40471:21:0::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;40496:29:0;;;;;-1:-1:-1;;;40496:29:0;::::1;;::::0;;;::::1;;::::0;;40390:141::o;35297:774::-;8306:10;8298:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8333:5:0;;-1:-1:-1;;;;;8333:5:0;8321:10;:17;8298:40;8289:63;;;;-1:-1:-1;;;8289:63:0;;;;;;;:::i;:::-;35487:14:::1;35602::::0;35578;35554;35504:40:::1;35528:16:::0;35504:14;:40:::1;:::i;:::-;:64;;;;:::i;:::-;:88;;;;:::i;:::-;:112;;;;:::i;:::-;35487:129;;35631:8;:15;;35643:3;35631:15;35623:59;;;::::0;-1:-1:-1;;;35623:59:0;;14845:2:1;35623:59:0::1;::::0;::::1;14827:21:1::0;14884:2;14864:18;;;14857:30;14923:33;14903:18;;;14896:61;14974:18;;35623:59:0::1;14643:355:1::0;35623:59:0::1;35717:2;35699:14;:20;;;;35691:40;;;;-1:-1:-1::0;;;35691:40:0::1;;;;;;;:::i;:::-;35766:2;35746:16;:22;;;;35738:42;;;;-1:-1:-1::0;;;35738:42:0::1;;;;;;;:::i;:::-;35813:2;35795:14;:20;;;;35787:40;;;;-1:-1:-1::0;;;35787:40:0::1;;;;;;;:::i;:::-;35860:2;35842:14;:20;;;;35834:40;;;;-1:-1:-1::0;;;35834:40:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;35883:13:0::1;:30:::0;;-1:-1:-1;;;;35920:34:0;-1:-1:-1;;;35883:30:0::1;::::0;;::::1;;-1:-1:-1::0;;;;35920:34:0;;-1:-1:-1;;;35920:34:0;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;35998:30:0;-1:-1:-1;;;35961:30:0;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;35998:30:0;;;;;-1:-1:-1;;;35998:30:0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;36035:30:0::1;-1:-1:-1::0;;;36035:30:0;;;::::1;;::::0;;;::::1;::::0;;35297:774::o;34396:113::-;8306:10;8298:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8333:5:0;;-1:-1:-1;;;;;8333:5:0;8321:10;:17;8298:40;8289:63;;;;-1:-1:-1;;;8289:63:0;;;;;;;:::i;:::-;34478:16:::1;:25:::0;;-1:-1:-1;;34478:25:0::1;::::0;::::1;;::::0;;;::::1;::::0;;34396:113::o;39928:109::-;8306:10;8298:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8333:5:0;;-1:-1:-1;;;;;8333:5:0;8321:10;:17;8298:40;8289:63;;;;-1:-1:-1;;;8289:63:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;40003:20:0::1;40026:5;40003:20:::0;;;:10:::1;:20;::::0;;;;:28;;-1:-1:-1;;40003:28:0::1;::::0;;39928:109::o;34911:380::-;8306:10;8298:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8333:5:0;;-1:-1:-1;;;;;8333:5:0;8321:10;:17;8298:40;8289:63;;;;-1:-1:-1;;;8289:63:0;;;;;;;:::i;:::-;14622:2:::1;35066:16;::::0;::::1;;::::0;::::1;::::0;:37:::1;;-1:-1:-1::0;14622:2:0::1;35086:17;::::0;::::1;;;35066:37;:62;;;;-1:-1:-1::0;14622:2:0::1;35107:21;::::0;::::1;;;35066:62;35050:121;;;::::0;-1:-1:-1;;;35050:121:0;;20183:2:1;35050:121:0::1;::::0;::::1;20165:21:1::0;20222:2;20202:18;;;20195:30;-1:-1:-1;;;20241:18:1;;;20234:55;20306:18;;35050:121:0::1;19981:349:1::0;35050:121:0::1;35180:7;:16:::0;;-1:-1:-1;;35203:18:0;35180:16;::::1;::::0;;::::1;;-1:-1:-1::0;;35203:18:0;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;35259:26:0;-1:-1:-1;;;35228:24:0;;::::1;::::0;;;::::1;-1:-1:-1::0;;35259:26:0;;;;;-1:-1:-1;;;35259:26:0;;;::::1;;::::0;;;::::1;::::0;;34911:380::o;42657:236::-;42782:10;42749:4;42817:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;42817:32:0;;;;;;;;;;42749:4;;42765:104;;42801:7;;42817:45;;42852:10;;42817:45;:::i;39778:111::-;8306:10;8298:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8333:5:0;;-1:-1:-1;;;;;8333:5:0;8321:10;:17;8298:40;8289:63;;;;-1:-1:-1;;;8289:63:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;39853:23:0::1;;::::0;;;:10:::1;:23;::::0;;;;:30;;-1:-1:-1;;39853:30:0::1;39879:4;39853:30;::::0;;39778:111::o;33537:89::-;8306:10;8298:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8333:5:0;;-1:-1:-1;;;;;8333:5:0;8321:10;:17;8298:40;8289:63;;;;-1:-1:-1;;;8289:63:0;;;;;;;:::i;:::-;33604:7:::1;:16:::0;;;::::1;;;;-1:-1:-1::0;;33604:16:0;;::::1;::::0;;;::::1;::::0;;33537:89::o;38206:152::-;8306:10;8298:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8333:5:0;;-1:-1:-1;;;;;8333:5:0;8321:10;:17;8298:40;8289:63;;;;-1:-1:-1;;;8289:63:0;;;;;;;:::i;:::-;38274:17:::1;:24:::0;;-1:-1:-1;;;;;38274:24:0;;::::1;-1:-1:-1::0;;;;;;38274:24:0;;::::1;::::0;::::1;::::0;;:17:::1;38305:40:::0;;;:21:::1;:40;::::0;;;;:47;;-1:-1:-1;;38305:47:0::1;38274:24:::0;38305:47:::1;::::0;;38206:152::o;30428:106::-;30516:12;;30498:30;;:15;:30;:::i;:::-;30484:10;30474:21;;;;:9;:21;;;;;:54;30428:106::o;38832:155::-;8306:10;8298:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8333:5:0;;-1:-1:-1;;;;;8333:5:0;8321:10;:17;8298:40;8289:63;;;;-1:-1:-1;;;8289:63:0;;;;;;;:::i;:::-;38935:22:::1;:46:::0;;-1:-1:-1;;;;;38935:46:0;;::::1;::::0;::::1;-1:-1:-1::0;;;;;;38935:46:0;;::::1;::::0;;;::::1;::::0;;38832:155::o;34000:105::-;8306:10;8298:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8333:5:0;;-1:-1:-1;;;;;8333:5:0;8321:10;:17;8298:40;8289:63;;;;-1:-1:-1;;;8289:63:0;;;;;;;:::i;:::-;34073:17:::1;:26:::0;;-1:-1:-1;;34073:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;34000:105::o;38696:91::-;8306:10;8298:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8333:5:0;;-1:-1:-1;;;;;8333:5:0;8321:10;:17;8298:40;8289:63;;;;-1:-1:-1;;;8289:63:0;;;;;;;:::i;:::-;38759:14:::1;:22:::0;;;::::1;;;;-1:-1:-1::0;;38759:22:0;;::::1;::::0;;;::::1;::::0;;38696:91::o;38057:145::-;8306:10;8298:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8333:5:0;;-1:-1:-1;;;;;8333:5:0;8321:10;:17;8298:40;8289:63;;;;-1:-1:-1;;;8289:63:0;;;;;;;:::i;:::-;38122:15:::1;:22:::0;;-1:-1:-1;;;;;38122:22:0;;::::1;-1:-1:-1::0;;;;;;38122:22:0;;::::1;::::0;::::1;::::0;;:15:::1;38151:38:::0;;;:21:::1;:38;::::0;;;;:45;;-1:-1:-1;;38151:45:0::1;38122:22:::0;38151:45:::1;::::0;;38057:145::o;36620:108::-;8306:10;8298:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8333:5:0;;-1:-1:-1;;;;;8333:5:0;8321:10;:17;8298:40;8289:63;;;;-1:-1:-1;;;8289:63:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36697:18:0::1;;::::0;;;:9:::1;:18;::::0;;;;:25;;-1:-1:-1;;36697:25:0::1;36718:4;36697:25;::::0;;36620:108::o;36767:126::-;8306:10;8298:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8333:5:0;;-1:-1:-1;;;;;8333:5:0;8321:10;:17;8298:40;8289:63;;;;-1:-1:-1;;;8289:63:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36850:30:0::1;;::::0;;;:21:::1;:30;::::0;;;;:37;;-1:-1:-1;;36850:37:0::1;36883:4;36850:37;::::0;;36767:126::o;29212:150::-;29254:15;;29315:13;13254:1;29315:2;:13;:::i;:::-;29300:12;;:28;;;;:::i;:::-;29342:13;13254:1;29342:2;:13;:::i;:::-;29330:9;;:25;;;;:::i;:::-;29292:64;;;;29212:150;;:::o;30709:105::-;30772:36;30789:10;30801:3;30806:1;30772:16;:36::i;32463:404::-;8306:10;8298:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8333:5:0;;-1:-1:-1;;;;;8333:5:0;8321:10;:17;8298:40;8289:63;;;;-1:-1:-1;;;8289:63:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;32573:31:0;::::1;;::::0;;;:25:::1;:31;::::0;;;;;::::1;;32565:40;;;::::0;::::1;;32612:20;32635:27;32651:4;32657;32635:15;:27::i;:::-;32719:20;::::0;::::1;;::::0;;;:14:::1;:20;::::0;;;;;;;;-1:-1:-1;;;;;32701:15:0;::::1;::::0;;:9:::1;:15:::0;;;;;;;32612:50;;-1:-1:-1;32701:38:0::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;;;;;32669:23:0;::::1;;::::0;;;:17:::1;:23;::::0;;;;;;;:29:::1;::::0;::::1;::::0;;;;;;;:70;;;;32746:14;;;:8:::1;:14:::0;;;;;;:30;;32764:12;;32669:23;32746:30:::1;::::0;32764:12;;32746:30:::1;:::i;:::-;::::0;;;-1:-1:-1;;;;;;;32783:31:0;::::1;;::::0;;;:25:::1;:31;::::0;;;;;;;:38;;-1:-1:-1;;32783:38:0::1;32817:4;32783:38;::::0;;32846:9:::1;:15:::0;;;;;;32828:14:::1;:33:::0;;32846:15;;32828:14;;:33:::1;::::0;32846:15;;32828:33:::1;:::i;:::-;::::0;;;-1:-1:-1;;;;;32463:404:0:o;33676:117::-;8306:10;8298:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8333:5:0;;-1:-1:-1;;;;;8333:5:0;8321:10;:17;8298:40;8289:63;;;;-1:-1:-1;;;8289:63:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33758:21:0;;;::::1;;::::0;;;:15:::1;:21;::::0;;;;:29;;-1:-1:-1;;33758:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;33676:117::o;37107:139::-;8306:10;8298:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8333:5:0;;-1:-1:-1;;;;;8333:5:0;8321:10;:17;8298:40;8289:63;;;;-1:-1:-1;;;8289:63:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;37211:21:0;;;::::1;;::::0;;;:12:::1;:21;::::0;;;;:29;;-1:-1:-1;;37211:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;37107:139::o;30003:274::-;-1:-1:-1;;;;;30142:25:0;;30104:7;30142:25;;;:9;:25;;;;;;30190:15;30178:27;;30174:58;;-1:-1:-1;30223:1:0;;30003:274;-1:-1:-1;;30003:274:0:o;30174:58::-;30245:26;30256:15;30245:8;:26;:::i;:::-;30238:33;30003:274;-1:-1:-1;;;30003:274:0:o;34689:193::-;8306:10;8298:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8333:5:0;;-1:-1:-1;;;;;8333:5:0;8321:10;:17;8298:40;8289:63;;;;-1:-1:-1;;;8289:63:0;;;;;;;:::i;:::-;13474:10:::1;34777:34:::0;::::1;;34769:70;;;::::0;-1:-1:-1;;;34769:70:0;;21906:2:1;34769:70:0::1;::::0;::::1;21888:21:1::0;21945:2;21925:18;;;21918:30;-1:-1:-1;;;21964:18:1;;;21957:53;22027:18;;34769:70:0::1;21704:347:1::0;34769:70:0::1;34846:12;:30:::0;34689:193::o;34556:103::-;8306:10;8298:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8333:5:0;;-1:-1:-1;;;;;8333:5:0;8321:10;:17;8298:40;8289:63;;;;-1:-1:-1;;;8289:63:0;;;;;;;:::i;:::-;34626:16:::1;:27:::0;;;::::1;;;;-1:-1:-1::0;;34626:27:0;;::::1;::::0;;;::::1;::::0;;34556:103::o;33840:113::-;8306:10;8298:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8333:5:0;;-1:-1:-1;;;;;8333:5:0;8321:10;:17;8298:40;8289:63;;;;-1:-1:-1;;;8289:63:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33920:19:0;;;::::1;;::::0;;;:13:::1;:19;::::0;;;;:27;;-1:-1:-1;;33920:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;33840:113::o;18384:163::-;-1:-1:-1;;;;;18466:13:0;;18436:4;18466:13;;;:7;:13;;;;;;;;;18525:9;:15;;;;;;18466:13;;;;;18498:14;18436:4;18514:6;18466:13;;18514:6;:::i;:::-;18498:24;;;;;;;;;;;;;;;;:42;;;;:::i;42899:335::-;43051:10;42996:4;43039:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;43039:32:0;;;;;;;;;;43086:35;;;;43078:60;;;;-1:-1:-1;;;43078:60:0;;22258:2:1;43078:60:0;;;22240:21:1;22297:2;22277:18;;;22270:30;-1:-1:-1;;;22316:18:1;;;22309:42;22368:18;;43078:60:0;22056:336:1;43078:60:0;43145:65;43154:10;43166:7;43175:34;43194:15;43175:16;:34;:::i;43145:65::-;-1:-1:-1;43224:4:0;;42899:335;-1:-1:-1;;;42899:335:0:o;34145:215::-;8306:10;8298:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8333:5:0;;-1:-1:-1;;;;;8333:5:0;8321:10;:17;8298:40;8289:63;;;;-1:-1:-1;;;8289:63:0;;;;;;;:::i;:::-;34244:1:::1;34235:6;:10;:32;;;;;34258:9;34249:6;:18;34235:32;34227:75;;;::::0;-1:-1:-1;;;34227:75:0;;19824:2:1;34227:75:0::1;::::0;::::1;19806:21:1::0;19863:2;19843:18;;;19836:30;19902:32;19882:18;;;19875:60;19952:18;;34227:75:0::1;19622:354:1::0;34227:75:0::1;34341:13;13254:1;34341:2;:13;:::i;:::-;34332:22;::::0;:6;:22:::1;:::i;:::-;34309:20;:45:::0;-1:-1:-1;34145:215:0:o;41430:175::-;41525:4;41541:40;41551:10;41563:9;41574:6;41541:9;:40::i;36116:118::-;8306:10;8298:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8333:5:0;;-1:-1:-1;;;;;8333:5:0;8321:10;:17;8298:40;8289:63;;;;-1:-1:-1;;;8289:63:0;;;;;;;:::i;:::-;36172:56:::1;36191:36;36172:18;:56::i;:::-;36116:118::o:0;33269:231::-;8306:10;8298:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8333:5:0;;-1:-1:-1;;;;;8333:5:0;8321:10;:17;8298:40;8289:63;;;;-1:-1:-1;;;8289:63:0;;;;;;;:::i;:::-;33348:16:::1;::::0;;33331:14:::1;33371:20:::0;;;;33414:15:::1;::::0;:41:::1;::::0;33348:16;;33331:14;-1:-1:-1;;;;;33414:15:0;;::::1;::::0;33348:16;;33331:14;33414:41;33331:14;33414:41;33348:16;33414:15;:41:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33398:57;;;33470:4;33462:32;;;::::0;-1:-1:-1;;;33462:32:0;;21562:2:1;33462:32:0::1;::::0;::::1;21544:21:1::0;21601:2;21581:18;;;21574:30;-1:-1:-1;;;21620:18:1;;;21613:45;21675:18;;33462:32:0::1;21360:339:1::0;33462:32:0::1;33324:176;;33269:231::o:0;31600:351::-;8306:10;8298:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8333:5:0;;-1:-1:-1;;;;;8333:5:0;8321:10;:17;8298:40;8289:63;;;;-1:-1:-1;;;8289:63:0;;;;;;;:::i;:::-;31763:12;;31719:9:::1;::::0;31705:11:::1;::::0;31757:18:::1;::::0;31719:9;31757:18:::1;:::i;:::-;31735:40;;31782:9;31803::::0;31798:148:::1;31835:1;31820:5;:12;:16;;;;:::i;:::-;31814:1;:23;31798:148;;31868:5;31874:1;31868:8;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;31860:22:0::1;:35;31883:11;31860:35;;;;;;;;;;;;;;;;;;;;;;;31853:42;;31912:4;31904:13;;;::::0;::::1;;31933:5;::::0;-1:-1:-1;31839:3:0;::::1;::::0;::::1;:::i;:::-;;;;31798:148;;;;31698:253;;;31600:351:::0;:::o;39014:111::-;8306:10;8298:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8333:5:0;;-1:-1:-1;;;;;8333:5:0;8321:10;:17;8298:40;8289:63;;;;-1:-1:-1;;;8289:63:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;39088:24:0::1;;::::0;;;:10:::1;:24;::::0;;;;:31;;-1:-1:-1;;39088:31:0::1;39115:4;39088:31;::::0;;39014:111::o;38364:145::-;8306:10;8298:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8333:5:0;;-1:-1:-1;;;;;8333:5:0;8321:10;:17;8298:40;8289:63;;;;-1:-1:-1;;;8289:63:0;;;;;;;:::i;:::-;38427:16:::1;:23:::0;;-1:-1:-1;;;;;38427:23:0;;::::1;-1:-1:-1::0;;;;;;38427:23:0;;::::1;::::0;::::1;::::0;;:16:::1;38457:39:::0;;;:21:::1;:39;::::0;;;;:46;;-1:-1:-1;;38457:46:0::1;38427:23:::0;38457:46:::1;::::0;;38364:145::o;38515:::-;8306:10;8298:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8333:5:0;;-1:-1:-1;;;;;8333:5:0;8321:10;:17;8298:40;8289:63;;;;-1:-1:-1;;;8289:63:0;;;;;;;:::i;:::-;38578:16:::1;:23:::0;;-1:-1:-1;;;;;38578:23:0;;::::1;-1:-1:-1::0;;;;;;38578:23:0;;::::1;::::0;::::1;::::0;;:16:::1;38608:39:::0;;;:21:::1;:39;::::0;;;;:46;;-1:-1:-1;;38608:46:0::1;38578:23:::0;38608:46:::1;::::0;;38515:145::o;30567:105::-;30630:36;30647:10;30659:3;30664:1;30630:16;:36::i;32302:118::-;8306:10;8298:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8333:5:0;;-1:-1:-1;;;;;8333:5:0;8321:10;:17;8298:40;8289:63;;;;-1:-1:-1;;;8289:63:0;;;;;;;:::i;:::-;32401:13:::1;13254:1;32401:2;:13;:::i;:::-;32390:24;::::0;:8;:24:::1;:::i;:::-;32375:12;:39:::0;-1:-1:-1;32302:118:0:o;40186:198::-;8306:10;8298:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8333:5:0;;-1:-1:-1;;;;;8333:5:0;8321:10;:17;8298:40;8289:63;;;;-1:-1:-1;;;8289:63:0;;;;;;;:::i;:::-;40288:9:::1;40284:89;40299:15:::0;;::::1;40284:89;;;40353:5;;40359:1;40353:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;40335:6;:15;40342:4;;40347:1;40342:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;40335:15:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;40335:15:0;:26;;-1:-1:-1;;40335:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;40316:3;::::1;::::0;::::1;:::i;:::-;;;;40284:89;;31993:147:::0;8306:10;8298:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8333:5:0;;-1:-1:-1;;;;;8333:5:0;8321:10;:17;8298:40;8289:63;;;;-1:-1:-1;;;8289:63:0;;;;;;;:::i;:::-;32103:18:::1;::::0;;::::1;;::::0;;;:12:::1;:18;::::0;;;;;;;-1:-1:-1;;;;;32103:23:0;;::::1;::::0;;;;;;:31;;;::::1;;-1:-1:-1::0;;32103:31:0;;::::1;::::0;;;::::1;::::0;;31993:147::o;31178:380::-;8306:10;8298:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8333:5:0;;-1:-1:-1;;;;;8333:5:0;8321:10;:17;8298:40;8289:63;;;;-1:-1:-1;;;8289:63:0;;;;;;;:::i;:::-;31299:19:::1;31327:5;:12;31321:3;:18;;;;:::i;:::-;31299:40:::0;-1:-1:-1;31371:5:0;31346:15:::1;::::0;31400:153:::1;31437:1;31422:5;:12;:16;;;;:::i;:::-;31416:1;:23;31400:153;;31462:8;-1:-1:-1::0;;;;;31462:17:0::1;;31480:5;31486:1;31480:8;;;;;;;;:::i;:::-;;;;;;;31490:11;31462:40;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;11745:32:1;;;;11727:51;;11809:2;11794:18;;11787:34;11715:2;11700:18;;11553:274;31462:40:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31455:47;;31519:4;31511:13;;;::::0;::::1;;31540:5;::::0;-1:-1:-1;31441:3:0;::::1;::::0;::::1;:::i;:::-;;;;31400:153;;;;31292:266;;;31178:380:::0;;;:::o;22745:157::-;22826:18;;22862:14;;22793:7;;22826:18;22851:25;;22826:18;22851:25;:::i;39164:123::-;8306:10;8298:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8333:5:0;;-1:-1:-1;;;;;8333:5:0;8321:10;:17;8298:40;8289:63;;;;-1:-1:-1;;;8289:63:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;39246:27:0::1;39276:5;39246:27:::0;;;:10:::1;:27;::::0;;;;:35;;-1:-1:-1;;39246:35:0::1;::::0;;39164:123::o;39667:76::-;8306:10;8298:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8333:5:0;;-1:-1:-1;;;;;8333:5:0;8321:10;:17;8298:40;8289:63;;;;-1:-1:-1;;;8289:63:0;;;;;;;:::i;:::-;39718:11:::1;:19:::0;;-1:-1:-1;;39718:19:0::1;::::0;;39667:76::o;32178:84::-;8306:10;8298:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8333:5:0;;-1:-1:-1;;;;;8333:5:0;8321:10;:17;8298:40;8289:63;;;;-1:-1:-1;;;8289:63:0;;;;;;;:::i;:::-;32239:9:::1;:17:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;32239:17:0;;::::1;::::0;;;::::1;::::0;;32178:84::o;32910:311::-;8306:10;8298:7;:19;;;;;;;;;;;;;;:40;;-1:-1:-1;8333:5:0;;-1:-1:-1;;;;;8333:5:0;8321:10;:17;8298:40;8289:63;;;;-1:-1:-1;;;8289:63:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33018:31:0;::::1;;::::0;;;:25:::1;:31;::::0;;;;;::::1;;33010:40;;;::::0;::::1;;-1:-1:-1::0;;;;;33057:31:0;::::1;33091:5;33057:31:::0;;;:25:::1;:31;::::0;;;;;;;:39;;-1:-1:-1;;33057:39:0::1;::::0;;33121:9:::1;:15:::0;;;;;;33103:14:::1;:33:::0;;33121:15;;33103:14;;:33:::1;::::0;33121:15;;33103:33:::1;:::i;:::-;::::0;;;-1:-1:-1;;33195:20:0::1;::::0;::::1;;::::0;;;:14:::1;:20;::::0;;;;;;;;-1:-1:-1;;;;;33177:15:0;::::1;::::0;;:9:::1;:15:::0;;;;;;;:38:::1;::::0;33195:20;33177:38:::1;:::i;:::-;-1:-1:-1::0;;;;;33145:23:0;;::::1;;::::0;;;:17:::1;:23;::::0;;;;;;;:29:::1;::::0;;::::1;::::0;;;;;;:70;32910:311::o;30820:225::-;-1:-1:-1;;;;;30927:31:0;;30904:7;30927:31;;;:25;:31;;;;;;;;30923:58;;;-1:-1:-1;;;;;;30967:14:0;;;;;;:8;:14;;;;;;30960:21;;30923:58;-1:-1:-1;;;;;31025:14:0;;;;;;:8;:14;;;;;;30995:27;31034:4;31017;30995:15;:27::i;:::-;:44;;;;:::i;26797:1655::-;26701:27;:34;;-1:-1:-1;;26701:34:0;26731:4;26701:34;;;26929:4:::1;26701:27:::0;26911:24;;;:9:::1;:24;::::0;;;;;26993:13:::1;::::0;26911:24;;26701:27;-1:-1:-1;;;26993:13:0;::::1;26701:34:::0;26993:13;;::::1;::::0;26960:30:::1;::::0;-1:-1:-1;;;26977:13:0;::::1;::::0;::::1;::::0;-1:-1:-1;;;26960:13:0;::::1;;:30;:::i;:::-;:46;;;;:::i;:::-;26942:64;;;;27015:19;27056:3;27038:9;;27050:2;27038:14;;;;:::i;:::-;27037:22;;;;:::i;:::-;27070:17;::::0;27015:44;;-1:-1:-1;27070:17:0::1;;27066:74;;;-1:-1:-1::0;27112:20:0::1;::::0;27066:74:::1;27168:7;::::0;::::1;::::0;::::1;;;27182:108:::0;::::1;;;27222:10;27208:11;:24;27204:79;;;27259:14;27272:1;27259:10:::0;:14:::1;:::i;:::-;27245:28;;27204:79;27296:7;:21:::0;;;::::1;;;;-1:-1:-1::0;;27296:21:0;::::1;::::0;::::1;::::0;;;::::1;27328:7:::0;;;;;;27324:59:::1;;;27358:19;27376:1;27358:15:::0;:19:::1;:::i;:::-;27344:33;;27324:59;27419:11;27401:15;:29;:46;;;-1:-1:-1::0;27434:13:0::1;::::0;::::1;::::0;27401:46:::1;27397:75;;;27458:7;;;;;;27397:75;27523:13;::::0;27480:25:::1;::::0;27508:40:::1;::::0;::::1;::::0;27509:27:::1;::::0;-1:-1:-1;;;27523:13:0;::::1;;;27509:11:::0;:27:::1;:::i;:::-;27508:40;;;;:::i;:::-;27598:13;::::0;27480:68;;-1:-1:-1;27555:25:0::1;::::0;27583:40:::1;::::0;::::1;::::0;27584:27:::1;::::0;-1:-1:-1;;;27598:13:0;::::1;;;27584:11:::0;:27:::1;:::i;:::-;27583:40;;;;:::i;:::-;27675:15;::::0;27555:68;;-1:-1:-1;27630:27:0::1;::::0;27660:42:::1;::::0;::::1;::::0;27661:29:::1;::::0;-1:-1:-1;;;27675:15:0;::::1;;;27661:11:::0;:29:::1;:::i;:::-;27660:42;;;;:::i;:::-;27630:72:::0;-1:-1:-1;27709:17:0::1;27630:72:::0;27729:44:::1;27756:17:::0;27729;:44:::1;:::i;:::-;:73;;;;:::i;:::-;27709:93;;27862:11;27849:9;:24;27845:97;;27908:25;27923:9:::0;27908:11;:25:::1;:::i;:::-;27884:50;::::0;;::::1;:::i;:::-;;;27845:97;27950:16;27969:21;27989:1;27969:17:::0;:21:::1;:::i;:::-;27950:40:::0;-1:-1:-1;27997:19:0::1;28019:28;27950:40:::0;28019:17;:28:::1;:::i;:::-;27997:50:::0;-1:-1:-1;28102:19:0;28068:31:::1;28082:17:::0;27997:50;28068:31:::1;:::i;:::-;:53;;;;:::i;:::-;28056:65:::0;-1:-1:-1;28158:21:0::1;28186:27;28056:65:::0;28186:16:::1;:27::i;:::-;28220:14;28238:41;28262:17:::0;28238:21:::1;:41;:::i;:::-;28220:60:::0;-1:-1:-1;28289:14:0::1;28331:9:::0;28307:20:::1;28316:11:::0;28220:60;28307:20:::1;:::i;:::-;28306:34;;;;:::i;:::-;28289:51;;28347:31;28361:8;28371:6;28347:13;:31::i;:::-;28387:59;28404:41;28428:17:::0;28404:21:::1;:41;:::i;:::-;28387:16;:59::i;:::-;26878:1574;;;;;;;;;;;;;26742:1;-1:-1:-1::0;26750:27:0;:35;;-1:-1:-1;;26750:35:0;;;26797:1655::o;41956:303::-;-1:-1:-1;;;;;42066:20:0;;42058:50;;;;-1:-1:-1;;;42058:50:0;;15617:2:1;42058:50:0;;;15599:21:1;15656:2;15636:18;;;15629:30;-1:-1:-1;;;15675:18:1;;;15668:47;15732:18;;42058:50:0;15415:341:1;42058:50:0;-1:-1:-1;;;;;42123:21:0;;42115:49;;;;-1:-1:-1;;;42115:49:0;;17341:2:1;42115:49:0;;;17323:21:1;17380:2;17360:18;;;17353:30;-1:-1:-1;;;17399:18:1;;;17392:45;17454:18;;42115:49:0;17139:339:1;42115:49:0;-1:-1:-1;;;;;42171:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;42220:33;;12790:25:1;;;42220:33:0;;12763:18:1;42220:33:0;;;;;;;41956:303;;;:::o;16491:1875::-;-1:-1:-1;;;;;16587:20:0;;16579:51;;;;-1:-1:-1;;;16579:51:0;;14145:2:1;16579:51:0;;;14127:21:1;14184:2;14164:18;;;14157:30;-1:-1:-1;;;14203:18:1;;;14196:48;14261:18;;16579:51:0;13943:342:1;16579:51:0;-1:-1:-1;;;;;16649:23:0;;16641:52;;;;-1:-1:-1;;;16641:52:0;;15963:2:1;16641:52:0;;;15945:21:1;16002:2;15982:18;;;15975:30;-1:-1:-1;;;16021:18:1;;;16014:46;16077:18;;16641:52:0;15761:340:1;16641:52:0;16707:11;;;;16704:113;;;-1:-1:-1;;;;;16744:18:0;;;;;;:10;:18;;;;;;;;16743:19;:45;;;;-1:-1:-1;;;;;;16767:21:0;;;;;;:10;:21;;;;;;;;16766:22;16743:45;16735:70;;;;-1:-1:-1;;;16735:70:0;;19483:2:1;16735:70:0;;;19465:21:1;19522:2;19502:18;;;19495:30;-1:-1:-1;;;19541:18:1;;;19534:42;19593:18;;16735:70:0;19281:336:1;16735:70:0;-1:-1:-1;;;;;16850:17:0;;16831:15;16850:17;;;:9;:17;;;;;;;;;:41;;-1:-1:-1;;;;;;16871:20:0;;;;;;:9;:20;;;;;;;;16850:41;:60;;;-1:-1:-1;;;;;;16895:15:0;;:7;:15;;;;;;;;;;;;;16850:60;:82;;;-1:-1:-1;;;;;;16914:18:0;;:7;:18;;;;;;;;;;;;;16850:82;16831:102;-1:-1:-1;16946:23:0;-1:-1:-1;;;;;16971:21:0;;16987:4;16971:21;;:49;;-1:-1:-1;;;;;;16996:24:0;;17015:4;16996:24;16971:49;17073:19;;16946:75;;-1:-1:-1;17034:24:0;;-1:-1:-1;;;;;17063:29:0;;;17073:19;;17063:29;:63;;;;-1:-1:-1;;;;;;17096:30:0;;13605:42;17096:30;17063:63;17062:143;;;-1:-1:-1;17154:19:0;;-1:-1:-1;;;;;17141:32:0;;;17154:19;;17141:32;:63;;;;-1:-1:-1;;;;;;17177:27:0;;13605:42;17177:27;17141:63;17034:172;;17224:18;:41;;;;17246:19;17224:41;:55;;;;17269:10;17224:55;17221:148;;;-1:-1:-1;;;;;17341:15:0;;;;;;:7;:15;;;;;;17296:61;;17313:6;;17321:9;;17332:6;;17341:15;;17296:16;:61::i;:::-;17390:14;;;;;;;17385:968;;17443:19;;17423:11;;-1:-1:-1;;;;;17435:27:0;;;17443:19;;17435:27;;:57;;-1:-1:-1;;;;;;17465:27:0;;13605:42;17465:27;17435:57;17531:19;;17423:69;;-1:-1:-1;17507:12:0;;-1:-1:-1;;;;;17520:30:0;;;17531:19;;17520:30;;:63;;-1:-1:-1;;;;;;17553:30:0;;13605:42;17553:30;17520:63;-1:-1:-1;;;;;17606:14:0;;;;;;:6;:14;;;;;;17507:76;;-1:-1:-1;17606:14:0;;;:34;;-1:-1:-1;;;;;;17623:17:0;;;;;;:6;:17;;;;;;;;17606:34;:54;;;-1:-1:-1;17649:10:0;17642:18;;;;:6;:18;;;;;;;;17606:54;17602:473;;;17691:54;17706:6;17713:9;17723:6;17730;17737:7;17691:14;:54::i;:::-;17602:473;;;17801:9;;;;;;;17798:258;;;17860:9;-1:-1:-1;;;;;17844:28:0;17853:6;-1:-1:-1;;;;;17844:28:0;-1:-1:-1;;;;;;;;;;;17870:1:0;17844:28;;;;12790:25:1;;12778:2;12763:18;;12636:185;17844:28:0;;;;;;;;17899:7;;;;;16491:1875;;;:::o;17798:258::-;17991:14;;;;;;;17983:49;;;;-1:-1:-1;;;17983:49:0;;18094:2:1;17983:49:0;;;18076:21:1;18133:2;18113:18;;;18106:30;-1:-1:-1;;;18152:18:1;;;18145:53;18215:18;;17983:49:0;17892:347:1;17983:49:0;17406:670;;17385:968;;;18145:19;;18126:10;;-1:-1:-1;;;;;18137:27:0;;;18145:19;;18137:27;;:57;;-1:-1:-1;;;;;;18167:27:0;;13605:42;18167:27;18137:57;18232:19;;18126:68;;-1:-1:-1;18209:11:0;;-1:-1:-1;;;;;18221:30:0;;;18232:19;;18221:30;;:63;;-1:-1:-1;;;;;;18254:30:0;;13605:42;18254:30;18221:63;18209:75;;18299:52;18314:6;18321:9;18331:6;18338:5;18344:6;18299:14;:52::i;:::-;18106:247;;17385:968;16568:1798;;;16491:1875;;;:::o;11388:376::-;11458:4;11464;11481:19;11518:12;11481:50;;11542:21;11574:22;11607:21;11689:4;-1:-1:-1;;;;;11689:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;11718:38:0;;;;;;;-1:-1:-1;11388:376:0;-1:-1:-1;;;;;;11388:376:0:o;25512:1078::-;25616:4;:9;;25624:1;25616:9;25612:83;;;-1:-1:-1;;;;;25644:18:0;;;;;;:12;:18;;;;;;;;25636:51;;;;-1:-1:-1;;;25636:51:0;;19134:2:1;25636:51:0;;;19116:21:1;19173:2;19153:18;;;19146:30;-1:-1:-1;;;19192:18:1;;;19185:50;19252:18;;25636:51:0;18932:344:1;25636:51:0;25710:14;;-1:-1:-1;;;25710:14:0;;;;25709:15;25701:24;;;;;;25740:18;;;;;;;;:12;:18;;;;;;;;-1:-1:-1;;;;;25740:23:0;;;;;;;;;;;25732:47;;;;-1:-1:-1;;;25732:47:0;;16308:2:1;25732:47:0;;;16290:21:1;16347:2;16327:18;;;16320:30;-1:-1:-1;;;16366:18:1;;;16359:41;16417:18;;25732:47:0;16106:335:1;25732:47:0;25786:14;:21;;-1:-1:-1;;;;25786:21:0;-1:-1:-1;;;25786:21:0;;;-1:-1:-1;;;;;25839:31:0;;25786:21;25839:31;;;:25;:31;;;;;;25786:21;25839:31;25835:328;;;-1:-1:-1;;;;;;25890:14:0;;;;;;:8;:14;;;;;;;25913:18;;;25835:328;;;25954:17;25974:27;25990:4;25996;25974:15;:27::i;:::-;-1:-1:-1;;;;;26067:15:0;;;;;;:9;:15;;;;;;;;;26044:20;;;;;:14;:20;;;;;;;25954:47;;-1:-1:-1;26044:38:0;;;:::i;:::-;-1:-1:-1;;;;;26012:23:0;;;;;;:17;:23;;;;;;;;:29;;;;;;;;;;:70;;;;26102:14;;;:8;:14;;;;;:26;;26119:9;;26102:26;:::i;:::-;-1:-1:-1;;;;;26137:14:0;;26154:1;26137:14;;;:8;:14;;;;;:18;26093:35;-1:-1:-1;;25835:328:0;26173:11;26169:71;;-1:-1:-1;;26195:14:0;:22;;-1:-1:-1;;;;26195:22:0;;;-1:-1:-1;;25512:1078:0:o;26169:71::-;26262:6;26246:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;26299:16:0;;;26313:1;26299:16;;;;;;;;26275:21;;26299:16;;;;;;;;-1:-1:-1;;26332:14:0;;:21;;;-1:-1:-1;;;26332:21:0;;;;26275:40;;-1:-1:-1;;;;;;26332:14:0;;;;:19;;-1:-1:-1;26332:21:0;;;;;;;;;;;;;;:14;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26322:4;26327:1;26322:7;;;;;;;;:::i;:::-;;;;;;:31;-1:-1:-1;;;;;26322:31:0;;;-1:-1:-1;;;;;26322:31:0;;;;;26370:3;26360:4;26365:1;26360:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;26360:13:0;;;:7;;;;;;;;;:13;26380:14;;:126;;-1:-1:-1;;;26380:126:0;;:14;;;:65;;26461:6;;26380:126;;:14;;26478:4;;26484;;26490:15;;26380:126;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;26520:35:0;;;23293:25:1;;;-1:-1:-1;;;;;23354:32:1;;23349:2;23334:18;;23327:60;26520:35:0;;-1:-1:-1;23266:18:1;;-1:-1:-1;26520:35:0;;-1:-1:-1;23119:274:1;26520:35:0;;;;;;;;-1:-1:-1;;26562:14:0;:22;;-1:-1:-1;;;;26562:22:0;;;-1:-1:-1;;;25512:1078:0:o;23817:335::-;-1:-1:-1;;;;;23970:17:0;;23907:7;23970:17;;;:9;:17;;;;;;;;;23947:20;;;;;:14;:20;;;;;;23907:7;;23947:40;;;:::i;:::-;-1:-1:-1;;;;;24013:25:0;;;;;;:17;:25;;;;;;;;:31;;;;;;;;;;;23926:61;;-1:-1:-1;24000:44:0;;23996:58;;;24053:1;24046:8;;;;;23996:58;-1:-1:-1;;;;;24089:25:0;;;;;;:17;:25;;;;;;;;:31;;;;;;;;;;;-1:-1:-1;;;22145:5:0;24076:44;;:10;:44;:::i;:::-;24075:71;;;;:::i;:::-;24061:85;23817:335;-1:-1:-1;;;;23817:335:0:o;28458:397::-;28547:14;;28515:56;;28532:4;;-1:-1:-1;;;;;28547:14:0;28564:6;28515:8;:56::i;:::-;28602:16;;;28616:1;28602:16;;;;;;;;28578:21;;28602:16;;;;;;;;;;-1:-1:-1;28602:16:0;28578:40;;28643:4;28625;28630:1;28625:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;28625:23:0;;;:7;;;;;;;;;;:23;;;;28665:14;;:21;;;-1:-1:-1;;;28665:21:0;;;;:14;;;;;:19;;:21;;;;;28625:7;;28665:21;;;;;:14;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28655:4;28660:1;28655:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;28655:31:0;;;:7;;;;;;;;;:31;28693:14;;:156;;-1:-1:-1;;;28693:156:0;;:14;;;:65;;:156;;28767:6;;28693:14;;28792:4;;28813;;28827:15;;28693:156;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28861:345;28953:9;28939:10;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;29001:14:0;;28969:61;;28986:4;;-1:-1:-1;;;;;29001:14:0;29018:11;28969:8;:61::i;:::-;29037:14;;:163;;-1:-1:-1;;;29037:163:0;;29102:4;29037:163;;;12173:34:1;;;12223:18;;;12216:34;;;29037:14:0;12266:18:1;;;12259:34;;;12309:18;;;12302:34;12352:19;;;12345:44;29178:15:0;12405:19:1;;;12398:35;-1:-1:-1;;;;;29037:14:0;;;;:30;;29075:9;;12107:19:1;;29037:163:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;24158:1219::-;24256:13;;24218:22;;24273:3;;24244:25;;-1:-1:-1;;;24256:13:0;;;;24244:9;:25;:::i;:::-;24243:33;;;;:::i;:::-;24323:15;;24218:58;;-1:-1:-1;24283:24:0;;24342:3;;24311:27;;-1:-1:-1;;;24323:15:0;;;;24311:9;:27;:::i;:::-;24310:35;;;;:::i;:::-;24386:13;;24283:62;;-1:-1:-1;24352:18:0;;24403:3;;24374:25;;-1:-1:-1;;;24386:13:0;;;;24374:9;:25;:::i;:::-;24373:33;;;;:::i;:::-;24447:13;;24352:54;;-1:-1:-1;24413:18:0;;24464:3;;24435:25;;-1:-1:-1;;;24447:13:0;;;;24435:9;:25;:::i;:::-;24434:33;;;;:::i;:::-;24413:54;;24494:14;24474:16;;:34;;;;;;;:::i;:::-;;;;;;;;24537:16;24515:18;;:38;;;;;;;:::i;:::-;;;;-1:-1:-1;;24566:14:0;;24562:400;;24618:10;24591:23;;:37;;;;;;;:::i;:::-;;;;;;;;24662:10;24637:21;;:35;;;;;;;:::i;:::-;;;;-1:-1:-1;24681:19:0;;-1:-1:-1;24703:17:0;:15;:17::i;:::-;24681:39;-1:-1:-1;24733:16:0;24729:226;;24782:10;24762:16;;:30;;;;;;;:::i;:::-;;;;-1:-1:-1;24729:226:0;;-1:-1:-1;24729:226:0;;24892:11;24842:35;-1:-1:-1;;;24842:10:0;:35;:::i;:::-;24841:62;;;;:::i;:::-;24819:17;;;;:14;:17;;;:85;;:17;;;:85;;;;;:::i;:::-;;;;-1:-1:-1;;24915:16:0;;;;:13;:16;;;:30;;24935:10;;24915:16;:30;;24935:10;;24915:30;:::i;:::-;;;;-1:-1:-1;;24729:226:0;24582:380;24562:400;24974:14;;24970:400;;25026:10;24999:23;;:37;;;;;;;:::i;:::-;;;;;;;;25070:10;25045:21;;:35;;;;;;;:::i;:::-;;;;-1:-1:-1;25089:19:0;;-1:-1:-1;25111:17:0;:15;:17::i;:::-;25089:39;-1:-1:-1;25141:16:0;25137:226;;25190:10;25170:16;;:30;;;;;;;:::i;:::-;;;;-1:-1:-1;25137:226:0;;-1:-1:-1;25137:226:0;;25300:11;25250:35;-1:-1:-1;;;25250:10:0;:35;:::i;:::-;25249:62;;;;:::i;:::-;25242:1;25227:17;;;;:14;:17;;;:85;;:17;;;:85;;;;;:::i;:::-;;;;-1:-1:-1;;25337:1:0;25323:16;;;;:13;:16;;;:30;;25343:10;;25323:16;:30;;25343:10;;25323:30;:::i;:::-;;;;-1:-1:-1;;24990:380:0;24211:1166;;;;24158:1219;:::o;21499:378::-;-1:-1:-1;;;;;21652:17:0;;21628:21;21652:17;;;:9;:17;;;;;;21684:23;;;;21676:60;;;;-1:-1:-1;;;21676:60:0;;;;;;;:::i;:::-;21745:34;21758:6;21766;21774:4;21745:12;:34::i;:::-;21788;21798:9;21809:6;21817:4;21788:9;:34::i;:::-;21853:9;-1:-1:-1;;;;;21836:35:0;21845:6;-1:-1:-1;;;;;21836:35:0;-1:-1:-1;;;;;;;;;;;21864:6:0;21836:35;;;;12790:25:1;;12778:2;12763:18;;12636:185;21836:35:0;;;;;;;;21621:256;21499:378;;;;:::o;18555:2938::-;-1:-1:-1;;;;;18713:15:0;;;18700:10;18713:15;;;:7;:15;;;;;;;;;18762:20;;;;;:9;:20;;;;;;;18813:17;;;;;;18713:15;;;;;18845:23;;;;18837:60;;;;-1:-1:-1;;;18837:60:0;;;;;;;:::i;:::-;18904:9;18922:12;18943:52;18973:4;18980:6;18988;18943:21;:52::i;:::-;18922:74;;19009:6;19005:1360;;;-1:-1:-1;;;;;19031:29:0;;;;;;:21;:29;;;;;;;;19026:240;;-1:-1:-1;;;;;19093:17:0;;;;;;:9;:17;;;;;;19114:15;-1:-1:-1;19093:36:0;;:56;;-1:-1:-1;19133:16:0;;;;;;;19093:56;19073:120;;;;-1:-1:-1;;;19073:120:0;;22599:2:1;19073:120:0;;;22581:21:1;22638:2;22618:18;;;22611:30;-1:-1:-1;;;22657:18:1;;;22650:48;22715:18;;19073:120:0;22397:342:1;19073:120:0;19244:12;;19226:30;;:15;:30;:::i;:::-;-1:-1:-1;;;;;19206:17:0;;;;;;:9;:17;;;;;:50;19026:240;19294:9;;19284:6;:19;;19276:47;;;;-1:-1:-1;;;19276:47:0;;16997:2:1;19276:47:0;;;16979:21:1;17036:2;17016:18;;;17009:30;-1:-1:-1;;;17055:18:1;;;17048:45;17110:18;;19276:47:0;16795:339:1;19276:47:0;19407:4;19332:20;19389:24;;;:9;:24;;;;;;13683:42;19371:15;;;;13314:13;13254:1;13314:2;:13;:::i;:::-;13300:27;;:11;:27;:::i;:::-;19355:31;;;;:::i;:::-;:58;;;;:::i;:::-;19332:81;;19422:19;19468:12;;19461:3;19445:15;:19;;;;:::i;:::-;19444:36;;;;:::i;:::-;19422:58;;19502:14;19492:6;:24;19489:270;;19535:11;;-1:-1:-1;;;19535:11:0;;;;;-1:-1:-1;19489:270:0;;;19579:8;;;;;;;;;-1:-1:-1;;;;19601:21:0;;;;19598:152;;;19651:14;;;-1:-1:-1;;;19651:14:0;;;;;19642:23;;;;19639:100;;;19699:14;;:23;;19716:6;;-1:-1:-1;;;19699:14:0;;;;:23;:::i;:::-;19692:31;;:3;:31;:::i;:::-;19686:37;;19639:100;19017:749;;19005:1360;;;19776:5;19772:593;;;-1:-1:-1;;;;;19797:24:0;;;;;;:13;:24;;;;;;;;19792:122;;19871:12;;19842:25;19861:6;19842:16;:25;:::i;:::-;:41;;19834:70;;;;-1:-1:-1;;;19834:70:0;;;;;;;:::i;:::-;19928:7;;;;;;;;-1:-1:-1;19772:593:0;;;-1:-1:-1;;;;;19963:24:0;;;;;;:13;:24;;;;;;;;19958:122;;20037:12;;20008:25;20027:6;20008:16;:25;:::i;:::-;:41;;20000:70;;;;-1:-1:-1;;;20000:70:0;;;;;;;:::i;:::-;20125:12;;20096:25;20115:6;20096:16;:25;:::i;:::-;:41;;20088:70;;;;-1:-1:-1;;;20088:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20174:29:0;;;;;;:21;:29;;;;;;;;20169:161;;-1:-1:-1;;;;;20234:17:0;;;;;;:9;:17;;;;;;20255:15;-1:-1:-1;20234:36:0;;:56;;-1:-1:-1;20274:16:0;;;;;;;20234:56;20214:116;;;;-1:-1:-1;;;20214:116:0;;20882:2:1;20214:116:0;;;20864:21:1;20921:2;20901:18;;;20894:30;-1:-1:-1;;;20940:18:1;;;20933:44;20994:18;;20214:116:0;20680:338:1;20214:116:0;20345:12;;-1:-1:-1;;;20345:12:0;;;;;-1:-1:-1;19772:593:0;20396:19;;-1:-1:-1;;;;;20386:29:0;;;20396:19;;20386:29;;;;20385:61;;-1:-1:-1;20429:16:0;;;;20428:17;20385:61;:102;;;;-1:-1:-1;20459:27:0;;;;20458:28;20385:102;:119;;;;;20498:6;20385:119;20373:248;;;20553:12;;20543:4;20525:24;;;;:9;:24;;;;;;:40;20521:93;;20578:26;20597:6;20578:18;:26::i;:::-;-1:-1:-1;;;;;20704:26:0;;20627;20704;;;:18;:26;;;;;;20627;;20704;;20699:84;;-1:-1:-1;20762:13:0;;-1:-1:-1;;;20762:13:0;;;;20699:84;-1:-1:-1;;;;;20794:28:0;;;;;;:20;:28;;;;;;;;20789:90;;20856:15;;-1:-1:-1;;;20856:15:0;;;;;-1:-1:-1;20789:90:0;20885:14;20910:9;;;20906:118;;-1:-1:-1;20941:13:0;;-1:-1:-1;;;20941:13:0;;;;20906:118;;;20972:4;:9;;20980:1;20972:9;20968:56;;;-1:-1:-1;21003:13:0;;-1:-1:-1;;;21003:13:0;;;;20968:56;21219:13;;21032:21;;21056:183;;21078:6;;21093:3;;21219:13;-1:-1:-1;;;21219:13:0;;;;;-1:-1:-1;;;21194:13:0;;;;;21162:20;;21107:43;;21132:18;;-1:-1:-1;;;21107:13:0;;;:43;:::i;:::-;:75;;;;:::i;:::-;:100;;;;:::i;:::-;:125;;;;:::i;:::-;21056:13;:183::i;:::-;21032:207;-1:-1:-1;21246:19:0;21268:24;21032:207;21268:6;:24;:::i;:::-;21246:46;;21301:34;21314:6;21322;21330:4;21301:12;:34::i;:::-;21362:4;21344:24;;;;:9;:24;;;;;:41;;21372:13;;21344:24;:41;;21372:13;;21344:41;:::i;:::-;;;;-1:-1:-1;21394:39:0;;-1:-1:-1;21404:9:0;21415:11;21428:4;21394:9;:39::i;:::-;21464:9;-1:-1:-1;;;;;21447:40:0;21456:6;-1:-1:-1;;;;;21447:40:0;-1:-1:-1;;;;;;;;;;;21475:11:0;21447:40;;;;12790:25:1;;12778:2;12763:18;;12636:185;21447:40:0;;;;;;;;18693:2800;;;;;;;;;;18555:2938;;;;;:::o;23361:450::-;-1:-1:-1;;;;;23480:15:0;;23460:17;23480:15;;;:9;:15;;;;;;:24;;23498:6;;23480:24;:::i;:::-;-1:-1:-1;;;;;23517:31:0;;;;;;:25;:31;;;;;;23460:44;;-1:-1:-1;23517:31:0;;23513:96;;;-1:-1:-1;;;;;23559:15:0;;;;;;;:9;:15;;;;;:27;;;;-1:-1:-1;;23361:450:0:o;23513:96::-;23617:15;23635:27;23651:4;23657;23635:15;:27::i;:::-;-1:-1:-1;;;;;23671:15:0;;;;;;:9;:15;;;;;;;;:27;;;23739:20;;;;;:14;:20;;;;;;23617:45;;-1:-1:-1;23739:32:0;;23689:9;;23739:32;:::i;:::-;-1:-1:-1;;;;;23707:23:0;;;;;;:17;:23;;;;;;;;:29;;;;;;;;;;:64;;;;23780:14;;;:8;:14;;;;;;:25;;23798:7;;23707:23;23780:25;;23798:7;;23780:25;:::i;:::-;;;;-1:-1:-1;;;;;;;23361:450:0:o;22908:447::-;-1:-1:-1;;;;;23024:15:0;;23004:17;23024:15;;;:9;:15;;;;;;:24;;23042:6;;23024:24;:::i;:::-;-1:-1:-1;;;;;23061:31:0;;;;;;:25;:31;;;;;;23004:44;;-1:-1:-1;23061:31:0;;23057:96;;;-1:-1:-1;;;;;23103:15:0;;;;;;;:9;:15;;;;;:27;;;;-1:-1:-1;;22908:447:0:o;23057:96::-;23161:15;23179:27;23195:4;23201;23179:15;:27::i;:::-;23247:20;;;;;;;:14;:20;;;;;;23161:45;;-1:-1:-1;23247:32:0;;23270:9;;23247:32;:::i;:::-;-1:-1:-1;;;;;23215:23:0;;;;;;:17;:23;;;;;;;;:29;;;;;;;;;;:64;;;;23288:14;;;:8;:14;;;;;;:25;;23306:7;;23215:23;23288:25;;23306:7;;23288:25;:::i;:::-;;;;-1:-1:-1;;;;;;;;23322:15:0;;;;;;;:9;:15;;;;;:27;;;;-1:-1:-1;;22908:447:0:o;21883:174::-;21993:7;22046:5;22032:10;22017:25;;22026:3;22017:12;;:6;:12;;;;:::i;:::-;:25;;;;:::i;14:134:1:-;82:20;;111:31;82:20;111:31;:::i;:::-;14:134;;;:::o;153:367::-;216:8;226:6;280:3;273:4;265:6;261:17;257:27;247:55;;298:1;295;288:12;247:55;-1:-1:-1;321:20:1;;364:18;353:30;;350:50;;;396:1;393;386:12;350:50;433:4;425:6;421:17;409:29;;493:3;486:4;476:6;473:1;469:14;461:6;457:27;453:38;450:47;447:67;;;510:1;507;500:12;447:67;153:367;;;;;:::o;525:919::-;579:5;632:3;625:4;617:6;613:17;609:27;599:55;;650:1;647;640:12;599:55;686:6;673:20;712:4;735:18;772:2;768;765:10;762:36;;;778:18;;:::i;:::-;824:2;821:1;817:10;856:2;850:9;919:2;915:7;910:2;906;902:11;898:25;890:6;886:38;974:6;962:10;959:22;954:2;942:10;939:18;936:46;933:72;;;985:18;;:::i;:::-;1021:2;1014:22;1071:18;;;1105:15;;;;-1:-1:-1;1140:15:1;;;1174;;;1170:24;;1167:33;-1:-1:-1;1164:53:1;;;1213:1;1210;1203:12;1164:53;1235:1;1226:10;;1245:169;1259:2;1256:1;1253:9;1245:169;;;1316:23;1335:3;1316:23;:::i;:::-;1304:36;;1360:12;;;;1277:1;1270:9;;;;;1392:12;;1245:169;;;-1:-1:-1;1432:6:1;525:919;-1:-1:-1;;;;;;;525:919:1:o;1449:177::-;1528:13;;-1:-1:-1;;;;;1570:31:1;;1560:42;;1550:70;;1616:1;1613;1606:12;1631:156;1697:20;;1757:4;1746:16;;1736:27;;1726:55;;1777:1;1774;1767:12;1792:247;1851:6;1904:2;1892:9;1883:7;1879:23;1875:32;1872:52;;;1920:1;1917;1910:12;1872:52;1959:9;1946:23;1978:31;2003:5;1978:31;:::i;2044:251::-;2114:6;2167:2;2155:9;2146:7;2142:23;2138:32;2135:52;;;2183:1;2180;2173:12;2135:52;2215:9;2209:16;2234:31;2259:5;2234:31;:::i;2300:388::-;2368:6;2376;2429:2;2417:9;2408:7;2404:23;2400:32;2397:52;;;2445:1;2442;2435:12;2397:52;2484:9;2471:23;2503:31;2528:5;2503:31;:::i;:::-;2553:5;-1:-1:-1;2610:2:1;2595:18;;2582:32;2623:33;2582:32;2623:33;:::i;:::-;2675:7;2665:17;;;2300:388;;;;;:::o;2693:456::-;2770:6;2778;2786;2839:2;2827:9;2818:7;2814:23;2810:32;2807:52;;;2855:1;2852;2845:12;2807:52;2894:9;2881:23;2913:31;2938:5;2913:31;:::i;:::-;2963:5;-1:-1:-1;3020:2:1;3005:18;;2992:32;3033:33;2992:32;3033:33;:::i;:::-;2693:456;;3085:7;;-1:-1:-1;;;3139:2:1;3124:18;;;;3111:32;;2693:456::o;3154:382::-;3219:6;3227;3280:2;3268:9;3259:7;3255:23;3251:32;3248:52;;;3296:1;3293;3286:12;3248:52;3335:9;3322:23;3354:31;3379:5;3354:31;:::i;:::-;3404:5;-1:-1:-1;3461:2:1;3446:18;;3433:32;3474:30;3433:32;3474:30;:::i;3541:315::-;3609:6;3617;3670:2;3658:9;3649:7;3645:23;3641:32;3638:52;;;3686:1;3683;3676:12;3638:52;3725:9;3712:23;3744:31;3769:5;3744:31;:::i;:::-;3794:5;3846:2;3831:18;;;;3818:32;;-1:-1:-1;;;3541:315:1:o;3861:450::-;3935:6;3943;3951;4004:2;3992:9;3983:7;3979:23;3975:32;3972:52;;;4020:1;4017;4010:12;3972:52;4059:9;4046:23;4078:31;4103:5;4078:31;:::i;:::-;4128:5;-1:-1:-1;4180:2:1;4165:18;;4152:32;;-1:-1:-1;4236:2:1;4221:18;;4208:32;4249:30;4208:32;4249:30;:::i;:::-;4298:7;4288:17;;;3861:450;;;;;:::o;4316:317::-;4382:6;4390;4443:2;4431:9;4422:7;4418:23;4414:32;4411:52;;;4459:1;4456;4449:12;4411:52;4498:9;4485:23;4517:31;4542:5;4517:31;:::i;:::-;4567:5;-1:-1:-1;4591:36:1;4623:2;4608:18;;4591:36;:::i;:::-;4581:46;;4316:317;;;;;:::o;4638:770::-;4757:6;4765;4773;4781;4834:2;4822:9;4813:7;4809:23;4805:32;4802:52;;;4850:1;4847;4840:12;4802:52;4890:9;4877:23;4919:18;4960:2;4952:6;4949:14;4946:34;;;4976:1;4973;4966:12;4946:34;5015:70;5077:7;5068:6;5057:9;5053:22;5015:70;:::i;:::-;5104:8;;-1:-1:-1;4989:96:1;-1:-1:-1;5192:2:1;5177:18;;5164:32;;-1:-1:-1;5208:16:1;;;5205:36;;;5237:1;5234;5227:12;5205:36;;5276:72;5340:7;5329:8;5318:9;5314:24;5276:72;:::i;:::-;4638:770;;;;-1:-1:-1;5367:8:1;-1:-1:-1;;;;4638:770:1:o;5413:348::-;5497:6;5550:2;5538:9;5529:7;5525:23;5521:32;5518:52;;;5566:1;5563;5556:12;5518:52;5606:9;5593:23;5639:18;5631:6;5628:30;5625:50;;;5671:1;5668;5661:12;5625:50;5694:61;5747:7;5738:6;5727:9;5723:22;5694:61;:::i;5766:551::-;5868:6;5876;5884;5937:2;5925:9;5916:7;5912:23;5908:32;5905:52;;;5953:1;5950;5943:12;5905:52;5993:9;5980:23;6026:18;6018:6;6015:30;6012:50;;;6058:1;6055;6048:12;6012:50;6081:61;6134:7;6125:6;6114:9;6110:22;6081:61;:::i;:::-;6071:71;;;6192:2;6181:9;6177:18;6164:32;6205:31;6230:5;6205:31;:::i;6322:241::-;6378:6;6431:2;6419:9;6410:7;6406:23;6402:32;6399:52;;;6447:1;6444;6437:12;6399:52;6486:9;6473:23;6505:28;6527:5;6505:28;:::i;6568:245::-;6635:6;6688:2;6676:9;6667:7;6663:23;6659:32;6656:52;;;6704:1;6701;6694:12;6656:52;6736:9;6730:16;6755:28;6777:5;6755:28;:::i;6818:450::-;6905:6;6913;6921;6974:2;6962:9;6953:7;6949:23;6945:32;6942:52;;;6990:1;6987;6980:12;6942:52;7013:40;7043:9;7013:40;:::i;:::-;7003:50;;7072:49;7117:2;7106:9;7102:18;7072:49;:::i;:::-;7062:59;;7164:2;7153:9;7149:18;7143:25;7208:10;7201:5;7197:22;7190:5;7187:33;7177:61;;7234:1;7231;7224:12;7273:180;7332:6;7385:2;7373:9;7364:7;7360:23;7356:32;7353:52;;;7401:1;7398;7391:12;7353:52;-1:-1:-1;7424:23:1;;7273:180;-1:-1:-1;7273:180:1:o;7458:184::-;7528:6;7581:2;7569:9;7560:7;7556:23;7552:32;7549:52;;;7597:1;7594;7587:12;7549:52;-1:-1:-1;7620:16:1;;7458:184;-1:-1:-1;7458:184:1:o;7647:248::-;7715:6;7723;7776:2;7764:9;7755:7;7751:23;7747:32;7744:52;;;7792:1;7789;7782:12;7744:52;-1:-1:-1;;7815:23:1;;;7885:2;7870:18;;;7857:32;;-1:-1:-1;7647:248:1:o;7900:306::-;7988:6;7996;8004;8057:2;8045:9;8036:7;8032:23;8028:32;8025:52;;;8073:1;8070;8063:12;8025:52;8102:9;8096:16;8086:26;;8152:2;8141:9;8137:18;8131:25;8121:35;;8196:2;8185:9;8181:18;8175:25;8165:35;;7900:306;;;;;:::o;8211:182::-;8268:6;8321:2;8309:9;8300:7;8296:23;8292:32;8289:52;;;8337:1;8334;8327:12;8289:52;8360:27;8377:9;8360:27;:::i;8398:317::-;8464:6;8472;8525:2;8513:9;8504:7;8500:23;8496:32;8493:52;;;8541:1;8538;8531:12;8493:52;8564:27;8581:9;8564:27;:::i;8720:452::-;8792:6;8800;8808;8861:2;8849:9;8840:7;8836:23;8832:32;8829:52;;;8877:1;8874;8867:12;8829:52;8900:27;8917:9;8900:27;:::i;:::-;8890:37;;8977:2;8966:9;8962:18;8949:32;8990:31;9015:5;8990:31;:::i;:::-;9040:5;-1:-1:-1;9097:2:1;9082:18;;9069:32;9110:30;9069:32;9110:30;:::i;9177:311::-;9240:6;9248;9301:2;9289:9;9280:7;9276:23;9272:32;9269:52;;;9317:1;9314;9307:12;9269:52;9340:27;9357:9;9340:27;:::i;9493:393::-;9571:6;9579;9587;9595;9648:3;9636:9;9627:7;9623:23;9619:33;9616:53;;;9665:1;9662;9655:12;9616:53;9688:27;9705:9;9688:27;:::i;:::-;9678:37;;9734:36;9766:2;9755:9;9751:18;9734:36;:::i;:::-;9724:46;;9789:36;9821:2;9810:9;9806:18;9789:36;:::i;:::-;9779:46;;9844:36;9876:2;9865:9;9861:18;9844:36;:::i;:::-;9834:46;;9493:393;;;;;;;:::o;9891:464::-;9976:6;9984;9992;10000;10008;10061:3;10049:9;10040:7;10036:23;10032:33;10029:53;;;10078:1;10075;10068:12;10029:53;10101:27;10118:9;10101:27;:::i;:::-;10091:37;;10147:36;10179:2;10168:9;10164:18;10147:36;:::i;:::-;10137:46;;10202:36;10234:2;10223:9;10219:18;10202:36;:::i;:::-;10192:46;;10257:36;10289:2;10278:9;10274:18;10257:36;:::i;:::-;10247:46;;10312:37;10344:3;10333:9;10329:19;10312:37;:::i;:::-;10302:47;;9891:464;;;;;;;;:::o;10360:461::-;10413:3;10451:5;10445:12;10478:6;10473:3;10466:19;10504:4;10533:2;10528:3;10524:12;10517:19;;10570:2;10563:5;10559:14;10591:1;10601:195;10615:6;10612:1;10609:13;10601:195;;;10680:13;;-1:-1:-1;;;;;10676:39:1;10664:52;;10736:12;;;;10771:15;;;;10712:1;10630:9;10601:195;;;-1:-1:-1;10812:3:1;;10360:461;-1:-1:-1;;;;;10360:461:1:o;12826:510::-;13097:6;13086:9;13079:25;13140:3;13135:2;13124:9;13120:18;13113:31;13060:4;13161:57;13213:3;13202:9;13198:19;13190:6;13161:57;:::i;:::-;-1:-1:-1;;;;;13254:32:1;;;;13249:2;13234:18;;13227:60;-1:-1:-1;13318:2:1;13303:18;13296:34;13153:65;12826:510;-1:-1:-1;;12826:510:1:o;13341:597::-;13453:4;13482:2;13511;13500:9;13493:21;13543:6;13537:13;13586:6;13581:2;13570:9;13566:18;13559:34;13611:1;13621:140;13635:6;13632:1;13629:13;13621:140;;;13730:14;;;13726:23;;13720:30;13696:17;;;13715:2;13692:26;13685:66;13650:10;;13621:140;;;13779:6;13776:1;13773:13;13770:91;;;13849:1;13844:2;13835:6;13824:9;13820:22;13816:31;13809:42;13770:91;-1:-1:-1;13922:2:1;13901:15;-1:-1:-1;;13897:29:1;13882:45;;;;13929:2;13878:54;;13341:597;-1:-1:-1;;;13341:597:1:o;14290:348::-;14492:2;14474:21;;;14531:2;14511:18;;;14504:30;-1:-1:-1;;;14565:2:1;14550:18;;14543:54;14629:2;14614:18;;14290:348::o;18244:330::-;18446:2;18428:21;;;18485:1;18465:18;;;18458:29;-1:-1:-1;;;18518:2:1;18503:18;;18496:37;18565:2;18550:18;;18244:330::o;20335:340::-;20537:2;20519:21;;;20576:2;20556:18;;;20549:30;-1:-1:-1;;;20610:2:1;20595:18;;20588:46;20666:2;20651:18;;20335:340::o;21023:332::-;21225:2;21207:21;;;21264:1;21244:18;;;21237:29;-1:-1:-1;;;21297:2:1;21282:18;;21275:39;21346:2;21331:18;;21023:332::o;23398:582::-;23697:6;23686:9;23679:25;23740:6;23735:2;23724:9;23720:18;23713:34;23783:3;23778:2;23767:9;23763:18;23756:31;23660:4;23804:57;23856:3;23845:9;23841:19;23833:6;23804:57;:::i;:::-;-1:-1:-1;;;;;23897:32:1;;;;23892:2;23877:18;;23870:60;-1:-1:-1;23961:3:1;23946:19;23939:35;23796:65;23398:582;-1:-1:-1;;;23398:582:1:o;25111:128::-;25151:3;25182:1;25178:6;25175:1;25172:13;25169:39;;;25188:18;;:::i;:::-;-1:-1:-1;25224:9:1;;25111:128::o;25244:204::-;25282:3;25318:4;25315:1;25311:12;25350:4;25347:1;25343:12;25385:3;25379:4;25375:14;25370:3;25367:23;25364:49;;;25393:18;;:::i;:::-;25429:13;;25244:204;-1:-1:-1;;;25244:204:1:o;25453:217::-;25493:1;25519;25509:132;;25563:10;25558:3;25554:20;25551:1;25544:31;25598:4;25595:1;25588:15;25626:4;25623:1;25616:15;25509:132;-1:-1:-1;25655:9:1;;25453:217::o;25675:422::-;25764:1;25807:5;25764:1;25821:270;25842:7;25832:8;25829:21;25821:270;;;25901:4;25897:1;25893:6;25889:17;25883:4;25880:27;25877:53;;;25910:18;;:::i;:::-;25960:7;25950:8;25946:22;25943:55;;;25980:16;;;;25943:55;26059:22;;;;26019:15;;;;25821:270;;;25825:3;25675:422;;;;;:::o;26102:140::-;26160:5;26189:47;26230:4;26220:8;26216:19;26210:4;26296:5;26326:8;26316:80;;-1:-1:-1;26367:1:1;26381:5;;26316:80;26415:4;26405:76;;-1:-1:-1;26452:1:1;26466:5;;26405:76;26497:4;26515:1;26510:59;;;;26583:1;26578:130;;;;26490:218;;26510:59;26540:1;26531:10;;26554:5;;;26578:130;26615:3;26605:8;26602:17;26599:43;;;26622:18;;:::i;:::-;-1:-1:-1;;26678:1:1;26664:16;;26693:5;;26490:218;;26792:2;26782:8;26779:16;26773:3;26767:4;26764:13;26760:36;26754:2;26744:8;26741:16;26736:2;26730:4;26727:12;26723:35;26720:77;26717:159;;;-1:-1:-1;26829:19:1;;;26861:5;;26717:159;26908:34;26933:8;26927:4;26908:34;:::i;:::-;26978:6;26974:1;26970:6;26966:19;26957:7;26954:32;26951:58;;;26989:18;;:::i;:::-;27027:20;;26247:806;-1:-1:-1;;;26247:806:1:o;27058:168::-;27098:7;27164:1;27160;27156:6;27152:14;27149:1;27146:21;27141:1;27134:9;27127:17;27123:45;27120:71;;;27171:18;;:::i;:::-;-1:-1:-1;27211:9:1;;27058:168::o;27231:238::-;27269:7;27309:4;27306:1;27302:12;27341:4;27338:1;27334:12;27401:3;27395:4;27391:14;27386:3;27383:23;27376:3;27369:11;27362:19;27358:49;27355:75;;;27410:18;;:::i;27474:125::-;27514:4;27542:1;27539;27536:8;27533:34;;;27547:18;;:::i;:::-;-1:-1:-1;27584:9:1;;27474:125::o;27604:195::-;27642:4;27679;27676:1;27672:12;27711:4;27708:1;27704:12;27736:3;27731;27728:12;27725:38;;;27743:18;;:::i;:::-;27780:13;;;27604:195;-1:-1:-1;;;27604:195:1:o;27804:135::-;27843:3;-1:-1:-1;;27864:17:1;;27861:43;;;27884:18;;:::i;:::-;-1:-1:-1;27931:1:1;27920:13;;27804:135::o;27944:127::-;28005:10;28000:3;27996:20;27993:1;27986:31;28036:4;28033:1;28026:15;28060:4;28057:1;28050:15;28076:127;28137:10;28132:3;28128:20;28125:1;28118:31;28168:4;28165:1;28158:15;28192:4;28189:1;28182:15;28208:127;28269:10;28264:3;28260:20;28257:1;28250:31;28300:4;28297:1;28290:15;28324:4;28321:1;28314:15;28340:131;-1:-1:-1;;;;;28415:31:1;;28405:42;;28395:70;;28461:1;28458;28451:12;28476:118;28562:5;28555:13;28548:21;28541:5;28538:32;28528:60;;28584:1;28581;28574:12
Swarm Source
ipfs://1eb5892d50b0b1db28689f942c39fa41939dafa68e4bf85ffb0e5618c6ca5580
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $2,538.33 | 0.1 | $253.83 |
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.