ERC-20
Overview
Max Total Supply
1,000,000,000 WHAT
Holders
80
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
2,357,029.787945650406866323 WHATValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
WHAT
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-11-14 */ // SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.9.0; abstract contract Context { function _msgSender() internal view returns (address payable) { return payable(msg.sender); } function _msgData() internal view returns (bytes memory) { this; return msg.data; } } interface IERC20Upgradeable { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library Address { function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address lpPair, uint); function getPair(address tokenA, address tokenB) external view returns (address lpPair); function createPair(address tokenA, address tokenB) external returns (address lpPair); } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract WHAT is Context, IERC20Upgradeable { address private _owner; // address of the contract owner. mapping (address => uint256) private _rOd; mapping (address => uint256) private _tOd; mapping (address => bool) lpPs; uint256 private tSLP = 0; mapping (address => mapping (address => uint256)) private _als; mapping (address => bool) private _iEFF; mapping (address => bool) private _iE; address[] private _excluded; mapping (address => bool) private _lH; uint256 private sS; string private _nm; string private _s; uint256 public _reF = 0; uint256 public _liF = 0; uint256 public _maF = 2000; uint256 public _bReF = _reF; uint256 public _bLiF = _liF; uint256 public _bMaF = _maF; uint256 public _sLiF = 0; uint256 public _sReF = 0; uint256 public _sMaF = 2000; uint256 public _tReF = 0; uint256 public _tLiF = 0; uint256 public _tMaF = 0; uint256 private maxReF = 1000; uint256 private maxLiF = 1000; uint256 private maxMaF = 2200; uint256 public _liquidityRatio = 0; uint256 public _mR = 2000; uint256 private masterTaxDivisor = 10000; uint256 private MaS = 20; uint256 private DeS = 20; uint256 private VaD = 60; uint256 private constant MAX = ~uint256(0); uint8 private _decimals; uint256 private _decimalsMul; uint256 private _tTotal; uint256 private _rTotal; uint256 private _tFeeTotal; IUniswapV2Router02 public dexRouter; address public lpPair; address public _routerAddress; address public DEAD = 0x000000000000000000000000000000000000dEaD; address public ZERO = 0x0000000000000000000000000000000000000000; address payable private _dW; address payable private _marketWallet; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = false; uint256 private _mTA; uint256 public mTAUI; uint256 private _mWS; uint256 public mWSUI; uint256 private swapThreshold; uint256 private swapAmount; bool Risen = false; bool public _LiqHasBeenAdded = false; uint256 private _liqAddBlock = 0; uint256 private _liqAddStamp = 0; bool private sameBlockActive = true; mapping (address => uint256) private lastTrade; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); event SniperCaught(address sniperAddress); uint256 Planted; bool rft = false; modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } constructor () payable { _owner = msg.sender; if (block.chainid == 56) { _routerAddress = 0x10ED43C718714eb63d5aA57B78B54704E256024E; } else if (block.chainid == 97) { _routerAddress = 0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3; } else if (block.chainid == 1 || block.chainid == 4 || block.chainid == 3) { _routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; } else { revert(); } _iEFF[owner()] = true; _iEFF[address(this)] = true; _lH[owner()] = true; _approve(_msgSender(), _routerAddress, MAX); _approve(address(this), _routerAddress, MAX); } receive() external payable {} function Rest(address payable setMarketWallet, address payable setDW, string memory _tokenname, string memory _tokensymbol) external onlyOwner { require(!rft); _marketWallet = payable(setMarketWallet); _dW = payable(setDW); _iEFF[_marketWallet] = true; _iEFF[_dW] = true; _nm = _tokenname; _s = _tokensymbol; sS = 1_000_000_000; if (sS < 100000000000) { _decimals = 18; _decimalsMul = _decimals; } else { _decimals = 9; _decimalsMul = _decimals; } _tTotal = sS * (10**_decimalsMul); _rTotal = (MAX - (MAX % _tTotal)); dexRouter = IUniswapV2Router02(_routerAddress); lpPair = IUniswapV2Factory(dexRouter.factory()).createPair(dexRouter.WETH(), address(this)); lpPs[lpPair] = true; _als[address(this)][address(dexRouter)] = type(uint256).max; _mTA = (_tTotal * 1000) / 100000; mTAUI = (sS * 500) / 100000; _mWS = (_tTotal * 10) / 1000; mWSUI = (sS * 10) / 1000; swapThreshold = (_tTotal * 5) / 10000; swapAmount = (_tTotal * 25) / 10000; approve(_routerAddress, type(uint256).max); rft = true; _rOd[owner()] = _rTotal; emit Transfer(ZERO, owner(), _tTotal); _approve(address(this), address(dexRouter), type(uint256).max); _t(owner(), address(this), balanceOf(owner())); dexRouter.addLiquidityETH{value: address(this).balance}( address(this), balanceOf(address(this)), 0, 0, owner(), block.timestamp ); Planted = block.number; } function owner() public view returns (address) { return _owner; } function transferOwner(address newOwner) external onlyOwner() { require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address."); require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address."); setExcludedFromFee(_owner, false); setExcludedFromFee(newOwner, true); setExcludedFromReward(newOwner, true); if (_dW == payable(_owner)) _dW = payable(newOwner); _als[_owner][newOwner] = balanceOf(_owner); if(balanceOf(_owner) > 0) { _t(_owner, newOwner, balanceOf(_owner)); } _owner = newOwner; emit OwnershipTransferred(_owner, newOwner); } function renounceOwnership() public virtual onlyOwner() { setExcludedFromFee(_owner, false); _owner = address(0); emit OwnershipTransferred(_owner, address(0)); } function totalSupply() external view override returns (uint256) { return _tTotal; } function decimals() external view returns (uint8) { return _decimals; } function symbol() external view returns (string memory) { return _s; } function name() external view returns (string memory) { return _nm; } function getOwner() external view returns (address) { return owner(); } function allowance(address holder, address spender) external view override returns (uint256) { return _als[holder][spender]; } function balanceOf(address account) public view override returns (uint256) { if (_iE[account]) return _tOd[account]; return tokenFromReflection(_rOd[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _t(_msgSender(), recipient, amount); return true; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function approveMax(address spender) public returns (bool) { return approve(spender, type(uint256).max); } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _t(sender, recipient, amount); _approve(sender, _msgSender(), _als[sender][_msgSender()] - amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _als[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _als[_msgSender()][spender] - subtractedValue); return true; } function setNewRouter(address newRouter) external onlyOwner() { IUniswapV2Router02 _newRouter = IUniswapV2Router02(newRouter); address g_p = IUniswapV2Factory(_newRouter.factory()).getPair(address(this), _newRouter.WETH()); if (g_p == address(0)) { lpPair = IUniswapV2Factory(_newRouter.factory()).createPair(address(this), _newRouter.WETH()); } else { lpPair = g_p; } dexRouter = _newRouter; _approve(address(this), newRouter, MAX); } function setLpPair(address pair, bool enabled) external onlyOwner { if (enabled == false) { lpPs[pair] = false; } else { if (tSLP != 0) { require(block.timestamp - tSLP > 1 weeks, "Cannot set a new pair this week!"); } lpPs[pair] = true; tSLP = block.timestamp; } } function isExcludedFromReward(address account) public view returns (bool) { return _iE[account]; } function iEFF(address account) public view returns(bool) { return _iEFF[account]; } function setTB(uint256 reflect, uint256 liquidity, uint256 marketing) external onlyOwner { require(reflect <= maxReF && liquidity <= maxLiF && marketing <= maxMaF ); require(reflect + liquidity + marketing <= 4900); _bReF = reflect; _bLiF = liquidity; _bMaF = marketing; } function setTS(uint256 reflect, uint256 liquidity, uint256 marketing) external onlyOwner { require(reflect <= maxReF && liquidity <= maxLiF && marketing <= maxMaF ); require(reflect + liquidity + marketing <= 4900); _sReF = reflect; _sLiF = liquidity; _sMaF = marketing; } function setTT(uint256 reflect, uint256 liquidity, uint256 marketing) external onlyOwner { require(reflect <= maxReF && liquidity <= maxLiF && marketing <= maxMaF ); require(reflect + liquidity + marketing <= 4900); _tReF = reflect; _tLiF = liquidity; _tMaF = marketing; } function setValues(uint256 ms, uint256 ds, uint256 vd) external onlyOwner { MaS = ms; DeS = ds; VaD = vd; } function setRatios(uint256 liquidity, uint256 marketing) external onlyOwner { _liquidityRatio = liquidity; _mR = marketing; } function setMTP(uint256 percent, uint256 divisor) external onlyOwner { uint256 check = (_tTotal * percent) / divisor; require(check >= (_tTotal / 1000), "Must be above 0.1% of total supply."); _mTA = check; mTAUI = (sS * percent) / divisor; } function setMWS(uint256 p, uint256 d) external onlyOwner { uint256 check = (_tTotal * p) / d; require(check >= (_tTotal / 1000), "Must be above 0.1% of total supply."); _mWS = check; mWSUI = (sS * p) / d; } function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner { swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor; swapAmount = (_tTotal * amountPercent) / amountDivisor; } function setNewMarketWallet(address payable newWallet) external onlyOwner { require(_marketWallet != newWallet, "Wallet already set!"); _marketWallet = payable(newWallet); } function setNewDW(address payable newWallet) external onlyOwner { require(_dW != newWallet, "Wallet already set!"); _dW = payable(newWallet); } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } function setExcludedFromFee(address account, bool enabled) public onlyOwner { _iEFF[account] = enabled; } function setExcludedFromReward(address account, bool enabled) public onlyOwner { if (enabled == true) { require(!_iE[account], "Account is already excluded."); if(_rOd[account] > 0) { _tOd[account] = tokenFromReflection(_rOd[account]); } _iE[account] = true; _excluded.push(account); } else if (enabled == false) { require(_iE[account], "Account is already included."); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOd[account] = 0; _iE[account] = false; _excluded.pop(); break; } } } } function totalFees() public view returns (uint256) { return _tFeeTotal; } function _hasLimits(address from, address to) internal view returns (bool) { return from != owner() && to != owner() && !_lH[to] && !_lH[from] && to != DEAD && to != address(0) && from != address(this); } function tokenFromReflection(uint256 rAmount) public view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount / currentRate; } function _approve(address sender, address spender, uint256 amount) internal { require(sender != address(0), "Cannot approve from the zero address"); require(spender != address(0), "Cannot approve to the zero address"); _als[sender][spender] = amount; emit Approval(sender, spender, amount); } function _t(address from, address to, uint256 amount) internal returns (bool) { require(from != address(0), "Cannot transfer from the zero address"); require(to != address(0), "Cannot transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if(_hasLimits(from, to)) { if(!Risen) { revert("Trading not yet enabled!"); } if (sameBlockActive) { if (lpPs[from]){ require(lastTrade[to] != block.number + 1); lastTrade[to] = block.number; } else { require(lastTrade[from] != block.number + 1); lastTrade[from] = block.number; } } require(amount <= _mTA, "Transfer exceeds the maxTxAmount."); if(to != _routerAddress && !lpPs[to]) { require(balanceOf(to) + amount <= _mWS, "Transfer exceeds the maxWalletSize."); } } bool takeFee = true; if(_iEFF[from] || _iEFF[to]){ takeFee = false; } if (lpPs[to]) { if (!inSwapAndLiquify && swapAndLiquifyEnabled ) { uint256 contractTokenBalance = balanceOf(address(this)); if (contractTokenBalance >= swapThreshold) { if(contractTokenBalance >= swapAmount) { contractTokenBalance = swapAmount; } swapAndLiquify(contractTokenBalance); } } } return _ftt(from, to, amount, takeFee); } function swapAndLiquify(uint256 contractTokenBalance) internal lockTheSwap { if (_liquidityRatio + _mR == 0) return; uint256 toLiquify = ((contractTokenBalance * _liquidityRatio) / (_liquidityRatio + _mR)) / 2; uint256 toSwapForEth = contractTokenBalance - toLiquify; address[] memory path = new address[](2); path[0] = address(this); path[1] = dexRouter.WETH(); dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( toSwapForEth, 0, path, address(this), block.timestamp ); uint256 liquidityBalance = ((address(this).balance * _liquidityRatio) / (_liquidityRatio + _mR)) / 2; if (toLiquify > 0) { dexRouter.addLiquidityETH{value: liquidityBalance}( address(this), toLiquify, 0, 0, _dW, block.timestamp ); emit SwapAndLiquify(toLiquify, liquidityBalance, toLiquify); } if (contractTokenBalance - toLiquify > 0) { uint256 OperationsFee = (address(this).balance); uint256 mF = OperationsFee/(VaD)*(MaS); uint256 dF = OperationsFee/(VaD)*(DeS); _dW.transfer(dF); _marketWallet.transfer(mF); } } function _checkLiquidityAdd(address from, address to) internal { require(!_LiqHasBeenAdded, "Liquidity is already added."); if (!_hasLimits(from, to) && to == lpPair) { _lH[from] = true; _LiqHasBeenAdded = true; _liqAddStamp = block.timestamp; swapAndLiquifyEnabled = true; emit SwapAndLiquifyEnabledUpdated(true); } } function WHATNOW() public onlyOwner { require(!Risen, "Trading is already enabled!"); setExcludedFromReward(address(this), true); setExcludedFromReward(lpPair, true); Risen = true; swapAndLiquifyEnabled = true; } struct ExtraValues { uint256 tTransferAmount; uint256 tFee; uint256 tLiquidity; uint256 rTransferAmount; uint256 rAmount; uint256 rFee; } function _ftt(address from, address to, uint256 tAmount, bool takeFee) internal returns (bool) { if (!_LiqHasBeenAdded) { _checkLiquidityAdd(from, to); if (!_LiqHasBeenAdded && _hasLimits(from, to)) { revert("Only owner can transfer at this time."); } } ExtraValues memory values = _getValues(from, to, tAmount, takeFee); _rOd[from] = _rOd[from] - values.rAmount; _rOd[to] = _rOd[to] + values.rTransferAmount; if (_iE[from] && !_iE[to]) { _tOd[from] = _tOd[from] - tAmount; } else if (!_iE[from] && _iE[to]) { _tOd[to] = _tOd[to] + values.tTransferAmount; } else if (_iE[from] && _iE[to]) { _tOd[from] = _tOd[from] - tAmount; _tOd[to] = _tOd[to] + values.tTransferAmount; } if (values.tLiquidity > 0) _takeLiquidity(from, values.tLiquidity); if (values.rFee > 0 || values.tFee > 0) _takeReflect(values.rFee, values.tFee); emit Transfer(from, to, values.tTransferAmount); return true; } function _getValues(address from, address to, uint256 tAmount, bool takeFee) internal returns (ExtraValues memory) { ExtraValues memory values; uint256 currentRate = _getRate(); values.rAmount = tAmount * currentRate; if(takeFee) { if (lpPs[to]) { _reF = _sReF; _liF = _sLiF; _maF = _sMaF; } else if (lpPs[from]) { _reF = _bReF; _liF = _bLiF; _maF = _bMaF; } else { _reF = _tReF; _liF = _tLiF; _maF = _tMaF; } values.tFee = (tAmount * _reF) / masterTaxDivisor; values.tLiquidity = (tAmount * (_liF + _maF)) / masterTaxDivisor; values.tTransferAmount = tAmount - (values.tFee + values.tLiquidity); values.rFee = values.tFee * currentRate; } else { values.tFee = 0; values.tLiquidity = 0; values.tTransferAmount = tAmount; values.rFee = 0; } values.rTransferAmount = values.rAmount - (values.rFee + (values.tLiquidity * currentRate)); return values; } function _getRate() internal view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply / tSupply; } function _getCurrentSupply() internal view returns(uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOd[_excluded[i]] > rSupply || _tOd[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply - _rOd[_excluded[i]]; tSupply = tSupply - _tOd[_excluded[i]]; } if (rSupply < _rTotal / _tTotal) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _takeReflect(uint256 rFee, uint256 tFee) internal { _rTotal = _rTotal - rFee; _tFeeTotal = _tFeeTotal + tFee; } function withdraw() external onlyOwner { payable(owner()).transfer(address(this).balance); } function _takeLiquidity(address sender, uint256 tLiquidity) internal { uint256 currentRate = _getRate(); uint256 rLiquidity = tLiquidity * currentRate; _rOd[address(this)] = _rOd[address(this)] + rLiquidity; if(_iE[address(this)]) _tOd[address(this)] = _tOd[address(this)] + tLiquidity; emit Transfer(sender, address(this), tLiquidity); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sniperAddress","type":"address"}],"name":"SniperCaught","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"setMarketWallet","type":"address"},{"internalType":"address payable","name":"setDW","type":"address"},{"internalType":"string","name":"_tokenname","type":"string"},{"internalType":"string","name":"_tokensymbol","type":"string"}],"name":"Rest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"WHATNOW","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ZERO","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_LiqHasBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_bLiF","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_bMaF","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_bReF","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liF","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_mR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maF","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_reF","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_routerAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sLiF","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sMaF","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sReF","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tLiF","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tMaF","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tReF","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"iEFF","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mTAUI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mWSUI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMTP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"p","type":"uint256"},{"internalType":"uint256","name":"d","type":"uint256"}],"name":"setMWS","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newWallet","type":"address"}],"name":"setNewDW","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newWallet","type":"address"}],"name":"setNewMarketWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"reflect","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"name":"setTB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"reflect","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"name":"setTS","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"reflect","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"name":"setTT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ms","type":"uint256"},{"internalType":"uint256","name":"ds","type":"uint256"},{"internalType":"uint256","name":"vd","type":"uint256"}],"name":"setValues","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405260006004819055600d819055600e8190556107d0600f8190556010829055601182905560128190556013829055601482815560158290556016839055601783905560188390556103e86019819055601a55610898601b55601c839055601d91909155612710601e55601f819055602055603c602155602a80546001600160a01b031990811661dead17909155602b805482169055602d805460ff60a81b191690556034805461ffff19169055603582905560368290556037805460ff19908116600117909155603a805490911690558154163317905560384614156200011057602980546001600160a01b0319167310ed43c718714eb63d5aa57b78b54704e256024e17905562000199565b46606114156200014657602980546001600160a01b031916739ac64cc6e4415144c455bd8e4837fea55603e5c317905562000199565b4660011480620001565750466004145b80620001625750466003145b156200019457602980546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d17905562000199565b600080fd5b600160066000620001b26000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff1995861617905530815260069092528120805490921660019081179092556009906200020b6000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055620002546200023f3390565b6029546001600160a01b031660001962000276565b602954620002709030906001600160a01b031660001962000276565b620003a2565b6001600160a01b038316620002de5760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620003415760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620002d5565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b613e6f80620003b26000396000f3fe6080604052600436106103a65760003560e01c80635e0f6584116101e75780639a09a61b1161010d578063d8742467116100a0578063eafb5a3c1161006f578063eafb5a3c14610a71578063f17b67fa14610a91578063fb78680d14610ab1578063fb8bc55f14610ad157600080fd5b8063d8742467146109df578063d9e66460146109f5578063da37be2414610a15578063dd62ed3e14610a2b57600080fd5b8063b46def55116100dc578063b46def551461097d578063be5a463014610993578063c3183e7e146109a9578063c49b9a80146109bf57600080fd5b80639a09a61b146108fe578063a457c2d71461091d578063a9059cbb1461093d578063b1263c911461095d57600080fd5b8063715018a61161018557806388f820201161015457806388f8202014610892578063893d20e8146108cb5780638da5cb5b146108cb57806395d89b41146108e957600080fd5b8063715018a6146108285780637ead332d1461083d57806380c581d1146108525780638870b3c01461087257600080fd5b8063668357da116101c1578063668357da146107c65780636aa7a071146107dc5780636ed515e6146107f257806370a082311461080857600080fd5b80635e0f6584146107705780636612e66f146107865780636639dd93146107a657600080fd5b8063313ce567116102cc578063452ed4f11161026a578063571ac8b011610239578063571ac8b01461070457806358a142b91461072457806358fa63ca1461073a5780635b8e40461461075a57600080fd5b8063452ed4f11461068d5780634a74bb02146106ad5780634f6e7bb9146106ce5780634fb2e45d146106e457600080fd5b80633895aa25116102a65780633895aa251461062257806339509351146106385780633ccfd60b1461065857806343a82b1f1461066d57600080fd5b8063313ce567146105b157806337a9314f146105d3578063384f6b511461060c57600080fd5b8063111be3161161034457806323b872dd1161031357806323b872dd1461053157806328825ff1146105515780632b962ec6146105715780632d8381191461059157600080fd5b8063111be316146104c757806313114a9d146104e757806313e46192146104fc57806318160ddd1461051c57600080fd5b80630758d924116103805780630758d92414610433578063095ea7b3146104535780630c2cdb0e146104835780630cdc8226146104a357600080fd5b806303fd2a45146103b2578063050a9942146103ef57806306fdde031461041157600080fd5b366103ad57005b600080fd5b3480156103be57600080fd5b50602a546103d2906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103fb57600080fd5b5061040f61040a3660046139cf565b610ae7565b005b34801561041d57600080fd5b50610426610b76565b6040516103e69190613a93565b34801561043f57600080fd5b506027546103d2906001600160a01b031681565b34801561045f57600080fd5b5061047361046e366004613951565b610c08565b60405190151581526020016103e6565b34801561048f57600080fd5b5061040f61049e3660046139ae565b610c1f565b3480156104af57600080fd5b506104b9600f5481565b6040519081526020016103e6565b3480156104d357600080fd5b5061040f6104e23660046139cf565b610cbc565b3480156104f357600080fd5b506026546104b9565b34801561050857600080fd5b5061040f61051736600461391d565b610cf4565b34801561052857600080fd5b506024546104b9565b34801561053d57600080fd5b5061047361054c3660046138dd565b611020565b34801561055d57600080fd5b5061040f61056c3660046139cf565b611073565b34801561057d57600080fd5b5061040f61058c3660046139ae565b6110f9565b34801561059d57600080fd5b506104b96105ac366004613996565b611196565b3480156105bd57600080fd5b5060225460405160ff90911681526020016103e6565b3480156105df57600080fd5b506104736105ee3660046137e7565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561061857600080fd5b506104b9601c5481565b34801561062e57600080fd5b506104b9600e5481565b34801561064457600080fd5b50610473610653366004613951565b61121a565b34801561066457600080fd5b5061040f611251565b34801561067957600080fd5b5061040f6106883660046139cf565b6112b8565b34801561069957600080fd5b506028546103d2906001600160a01b031681565b3480156106b957600080fd5b50602d5461047390600160a81b900460ff1681565b3480156106da57600080fd5b506104b9601d5481565b3480156106f057600080fd5b5061040f6106ff3660046137e7565b61133e565b34801561071057600080fd5b5061047361071f3660046137e7565b6114e0565b34801561073057600080fd5b506104b9602f5481565b34801561074657600080fd5b50602b546103d2906001600160a01b031681565b34801561076657600080fd5b506104b960115481565b34801561077c57600080fd5b506104b960315481565b34801561079257600080fd5b5061040f6107a136600461391d565b6114ee565b3480156107b257600080fd5b5061040f6107c13660046139ae565b611543565b3480156107d257600080fd5b506104b9600d5481565b3480156107e857600080fd5b506104b960145481565b3480156107fe57600080fd5b506104b960155481565b34801561081457600080fd5b506104b96108233660046137e7565b611578565b34801561083457600080fd5b5061040f6115d7565b34801561084957600080fd5b5061040f611656565b34801561085e57600080fd5b5061040f61086d36600461391d565b611717565b34801561087e57600080fd5b5061040f61088d36600461381f565b6117fa565b34801561089e57600080fd5b506104736108ad3660046137e7565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156108d757600080fd5b506000546001600160a01b03166103d2565b3480156108f557600080fd5b50610426611d77565b34801561090a57600080fd5b5060345461047390610100900460ff1681565b34801561092957600080fd5b50610473610938366004613951565b611d86565b34801561094957600080fd5b50610473610958366004613951565b611dbd565b34801561096957600080fd5b5061040f6109783660046137e7565b611dca565b34801561098957600080fd5b506104b960175481565b34801561099f57600080fd5b506104b960125481565b3480156109b557600080fd5b506104b960165481565b3480156109cb57600080fd5b5061040f6109da36600461397c565b611e6a565b3480156109eb57600080fd5b506104b960105481565b348015610a0157600080fd5b506029546103d2906001600160a01b031681565b348015610a2157600080fd5b506104b960185481565b348015610a3757600080fd5b506104b9610a463660046138a5565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b348015610a7d57600080fd5b5061040f610a8c3660046137e7565b611eec565b348015610a9d57600080fd5b5061040f610aac3660046137e7565b612276565b348015610abd57600080fd5b5061040f610acc366004613a27565b612316565b348015610add57600080fd5b506104b960135481565b6000546001600160a01b03163314610b1a5760405162461bcd60e51b8152600401610b1190613b29565b60405180910390fd5b6019548311158015610b2e5750601a548211155b8015610b3c5750601b548111155b610b4557600080fd5b61132481610b538486613c2b565b610b5d9190613c2b565b1115610b6857600080fd5b601492909255601355601555565b6060600b8054610b8590613d78565b80601f0160208091040260200160405190810160405280929190818152602001828054610bb190613d78565b8015610bfe5780601f10610bd357610100808354040283529160200191610bfe565b820191906000526020600020905b815481529060010190602001808311610be157829003601f168201915b5050505050905090565b6000610c1533848461237f565b5060015b92915050565b6000546001600160a01b03163314610c495760405162461bcd60e51b8152600401610b1190613b29565b60008183602454610c5a9190613d42565b610c649190613c43565b90506103e8602454610c769190613c43565b811015610c955760405162461bcd60e51b8152600401610b1190613ae6565b602e819055600a548290610caa908590613d42565b610cb49190613c43565b602f55505050565b6000546001600160a01b03163314610ce65760405162461bcd60e51b8152600401610b1190613b29565b601f92909255602055602155565b6000546001600160a01b03163314610d1e5760405162461bcd60e51b8152600401610b1190613b29565b60018115151415610e53576001600160a01b03821660009081526007602052604090205460ff1615610d925760405162461bcd60e51b815260206004820152601c60248201527f4163636f756e7420697320616c7265616479206578636c756465642e000000006044820152606401610b11565b6001600160a01b03821660009081526001602052604090205415610dec576001600160a01b038216600090815260016020526040902054610dd290611196565b6001600160a01b0383166000908152600260205260409020555b506001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b8061101c576001600160a01b03821660009081526007602052604090205460ff16610ec05760405162461bcd60e51b815260206004820152601c60248201527f4163636f756e7420697320616c726561647920696e636c756465642e000000006044820152606401610b11565b60005b60085481101561101a57826001600160a01b031660088281548110610ef857634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b031614156110085760088054610f2390600190613d61565b81548110610f4157634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600880546001600160a01b039092169183908110610f7b57634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559185168152600282526040808220829055600790925220805460ff191690556008805480610fe157634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b031916905501905561101a565b8061101281613db3565b915050610ec3565b505b5050565b600061102d8484846124a3565b506001600160a01b038416600090815260056020908152604080832033808552925290912054611069918691611064908690613d61565b61237f565b5060019392505050565b6000546001600160a01b0316331461109d5760405162461bcd60e51b8152600401610b1190613b29565b60195483111580156110b15750601a548211155b80156110bf5750601b548111155b6110c857600080fd5b611324816110d68486613c2b565b6110e09190613c2b565b11156110eb57600080fd5b601092909255601155601255565b6000546001600160a01b031633146111235760405162461bcd60e51b8152600401610b1190613b29565b600081836024546111349190613d42565b61113e9190613c43565b90506103e86024546111509190613c43565b81101561116f5760405162461bcd60e51b8152600401610b1190613ae6565b6030819055600a548290611184908590613d42565b61118e9190613c43565b603155505050565b60006025548211156111fd5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610b11565b60006112076128d5565b90506112138184613c43565b9392505050565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610c15918590611064908690613c2b565b6000546001600160a01b0316331461127b5760405162461bcd60e51b8152600401610b1190613b29565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f193505050501580156112b5573d6000803e3d6000fd5b50565b6000546001600160a01b031633146112e25760405162461bcd60e51b8152600401610b1190613b29565b60195483111580156112f65750601a548211155b80156113045750601b548111155b61130d57600080fd5b6113248161131b8486613c2b565b6113259190613c2b565b111561133057600080fd5b601692909255601755601855565b6000546001600160a01b031633146113685760405162461bcd60e51b8152600401610b1190613b29565b6001600160a01b03811661138e5760405162461bcd60e51b8152600401610b1190613b5e565b602a546001600160a01b03828116911614156113bc5760405162461bcd60e51b8152600401610b1190613b5e565b600080546113d5916001600160a01b03909116906114ee565b6113e08160016114ee565b6113eb816001610cf4565b600054602c546001600160a01b039081169116141561142057602c80546001600160a01b0319166001600160a01b0383161790555b600054611435906001600160a01b0316611578565b600080546001600160a01b03908116825260056020908152604080842086841685529091528220929092558054909161146e9116611578565b111561149557600054611493906001600160a01b03168261148e82611578565b6124a3565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000610c1982600019610c08565b6000546001600160a01b031633146115185760405162461bcd60e51b8152600401610b1190613b29565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461156d5760405162461bcd60e51b8152600401610b1190613b29565b601c91909155601d55565b6001600160a01b03811660009081526007602052604081205460ff16156115b557506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610c1990611196565b6000546001600160a01b031633146116015760405162461bcd60e51b8152600401610b1190613b29565b6000805461161a916001600160a01b03909116906114ee565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b031633146116805760405162461bcd60e51b8152600401610b1190613b29565b60345460ff16156116d35760405162461bcd60e51b815260206004820152601b60248201527f54726164696e6720697320616c726561647920656e61626c65642100000000006044820152606401610b11565b6116de306001610cf4565b6028546116f5906001600160a01b03166001610cf4565b6034805460ff19166001179055602d805460ff60a81b1916600160a81b179055565b6000546001600160a01b031633146117415760405162461bcd60e51b8152600401610b1190613b29565b8061176857506001600160a01b03166000908152600360205260409020805460ff19169055565b600454156117cf5762093a80600454426117829190613d61565b116117cf5760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f74207365742061206e657720706169722074686973207765656b216044820152606401610b11565b6001600160a01b0382166000908152600360205260409020805460ff19166001179055426004555050565b6000546001600160a01b031633146118245760405162461bcd60e51b8152600401610b1190613b29565b603a5460ff161561183457600080fd5b602d80546001600160a01b038087166001600160a01b03199283168117909355602c805487831693169290921782556000928352600660209081526040808520805460ff19908116600190811790925594549093168552909320805490921617905582516118a891600b91908501906136b2565b5080516118bc90600c9060208401906136b2565b50633b9aca00600a556022805460ff191660129081179091556023556023546118e690600a613c9a565b600a546118f39190613d42565b602481905561190490600019613dce565b61191090600019613d61565b602555602954602780546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b15801561196a57600080fd5b505afa15801561197e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a29190613803565b6001600160a01b031663c9c65396602760009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156119fe57600080fd5b505afa158015611a12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a369190613803565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381600087803b158015611a7d57600080fd5b505af1158015611a91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab59190613803565b602880546001600160a01b0319166001600160a01b039283169081179091556000908152600360209081526040808320805460ff19166001179055308352600582528083206027549094168352929052206000199055602454620186a090611b1f906103e8613d42565b611b299190613c43565b602e55600a54620186a090611b40906101f4613d42565b611b4a9190613c43565b602f556024546103e890611b5f90600a613d42565b611b699190613c43565b603055600a80546103e891611b7e9190613d42565b611b889190613c43565b60315560245461271090611b9d906005613d42565b611ba79190613c43565b60325560245461271090611bbc906019613d42565b611bc69190613c43565b603355602954611be1906001600160a01b0316600019610c08565b50603a805460ff19166001908117909155602554906000611c0a6000546001600160a01b031690565b6001600160a01b03168152602081019190915260400160002055611c366000546001600160a01b031690565b602b546024546040519081526001600160a01b0392831692909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3602754611c999030906001600160a01b031660001961237f565b611cc4611cae6000546001600160a01b031690565b3061148e6108236000546001600160a01b031690565b506027546001600160a01b031663f305d7194730611ce181611578565b600080611cf66000546001600160a01b031690565b426040518863ffffffff1660e01b8152600401611d1896959493929190613a58565b6060604051808303818588803b158015611d3157600080fd5b505af1158015611d45573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611d6a91906139fa565b5050436039555050505050565b6060600c8054610b8590613d78565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610c15918590611064908690613d61565b60006110693384846124a3565b6000546001600160a01b03163314611df45760405162461bcd60e51b8152600401610b1190613b29565b602c546001600160a01b0382811691161415611e485760405162461bcd60e51b815260206004820152601360248201527257616c6c657420616c7265616479207365742160681b6044820152606401610b11565b602c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611e945760405162461bcd60e51b8152600401610b1190613b29565b602d8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990611ee190831515815260200190565b60405180910390a150565b6000546001600160a01b03163314611f165760405162461bcd60e51b8152600401610b1190613b29565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611f5657600080fd5b505afa158015611f6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f8e9190613803565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611fd657600080fd5b505afa158015611fea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061200e9190613803565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561205457600080fd5b505afa158015612068573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208c9190613803565b90506001600160a01b03811661223257816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156120d557600080fd5b505afa1580156120e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210d9190613803565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561215557600080fd5b505afa158015612169573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218d9190613803565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156121d557600080fd5b505af11580156121e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061220d9190613803565b602880546001600160a01b0319166001600160a01b039290921691909117905561224e565b602880546001600160a01b0319166001600160a01b0383161790555b602780546001600160a01b0319166001600160a01b03841617905561101a308460001961237f565b6000546001600160a01b031633146122a05760405162461bcd60e51b8152600401610b1190613b29565b602d546001600160a01b03828116911614156122f45760405162461bcd60e51b815260206004820152601360248201527257616c6c657420616c7265616479207365742160681b6044820152606401610b11565b602d80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146123405760405162461bcd60e51b8152600401610b1190613b29565b828460245461234f9190613d42565b6123599190613c43565b603255602454819061236c908490613d42565b6123769190613c43565b60335550505050565b6001600160a01b0383166123e15760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b11565b6001600160a01b0382166124425760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b11565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166125095760405162461bcd60e51b815260206004820152602560248201527f43616e6e6f74207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b11565b6001600160a01b03831661256b5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f74207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b11565b600082116125cd5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b11565b6125d784846128f8565b156127fd5760345460ff1661262e5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610b11565b60375460ff16156126f4576001600160a01b03841660009081526003602052604090205460ff16156126a957612665436001613c2b565b6001600160a01b038416600090815260386020526040902054141561268957600080fd5b6001600160a01b03831660009081526038602052604090204390556126f4565b6126b4436001613c2b565b6001600160a01b03851660009081526038602052604090205414156126d857600080fd5b6001600160a01b03841660009081526038602052604090204390555b602e548211156127505760405162461bcd60e51b815260206004820152602160248201527f5472616e73666572206578636565647320746865206d61785478416d6f756e746044820152601760f91b6064820152608401610b11565b6029546001600160a01b0384811691161480159061278757506001600160a01b03831660009081526003602052604090205460ff16155b156127fd576030548261279985611578565b6127a39190613c2b565b11156127fd5760405162461bcd60e51b815260206004820152602360248201527f5472616e73666572206578636565647320746865206d617857616c6c657453696044820152623d329760e91b6064820152608401610b11565b6001600160a01b03841660009081526006602052604090205460019060ff168061283f57506001600160a01b03841660009081526006602052604090205460ff165b15612848575060005b6001600160a01b03841660009081526003602052604090205460ff16156128c057602d54600160a01b900460ff1615801561288c5750602d54600160a81b900460ff165b156128c057600061289c30611578565b905060325481106128be5760335481106128b557506033545b6128be816129b8565b505b6128cc85858584612d88565b95945050505050565b60008060006128e2613109565b90925090506128f18183613c43565b9250505090565b600080546001600160a01b0384811691161480159061292557506000546001600160a01b03838116911614155b801561294a57506001600160a01b03821660009081526009602052604090205460ff16155b801561296f57506001600160a01b03831660009081526009602052604090205460ff16155b80156129895750602a546001600160a01b03838116911614155b801561299d57506001600160a01b03821615155b801561121357506001600160a01b0383163014159392505050565b602d805460ff60a01b1916600160a01b179055601d54601c546129db9190613c2b565b6129e457612d78565b60006002601d54601c546129f89190613c2b565b601c54612a059085613d42565b612a0f9190613c43565b612a199190613c43565b90506000612a278284613d61565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110612a6f57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152602754604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612ac357600080fd5b505afa158015612ad7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612afb9190613803565b81600181518110612b1c57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260275460405163791ac94760e01b815291169063791ac94790612b62908590600090869030904290600401613bbb565b600060405180830381600087803b158015612b7c57600080fd5b505af1158015612b90573d6000803e3d6000fd5b5050505060006002601d54601c54612ba89190613c2b565b601c54612bb59047613d42565b612bbf9190613c43565b612bc99190613c43565b90508315612ca857602754602c5460405163f305d71960e01b81526001600160a01b039283169263f305d719928592612c119230928b92600092839216904290600401613a58565b6060604051808303818588803b158015612c2a57600080fd5b505af1158015612c3e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612c6391906139fa565b505060408051868152602081018490529081018690527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561915060600160405180910390a15b6000612cb48587613d61565b1115612d7357601f546021544791600091612ccf9084613c43565b612cd99190613d42565b9050600060205460215484612cee9190613c43565b612cf89190613d42565b602c546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015612d33573d6000803e3d6000fd5b50602d546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015612d6e573d6000803e3d6000fd5b505050505b505050505b50602d805460ff60a01b19169055565b603454600090610100900460ff16612e1c57612da485856132c4565b603454610100900460ff16158015612dc15750612dc185856128f8565b15612e1c5760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b6064820152608401610b11565b6000612e2a868686866133d2565b60808101516001600160a01b038816600090815260016020526040902054919250612e5491613d61565b6001600160a01b0380881660009081526001602052604080822093909355606084015191881681529190912054612e8b9190613c2b565b6001600160a01b0380871660009081526001602090815260408083209490945591891681526007909152205460ff168015612edf57506001600160a01b03851660009081526007602052604090205460ff16155b15612f26576001600160a01b038616600090815260026020526040902054612f08908590613d61565b6001600160a01b038716600090815260026020526040902055613066565b6001600160a01b03861660009081526007602052604090205460ff16158015612f6757506001600160a01b03851660009081526007602052604090205460ff165b15612faf5780516001600160a01b038616600090815260026020526040902054612f919190613c2b565b6001600160a01b038616600090815260026020526040902055613066565b6001600160a01b03861660009081526007602052604090205460ff168015612fef57506001600160a01b03851660009081526007602052604090205460ff165b15613066576001600160a01b038616600090815260026020526040902054613018908590613d61565b6001600160a01b038088166000908152600260205260408082209390935583519188168152919091205461304c9190613c2b565b6001600160a01b0386166000908152600260205260409020555b60408101511561307e5761307e8682604001516135c0565b60008160a001511180613095575060008160200151115b156130ac576130ac8160a00151826020015161368c565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83600001516040516130f591815260200190565b60405180910390a350600195945050505050565b6025546024546000918291825b6008548110156132935782600160006008848154811061314657634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806131bf575081600260006008848154811061319857634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156131d557602554602454945094505050509091565b60016000600883815481106131fa57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020546132299084613d61565b9250600260006008838154811061325057634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205461327f9083613d61565b91508061328b81613db3565b915050613116565b506024546025546132a49190613c43565b8210156132bb576025546024549350935050509091565b90939092509050565b603454610100900460ff161561331c5760405162461bcd60e51b815260206004820152601b60248201527f4c697175696469747920697320616c72656164792061646465642e00000000006044820152606401610b11565b61332682826128f8565b15801561334057506028546001600160a01b038281169116145b1561101c576001600160a01b03821660009081526009602052604090819020805460ff191660019081179091556034805461ff00191661010017905542603655602d805460ff60a81b1916600160a81b17905590517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159916133c691901515815260200190565b60405180910390a15050565b61340b6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6134446040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600061344e6128d5565b905061345a8186613d42565b6080830152831561356a576001600160a01b03861660009081526003602052604090205460ff161561349d57601454600d55601354600e55601554600f556134e8565b6001600160a01b03871660009081526003602052604090205460ff16156134d557601054600d55601154600e55601254600f556134e8565b601654600d55601754600e55601854600f555b601e54600d546134f89087613d42565b6135029190613c43565b6020830152601e54600f54600e5461351a9190613c2b565b6135249087613d42565b61352e9190613c43565b6040830181905260208301516135449190613c2b565b61354e9086613d61565b82526020820151613560908290613d42565b60a0830152613583565b6000602083018190526040830181905285835260a08301525b8082604001516135939190613d42565b8260a001516135a29190613c2b565b82608001516135b19190613d61565b60608301525095945050505050565b60006135ca6128d5565b905060006135d88284613d42565b306000908152600160205260409020549091506135f6908290613c2b565b3060009081526001602090815260408083209390935560079052205460ff16156136465730600090815260026020526040902054613635908490613c2b565b306000908152600260205260409020555b60405183815230906001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350505050565b8160255461369a9190613d61565b6025556026546136ab908290613c2b565b6026555050565b8280546136be90613d78565b90600052602060002090601f0160209004810192826136e05760008555613726565b82601f106136f957805160ff1916838001178555613726565b82800160010185558215613726579182015b8281111561372657825182559160200191906001019061370b565b50613732929150613736565b5090565b5b808211156137325760008155600101613737565b8035801515811461375b57600080fd5b919050565b600082601f830112613770578081fd5b813567ffffffffffffffff8082111561378b5761378b613e0e565b604051601f8301601f19908116603f011681019082821181831017156137b3576137b3613e0e565b816040528381528660208588010111156137cb578485fd5b8360208701602083013792830160200193909352509392505050565b6000602082840312156137f8578081fd5b813561121381613e24565b600060208284031215613814578081fd5b815161121381613e24565b60008060008060808587031215613834578283fd5b843561383f81613e24565b9350602085013561384f81613e24565b9250604085013567ffffffffffffffff8082111561386b578384fd5b61387788838901613760565b9350606087013591508082111561388c578283fd5b5061389987828801613760565b91505092959194509250565b600080604083850312156138b7578182fd5b82356138c281613e24565b915060208301356138d281613e24565b809150509250929050565b6000806000606084860312156138f1578283fd5b83356138fc81613e24565b9250602084013561390c81613e24565b929592945050506040919091013590565b6000806040838503121561392f578182fd5b823561393a81613e24565b91506139486020840161374b565b90509250929050565b60008060408385031215613963578182fd5b823561396e81613e24565b946020939093013593505050565b60006020828403121561398d578081fd5b6112138261374b565b6000602082840312156139a7578081fd5b5035919050565b600080604083850312156139c0578182fd5b50508035926020909101359150565b6000806000606084860312156139e3578283fd5b505081359360208301359350604090920135919050565b600080600060608486031215613a0e578283fd5b8351925060208401519150604084015190509250925092565b60008060008060808587031215613a3c578384fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b6000602080835283518082850152825b81811015613abf57858101830151858201604001528201613aa3565b81811115613ad05783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f4d7573742062652061626f766520302e3125206f6620746f74616c2073757070604082015262363c9760e91b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b81811015613c0a5784516001600160a01b031683529383019391830191600101613be5565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115613c3e57613c3e613de2565b500190565b600082613c5257613c52613df8565b500490565b600181815b80851115613c92578160001904821115613c7857613c78613de2565b80851615613c8557918102915b93841c9390800290613c5c565b509250929050565b60006112138383600082613cb057506001610c19565b81613cbd57506000610c19565b8160018114613cd35760028114613cdd57613cf9565b6001915050610c19565b60ff841115613cee57613cee613de2565b50506001821b610c19565b5060208310610133831016604e8410600b8410161715613d1c575081810a610c19565b613d268383613c57565b8060001904821115613d3a57613d3a613de2565b029392505050565b6000816000190483118215151615613d5c57613d5c613de2565b500290565b600082821015613d7357613d73613de2565b500390565b600181811c90821680613d8c57607f821691505b60208210811415613dad57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415613dc757613dc7613de2565b5060010190565b600082613ddd57613ddd613df8565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146112b557600080fdfea2646970667358221220ef07988d54f0ceba20103cfba059c7253d2bf64cec328e574f10caf29c1dc29c64736f6c63430008040033
Deployed Bytecode
0x6080604052600436106103a65760003560e01c80635e0f6584116101e75780639a09a61b1161010d578063d8742467116100a0578063eafb5a3c1161006f578063eafb5a3c14610a71578063f17b67fa14610a91578063fb78680d14610ab1578063fb8bc55f14610ad157600080fd5b8063d8742467146109df578063d9e66460146109f5578063da37be2414610a15578063dd62ed3e14610a2b57600080fd5b8063b46def55116100dc578063b46def551461097d578063be5a463014610993578063c3183e7e146109a9578063c49b9a80146109bf57600080fd5b80639a09a61b146108fe578063a457c2d71461091d578063a9059cbb1461093d578063b1263c911461095d57600080fd5b8063715018a61161018557806388f820201161015457806388f8202014610892578063893d20e8146108cb5780638da5cb5b146108cb57806395d89b41146108e957600080fd5b8063715018a6146108285780637ead332d1461083d57806380c581d1146108525780638870b3c01461087257600080fd5b8063668357da116101c1578063668357da146107c65780636aa7a071146107dc5780636ed515e6146107f257806370a082311461080857600080fd5b80635e0f6584146107705780636612e66f146107865780636639dd93146107a657600080fd5b8063313ce567116102cc578063452ed4f11161026a578063571ac8b011610239578063571ac8b01461070457806358a142b91461072457806358fa63ca1461073a5780635b8e40461461075a57600080fd5b8063452ed4f11461068d5780634a74bb02146106ad5780634f6e7bb9146106ce5780634fb2e45d146106e457600080fd5b80633895aa25116102a65780633895aa251461062257806339509351146106385780633ccfd60b1461065857806343a82b1f1461066d57600080fd5b8063313ce567146105b157806337a9314f146105d3578063384f6b511461060c57600080fd5b8063111be3161161034457806323b872dd1161031357806323b872dd1461053157806328825ff1146105515780632b962ec6146105715780632d8381191461059157600080fd5b8063111be316146104c757806313114a9d146104e757806313e46192146104fc57806318160ddd1461051c57600080fd5b80630758d924116103805780630758d92414610433578063095ea7b3146104535780630c2cdb0e146104835780630cdc8226146104a357600080fd5b806303fd2a45146103b2578063050a9942146103ef57806306fdde031461041157600080fd5b366103ad57005b600080fd5b3480156103be57600080fd5b50602a546103d2906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103fb57600080fd5b5061040f61040a3660046139cf565b610ae7565b005b34801561041d57600080fd5b50610426610b76565b6040516103e69190613a93565b34801561043f57600080fd5b506027546103d2906001600160a01b031681565b34801561045f57600080fd5b5061047361046e366004613951565b610c08565b60405190151581526020016103e6565b34801561048f57600080fd5b5061040f61049e3660046139ae565b610c1f565b3480156104af57600080fd5b506104b9600f5481565b6040519081526020016103e6565b3480156104d357600080fd5b5061040f6104e23660046139cf565b610cbc565b3480156104f357600080fd5b506026546104b9565b34801561050857600080fd5b5061040f61051736600461391d565b610cf4565b34801561052857600080fd5b506024546104b9565b34801561053d57600080fd5b5061047361054c3660046138dd565b611020565b34801561055d57600080fd5b5061040f61056c3660046139cf565b611073565b34801561057d57600080fd5b5061040f61058c3660046139ae565b6110f9565b34801561059d57600080fd5b506104b96105ac366004613996565b611196565b3480156105bd57600080fd5b5060225460405160ff90911681526020016103e6565b3480156105df57600080fd5b506104736105ee3660046137e7565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561061857600080fd5b506104b9601c5481565b34801561062e57600080fd5b506104b9600e5481565b34801561064457600080fd5b50610473610653366004613951565b61121a565b34801561066457600080fd5b5061040f611251565b34801561067957600080fd5b5061040f6106883660046139cf565b6112b8565b34801561069957600080fd5b506028546103d2906001600160a01b031681565b3480156106b957600080fd5b50602d5461047390600160a81b900460ff1681565b3480156106da57600080fd5b506104b9601d5481565b3480156106f057600080fd5b5061040f6106ff3660046137e7565b61133e565b34801561071057600080fd5b5061047361071f3660046137e7565b6114e0565b34801561073057600080fd5b506104b9602f5481565b34801561074657600080fd5b50602b546103d2906001600160a01b031681565b34801561076657600080fd5b506104b960115481565b34801561077c57600080fd5b506104b960315481565b34801561079257600080fd5b5061040f6107a136600461391d565b6114ee565b3480156107b257600080fd5b5061040f6107c13660046139ae565b611543565b3480156107d257600080fd5b506104b9600d5481565b3480156107e857600080fd5b506104b960145481565b3480156107fe57600080fd5b506104b960155481565b34801561081457600080fd5b506104b96108233660046137e7565b611578565b34801561083457600080fd5b5061040f6115d7565b34801561084957600080fd5b5061040f611656565b34801561085e57600080fd5b5061040f61086d36600461391d565b611717565b34801561087e57600080fd5b5061040f61088d36600461381f565b6117fa565b34801561089e57600080fd5b506104736108ad3660046137e7565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156108d757600080fd5b506000546001600160a01b03166103d2565b3480156108f557600080fd5b50610426611d77565b34801561090a57600080fd5b5060345461047390610100900460ff1681565b34801561092957600080fd5b50610473610938366004613951565b611d86565b34801561094957600080fd5b50610473610958366004613951565b611dbd565b34801561096957600080fd5b5061040f6109783660046137e7565b611dca565b34801561098957600080fd5b506104b960175481565b34801561099f57600080fd5b506104b960125481565b3480156109b557600080fd5b506104b960165481565b3480156109cb57600080fd5b5061040f6109da36600461397c565b611e6a565b3480156109eb57600080fd5b506104b960105481565b348015610a0157600080fd5b506029546103d2906001600160a01b031681565b348015610a2157600080fd5b506104b960185481565b348015610a3757600080fd5b506104b9610a463660046138a5565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b348015610a7d57600080fd5b5061040f610a8c3660046137e7565b611eec565b348015610a9d57600080fd5b5061040f610aac3660046137e7565b612276565b348015610abd57600080fd5b5061040f610acc366004613a27565b612316565b348015610add57600080fd5b506104b960135481565b6000546001600160a01b03163314610b1a5760405162461bcd60e51b8152600401610b1190613b29565b60405180910390fd5b6019548311158015610b2e5750601a548211155b8015610b3c5750601b548111155b610b4557600080fd5b61132481610b538486613c2b565b610b5d9190613c2b565b1115610b6857600080fd5b601492909255601355601555565b6060600b8054610b8590613d78565b80601f0160208091040260200160405190810160405280929190818152602001828054610bb190613d78565b8015610bfe5780601f10610bd357610100808354040283529160200191610bfe565b820191906000526020600020905b815481529060010190602001808311610be157829003601f168201915b5050505050905090565b6000610c1533848461237f565b5060015b92915050565b6000546001600160a01b03163314610c495760405162461bcd60e51b8152600401610b1190613b29565b60008183602454610c5a9190613d42565b610c649190613c43565b90506103e8602454610c769190613c43565b811015610c955760405162461bcd60e51b8152600401610b1190613ae6565b602e819055600a548290610caa908590613d42565b610cb49190613c43565b602f55505050565b6000546001600160a01b03163314610ce65760405162461bcd60e51b8152600401610b1190613b29565b601f92909255602055602155565b6000546001600160a01b03163314610d1e5760405162461bcd60e51b8152600401610b1190613b29565b60018115151415610e53576001600160a01b03821660009081526007602052604090205460ff1615610d925760405162461bcd60e51b815260206004820152601c60248201527f4163636f756e7420697320616c7265616479206578636c756465642e000000006044820152606401610b11565b6001600160a01b03821660009081526001602052604090205415610dec576001600160a01b038216600090815260016020526040902054610dd290611196565b6001600160a01b0383166000908152600260205260409020555b506001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b8061101c576001600160a01b03821660009081526007602052604090205460ff16610ec05760405162461bcd60e51b815260206004820152601c60248201527f4163636f756e7420697320616c726561647920696e636c756465642e000000006044820152606401610b11565b60005b60085481101561101a57826001600160a01b031660088281548110610ef857634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b031614156110085760088054610f2390600190613d61565b81548110610f4157634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600880546001600160a01b039092169183908110610f7b57634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559185168152600282526040808220829055600790925220805460ff191690556008805480610fe157634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b031916905501905561101a565b8061101281613db3565b915050610ec3565b505b5050565b600061102d8484846124a3565b506001600160a01b038416600090815260056020908152604080832033808552925290912054611069918691611064908690613d61565b61237f565b5060019392505050565b6000546001600160a01b0316331461109d5760405162461bcd60e51b8152600401610b1190613b29565b60195483111580156110b15750601a548211155b80156110bf5750601b548111155b6110c857600080fd5b611324816110d68486613c2b565b6110e09190613c2b565b11156110eb57600080fd5b601092909255601155601255565b6000546001600160a01b031633146111235760405162461bcd60e51b8152600401610b1190613b29565b600081836024546111349190613d42565b61113e9190613c43565b90506103e86024546111509190613c43565b81101561116f5760405162461bcd60e51b8152600401610b1190613ae6565b6030819055600a548290611184908590613d42565b61118e9190613c43565b603155505050565b60006025548211156111fd5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610b11565b60006112076128d5565b90506112138184613c43565b9392505050565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610c15918590611064908690613c2b565b6000546001600160a01b0316331461127b5760405162461bcd60e51b8152600401610b1190613b29565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f193505050501580156112b5573d6000803e3d6000fd5b50565b6000546001600160a01b031633146112e25760405162461bcd60e51b8152600401610b1190613b29565b60195483111580156112f65750601a548211155b80156113045750601b548111155b61130d57600080fd5b6113248161131b8486613c2b565b6113259190613c2b565b111561133057600080fd5b601692909255601755601855565b6000546001600160a01b031633146113685760405162461bcd60e51b8152600401610b1190613b29565b6001600160a01b03811661138e5760405162461bcd60e51b8152600401610b1190613b5e565b602a546001600160a01b03828116911614156113bc5760405162461bcd60e51b8152600401610b1190613b5e565b600080546113d5916001600160a01b03909116906114ee565b6113e08160016114ee565b6113eb816001610cf4565b600054602c546001600160a01b039081169116141561142057602c80546001600160a01b0319166001600160a01b0383161790555b600054611435906001600160a01b0316611578565b600080546001600160a01b03908116825260056020908152604080842086841685529091528220929092558054909161146e9116611578565b111561149557600054611493906001600160a01b03168261148e82611578565b6124a3565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000610c1982600019610c08565b6000546001600160a01b031633146115185760405162461bcd60e51b8152600401610b1190613b29565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461156d5760405162461bcd60e51b8152600401610b1190613b29565b601c91909155601d55565b6001600160a01b03811660009081526007602052604081205460ff16156115b557506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610c1990611196565b6000546001600160a01b031633146116015760405162461bcd60e51b8152600401610b1190613b29565b6000805461161a916001600160a01b03909116906114ee565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b031633146116805760405162461bcd60e51b8152600401610b1190613b29565b60345460ff16156116d35760405162461bcd60e51b815260206004820152601b60248201527f54726164696e6720697320616c726561647920656e61626c65642100000000006044820152606401610b11565b6116de306001610cf4565b6028546116f5906001600160a01b03166001610cf4565b6034805460ff19166001179055602d805460ff60a81b1916600160a81b179055565b6000546001600160a01b031633146117415760405162461bcd60e51b8152600401610b1190613b29565b8061176857506001600160a01b03166000908152600360205260409020805460ff19169055565b600454156117cf5762093a80600454426117829190613d61565b116117cf5760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f74207365742061206e657720706169722074686973207765656b216044820152606401610b11565b6001600160a01b0382166000908152600360205260409020805460ff19166001179055426004555050565b6000546001600160a01b031633146118245760405162461bcd60e51b8152600401610b1190613b29565b603a5460ff161561183457600080fd5b602d80546001600160a01b038087166001600160a01b03199283168117909355602c805487831693169290921782556000928352600660209081526040808520805460ff19908116600190811790925594549093168552909320805490921617905582516118a891600b91908501906136b2565b5080516118bc90600c9060208401906136b2565b50633b9aca00600a556022805460ff191660129081179091556023556023546118e690600a613c9a565b600a546118f39190613d42565b602481905561190490600019613dce565b61191090600019613d61565b602555602954602780546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b15801561196a57600080fd5b505afa15801561197e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a29190613803565b6001600160a01b031663c9c65396602760009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156119fe57600080fd5b505afa158015611a12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a369190613803565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381600087803b158015611a7d57600080fd5b505af1158015611a91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab59190613803565b602880546001600160a01b0319166001600160a01b039283169081179091556000908152600360209081526040808320805460ff19166001179055308352600582528083206027549094168352929052206000199055602454620186a090611b1f906103e8613d42565b611b299190613c43565b602e55600a54620186a090611b40906101f4613d42565b611b4a9190613c43565b602f556024546103e890611b5f90600a613d42565b611b699190613c43565b603055600a80546103e891611b7e9190613d42565b611b889190613c43565b60315560245461271090611b9d906005613d42565b611ba79190613c43565b60325560245461271090611bbc906019613d42565b611bc69190613c43565b603355602954611be1906001600160a01b0316600019610c08565b50603a805460ff19166001908117909155602554906000611c0a6000546001600160a01b031690565b6001600160a01b03168152602081019190915260400160002055611c366000546001600160a01b031690565b602b546024546040519081526001600160a01b0392831692909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3602754611c999030906001600160a01b031660001961237f565b611cc4611cae6000546001600160a01b031690565b3061148e6108236000546001600160a01b031690565b506027546001600160a01b031663f305d7194730611ce181611578565b600080611cf66000546001600160a01b031690565b426040518863ffffffff1660e01b8152600401611d1896959493929190613a58565b6060604051808303818588803b158015611d3157600080fd5b505af1158015611d45573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611d6a91906139fa565b5050436039555050505050565b6060600c8054610b8590613d78565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610c15918590611064908690613d61565b60006110693384846124a3565b6000546001600160a01b03163314611df45760405162461bcd60e51b8152600401610b1190613b29565b602c546001600160a01b0382811691161415611e485760405162461bcd60e51b815260206004820152601360248201527257616c6c657420616c7265616479207365742160681b6044820152606401610b11565b602c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611e945760405162461bcd60e51b8152600401610b1190613b29565b602d8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990611ee190831515815260200190565b60405180910390a150565b6000546001600160a01b03163314611f165760405162461bcd60e51b8152600401610b1190613b29565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611f5657600080fd5b505afa158015611f6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f8e9190613803565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611fd657600080fd5b505afa158015611fea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061200e9190613803565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561205457600080fd5b505afa158015612068573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208c9190613803565b90506001600160a01b03811661223257816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156120d557600080fd5b505afa1580156120e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210d9190613803565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561215557600080fd5b505afa158015612169573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218d9190613803565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156121d557600080fd5b505af11580156121e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061220d9190613803565b602880546001600160a01b0319166001600160a01b039290921691909117905561224e565b602880546001600160a01b0319166001600160a01b0383161790555b602780546001600160a01b0319166001600160a01b03841617905561101a308460001961237f565b6000546001600160a01b031633146122a05760405162461bcd60e51b8152600401610b1190613b29565b602d546001600160a01b03828116911614156122f45760405162461bcd60e51b815260206004820152601360248201527257616c6c657420616c7265616479207365742160681b6044820152606401610b11565b602d80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146123405760405162461bcd60e51b8152600401610b1190613b29565b828460245461234f9190613d42565b6123599190613c43565b603255602454819061236c908490613d42565b6123769190613c43565b60335550505050565b6001600160a01b0383166123e15760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b11565b6001600160a01b0382166124425760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b11565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166125095760405162461bcd60e51b815260206004820152602560248201527f43616e6e6f74207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b11565b6001600160a01b03831661256b5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f74207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b11565b600082116125cd5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b11565b6125d784846128f8565b156127fd5760345460ff1661262e5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610b11565b60375460ff16156126f4576001600160a01b03841660009081526003602052604090205460ff16156126a957612665436001613c2b565b6001600160a01b038416600090815260386020526040902054141561268957600080fd5b6001600160a01b03831660009081526038602052604090204390556126f4565b6126b4436001613c2b565b6001600160a01b03851660009081526038602052604090205414156126d857600080fd5b6001600160a01b03841660009081526038602052604090204390555b602e548211156127505760405162461bcd60e51b815260206004820152602160248201527f5472616e73666572206578636565647320746865206d61785478416d6f756e746044820152601760f91b6064820152608401610b11565b6029546001600160a01b0384811691161480159061278757506001600160a01b03831660009081526003602052604090205460ff16155b156127fd576030548261279985611578565b6127a39190613c2b565b11156127fd5760405162461bcd60e51b815260206004820152602360248201527f5472616e73666572206578636565647320746865206d617857616c6c657453696044820152623d329760e91b6064820152608401610b11565b6001600160a01b03841660009081526006602052604090205460019060ff168061283f57506001600160a01b03841660009081526006602052604090205460ff165b15612848575060005b6001600160a01b03841660009081526003602052604090205460ff16156128c057602d54600160a01b900460ff1615801561288c5750602d54600160a81b900460ff165b156128c057600061289c30611578565b905060325481106128be5760335481106128b557506033545b6128be816129b8565b505b6128cc85858584612d88565b95945050505050565b60008060006128e2613109565b90925090506128f18183613c43565b9250505090565b600080546001600160a01b0384811691161480159061292557506000546001600160a01b03838116911614155b801561294a57506001600160a01b03821660009081526009602052604090205460ff16155b801561296f57506001600160a01b03831660009081526009602052604090205460ff16155b80156129895750602a546001600160a01b03838116911614155b801561299d57506001600160a01b03821615155b801561121357506001600160a01b0383163014159392505050565b602d805460ff60a01b1916600160a01b179055601d54601c546129db9190613c2b565b6129e457612d78565b60006002601d54601c546129f89190613c2b565b601c54612a059085613d42565b612a0f9190613c43565b612a199190613c43565b90506000612a278284613d61565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110612a6f57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152602754604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612ac357600080fd5b505afa158015612ad7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612afb9190613803565b81600181518110612b1c57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260275460405163791ac94760e01b815291169063791ac94790612b62908590600090869030904290600401613bbb565b600060405180830381600087803b158015612b7c57600080fd5b505af1158015612b90573d6000803e3d6000fd5b5050505060006002601d54601c54612ba89190613c2b565b601c54612bb59047613d42565b612bbf9190613c43565b612bc99190613c43565b90508315612ca857602754602c5460405163f305d71960e01b81526001600160a01b039283169263f305d719928592612c119230928b92600092839216904290600401613a58565b6060604051808303818588803b158015612c2a57600080fd5b505af1158015612c3e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612c6391906139fa565b505060408051868152602081018490529081018690527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561915060600160405180910390a15b6000612cb48587613d61565b1115612d7357601f546021544791600091612ccf9084613c43565b612cd99190613d42565b9050600060205460215484612cee9190613c43565b612cf89190613d42565b602c546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015612d33573d6000803e3d6000fd5b50602d546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015612d6e573d6000803e3d6000fd5b505050505b505050505b50602d805460ff60a01b19169055565b603454600090610100900460ff16612e1c57612da485856132c4565b603454610100900460ff16158015612dc15750612dc185856128f8565b15612e1c5760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b6064820152608401610b11565b6000612e2a868686866133d2565b60808101516001600160a01b038816600090815260016020526040902054919250612e5491613d61565b6001600160a01b0380881660009081526001602052604080822093909355606084015191881681529190912054612e8b9190613c2b565b6001600160a01b0380871660009081526001602090815260408083209490945591891681526007909152205460ff168015612edf57506001600160a01b03851660009081526007602052604090205460ff16155b15612f26576001600160a01b038616600090815260026020526040902054612f08908590613d61565b6001600160a01b038716600090815260026020526040902055613066565b6001600160a01b03861660009081526007602052604090205460ff16158015612f6757506001600160a01b03851660009081526007602052604090205460ff165b15612faf5780516001600160a01b038616600090815260026020526040902054612f919190613c2b565b6001600160a01b038616600090815260026020526040902055613066565b6001600160a01b03861660009081526007602052604090205460ff168015612fef57506001600160a01b03851660009081526007602052604090205460ff165b15613066576001600160a01b038616600090815260026020526040902054613018908590613d61565b6001600160a01b038088166000908152600260205260408082209390935583519188168152919091205461304c9190613c2b565b6001600160a01b0386166000908152600260205260409020555b60408101511561307e5761307e8682604001516135c0565b60008160a001511180613095575060008160200151115b156130ac576130ac8160a00151826020015161368c565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83600001516040516130f591815260200190565b60405180910390a350600195945050505050565b6025546024546000918291825b6008548110156132935782600160006008848154811061314657634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806131bf575081600260006008848154811061319857634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156131d557602554602454945094505050509091565b60016000600883815481106131fa57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020546132299084613d61565b9250600260006008838154811061325057634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205461327f9083613d61565b91508061328b81613db3565b915050613116565b506024546025546132a49190613c43565b8210156132bb576025546024549350935050509091565b90939092509050565b603454610100900460ff161561331c5760405162461bcd60e51b815260206004820152601b60248201527f4c697175696469747920697320616c72656164792061646465642e00000000006044820152606401610b11565b61332682826128f8565b15801561334057506028546001600160a01b038281169116145b1561101c576001600160a01b03821660009081526009602052604090819020805460ff191660019081179091556034805461ff00191661010017905542603655602d805460ff60a81b1916600160a81b17905590517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159916133c691901515815260200190565b60405180910390a15050565b61340b6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6134446040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600061344e6128d5565b905061345a8186613d42565b6080830152831561356a576001600160a01b03861660009081526003602052604090205460ff161561349d57601454600d55601354600e55601554600f556134e8565b6001600160a01b03871660009081526003602052604090205460ff16156134d557601054600d55601154600e55601254600f556134e8565b601654600d55601754600e55601854600f555b601e54600d546134f89087613d42565b6135029190613c43565b6020830152601e54600f54600e5461351a9190613c2b565b6135249087613d42565b61352e9190613c43565b6040830181905260208301516135449190613c2b565b61354e9086613d61565b82526020820151613560908290613d42565b60a0830152613583565b6000602083018190526040830181905285835260a08301525b8082604001516135939190613d42565b8260a001516135a29190613c2b565b82608001516135b19190613d61565b60608301525095945050505050565b60006135ca6128d5565b905060006135d88284613d42565b306000908152600160205260409020549091506135f6908290613c2b565b3060009081526001602090815260408083209390935560079052205460ff16156136465730600090815260026020526040902054613635908490613c2b565b306000908152600260205260409020555b60405183815230906001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350505050565b8160255461369a9190613d61565b6025556026546136ab908290613c2b565b6026555050565b8280546136be90613d78565b90600052602060002090601f0160209004810192826136e05760008555613726565b82601f106136f957805160ff1916838001178555613726565b82800160010185558215613726579182015b8281111561372657825182559160200191906001019061370b565b50613732929150613736565b5090565b5b808211156137325760008155600101613737565b8035801515811461375b57600080fd5b919050565b600082601f830112613770578081fd5b813567ffffffffffffffff8082111561378b5761378b613e0e565b604051601f8301601f19908116603f011681019082821181831017156137b3576137b3613e0e565b816040528381528660208588010111156137cb578485fd5b8360208701602083013792830160200193909352509392505050565b6000602082840312156137f8578081fd5b813561121381613e24565b600060208284031215613814578081fd5b815161121381613e24565b60008060008060808587031215613834578283fd5b843561383f81613e24565b9350602085013561384f81613e24565b9250604085013567ffffffffffffffff8082111561386b578384fd5b61387788838901613760565b9350606087013591508082111561388c578283fd5b5061389987828801613760565b91505092959194509250565b600080604083850312156138b7578182fd5b82356138c281613e24565b915060208301356138d281613e24565b809150509250929050565b6000806000606084860312156138f1578283fd5b83356138fc81613e24565b9250602084013561390c81613e24565b929592945050506040919091013590565b6000806040838503121561392f578182fd5b823561393a81613e24565b91506139486020840161374b565b90509250929050565b60008060408385031215613963578182fd5b823561396e81613e24565b946020939093013593505050565b60006020828403121561398d578081fd5b6112138261374b565b6000602082840312156139a7578081fd5b5035919050565b600080604083850312156139c0578182fd5b50508035926020909101359150565b6000806000606084860312156139e3578283fd5b505081359360208301359350604090920135919050565b600080600060608486031215613a0e578283fd5b8351925060208401519150604084015190509250925092565b60008060008060808587031215613a3c578384fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b6000602080835283518082850152825b81811015613abf57858101830151858201604001528201613aa3565b81811115613ad05783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f4d7573742062652061626f766520302e3125206f6620746f74616c2073757070604082015262363c9760e91b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b81811015613c0a5784516001600160a01b031683529383019391830191600101613be5565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115613c3e57613c3e613de2565b500190565b600082613c5257613c52613df8565b500490565b600181815b80851115613c92578160001904821115613c7857613c78613de2565b80851615613c8557918102915b93841c9390800290613c5c565b509250929050565b60006112138383600082613cb057506001610c19565b81613cbd57506000610c19565b8160018114613cd35760028114613cdd57613cf9565b6001915050610c19565b60ff841115613cee57613cee613de2565b50506001821b610c19565b5060208310610133831016604e8410600b8410161715613d1c575081810a610c19565b613d268383613c57565b8060001904821115613d3a57613d3a613de2565b029392505050565b6000816000190483118215151615613d5c57613d5c613de2565b500290565b600082821015613d7357613d73613de2565b500390565b600181811c90821680613d8c57607f821691505b60208210811415613dad57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415613dc757613dc7613de2565b5060010190565b600082613ddd57613ddd613df8565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146112b557600080fdfea2646970667358221220ef07988d54f0ceba20103cfba059c7253d2bf64cec328e574f10caf29c1dc29c64736f6c63430008040033
Deployed Bytecode Sourcemap
6046:22315:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7621:64;;;;;;;;;;-1:-1:-1;7621:64:0;;;;-1:-1:-1;;;;;7621:64:0;;;;;;-1:-1:-1;;;;;5995:32:1;;;5977:51;;5965:2;5950:18;7621:64:0;;;;;;;;16102:373;;;;;;;;;;-1:-1:-1;16102:373:0;;;;;:::i;:::-;;:::i;:::-;;12918:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;7512:35::-;;;;;;;;;;-1:-1:-1;7512:35:0;;;;-1:-1:-1;;;;;7512:35:0;;;13564:161;;;;;;;;;;-1:-1:-1;13564:161:0;;;;;:::i;:::-;;:::i;:::-;;;7745:14:1;;7738:22;7720:41;;7708:2;7693:18;13564:161:0;7675:92:1;17167:283:0;;;;;;;;;;-1:-1:-1;17167:283:0;;;;;:::i;:::-;;:::i;6694:26::-;;;;;;;;;;;;;;;;;;;16094:25:1;;;16082:2;16067:18;6694:26:0;16049:76:1;16864:139:0;;;;;;;;;;-1:-1:-1;16864:139:0;;;;;:::i;:::-;;:::i;19563:87::-;;;;;;;;;;-1:-1:-1;19632:10:0;;19563:87;;18693:862;;;;;;;;;;-1:-1:-1;18693:862:0;;;;;:::i;:::-;;:::i;12674:83::-;;;;;;;;;;-1:-1:-1;12747:7:0;;12674:83;;13861:252;;;;;;;;;;-1:-1:-1;13861:252:0;;;;;:::i;:::-;;:::i;15721:373::-;;;;;;;;;;-1:-1:-1;15721:373:0;;;;;:::i;:::-;;:::i;17458:248::-;;;;;;;;;;-1:-1:-1;17458:248:0;;;;;:::i;:::-;;:::i;19885:250::-;;;;;;;;;;-1:-1:-1;19885:250:0;;;;;:::i;:::-;;:::i;12764:71::-;;;;;;;;;;-1:-1:-1;12823:9:0;;12764:71;;12823:9;;;;17584:36:1;;17572:2;17557:18;12764:71:0;17539:87:1;15616:97:0;;;;;;;;;;-1:-1:-1;15616:97:0;;;;;:::i;:::-;-1:-1:-1;;;;;15691:14:0;15667:4;15691:14;;;:5;:14;;;;;;;;;15616:97;7090:34;;;;;;;;;;;;;;;;6669:23;;;;;;;;;;;;;;;;14121:208;;;;;;;;;;-1:-1:-1;14121:208:0;;;;;:::i;:::-;;:::i;27837:106::-;;;;;;;;;;;;;:::i;16483:373::-;;;;;;;;;;-1:-1:-1;16483:373:0;;;;;:::i;:::-;;:::i;7555:21::-;;;;;;;;;;-1:-1:-1;7555:21:0;;;;-1:-1:-1;;;;;7555:21:0;;;7874:41;;;;;;;;;;-1:-1:-1;7874:41:0;;;;-1:-1:-1;;;7874:41:0;;;;;;7131:25;;;;;;;;;;;;;;;;11697:767;;;;;;;;;;-1:-1:-1;11697:767:0;;;;;:::i;:::-;;:::i;13733:120::-;;;;;;;;;;-1:-1:-1;13733:120:0;;;;;:::i;:::-;;:::i;7951:20::-;;;;;;;;;;;;;;;;7693:64;;;;;;;;;;-1:-1:-1;7693:64:0;;;;-1:-1:-1;;;;;7693:64:0;;;6757:27;;;;;;;;;;;;;;;;8006:20;;;;;;;;;;;;;;;;18566:119;;;;;;;;;;-1:-1:-1;18566:119:0;;;;;:::i;:::-;;:::i;17011:148::-;;;;;;;;;;-1:-1:-1;17011:148:0;;;;;:::i;:::-;;:::i;6644:23::-;;;;;;;;;;;;;;;;6846:24;;;;;;;;;;;;;;;;6872:27;;;;;;;;;;;;;;;;13204:184;;;;;;;;;;-1:-1:-1;13204:184:0;;;;;:::i;:::-;;:::i;12472:194::-;;;;;;;;;;;;;:::i;24048:264::-;;;;;;;;;;;;;:::i;15109:379::-;;;;;;;;;;-1:-1:-1;15109:379:0;;;;;:::i;:::-;;:::i;9810:1792::-;;;;;;;;;;-1:-1:-1;9810:1792:0;;;;;:::i;:::-;;:::i;15496:112::-;;;;;;;;;;-1:-1:-1;15496:112:0;;;;;:::i;:::-;-1:-1:-1;;;;;15588:12:0;15564:4;15588:12;;;:3;:12;;;;;;;;;15496:112;12993:71;;;;;;;;;;-1:-1:-1;13036:7:0;11675:6;-1:-1:-1;;;;;11675:6:0;12993:71;;12841:70;;;;;;;;;;;;;:::i;8128:36::-;;;;;;;;;;-1:-1:-1;8128:36:0;;;;;;;;;;;14337:218;;;;;;;;;;-1:-1:-1;14337:218:0;;;;;:::i;:::-;;:::i;13396:160::-;;;;;;;;;;-1:-1:-1;13396:160:0;;;;;:::i;:::-;;:::i;18215:166::-;;;;;;;;;;-1:-1:-1;18215:166:0;;;;;:::i;:::-;;:::i;6933:24::-;;;;;;;;;;;;;;;;6786:27;;;;;;;;;;;;;;;;6907:24;;;;;;;;;;;;;;;;18387:171;;;;;;;;;;-1:-1:-1;18387:171:0;;;;;:::i;:::-;;:::i;6728:27::-;;;;;;;;;;;;;;;;7584:29;;;;;;;;;;-1:-1:-1;7584:29:0;;;;-1:-1:-1;;;;;7584:29:0;;;6959:24;;;;;;;;;;;;;;;;13070:126;;;;;;;;;;-1:-1:-1;13070:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;13172:12:0;;;13154:7;13172:12;;;:4;:12;;;;;;;;:21;;;;;;;;;;;;;13070:126;14563:538;;;;;;;;;;-1:-1:-1;14563:538:0;;;;;:::i;:::-;;:::i;18011:196::-;;;;;;;;;;-1:-1:-1;18011:196:0;;;;;:::i;:::-;;:::i;17714:289::-;;;;;;;;;;-1:-1:-1;17714:289:0;;;;;:::i;:::-;;:::i;6820:24::-;;;;;;;;;;;;;;;;16102:373;8955:6;;-1:-1:-1;;;;;8955:6:0;187:10;8955:22;8947:67;;;;-1:-1:-1;;;8947:67:0;;;;;;;:::i;:::-;;;;;;;;;16221:6:::1;;16210:7;:17;;:57;;;;;16261:6;;16248:9;:19;;16210:57;:97;;;;;16301:6;;16288:9;:19;;16210:97;16202:124;;;::::0;::::1;;16380:4;16367:9:::0;16345:19:::1;16355:9:::0;16345:7;:19:::1;:::i;:::-;:31;;;;:::i;:::-;:39;;16337:48;;;::::0;::::1;;16396:5;:15:::0;;;;16422:5:::1;:17:::0;16450:5:::1;:17:::0;16102:373::o;12918:69::-;12957:13;12981:3;12974:10;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12918:69;:::o;13564:161::-;13639:4;13656:39;187:10;13679:7;13688:6;13656:8;:39::i;:::-;-1:-1:-1;13713:4:0;13564:161;;;;;:::o;17167:283::-;8955:6;;-1:-1:-1;;;;;8955:6:0;187:10;8955:22;8947:67;;;;-1:-1:-1;;;8947:67:0;;;;;;;:::i;:::-;17247:13:::1;17285:7;17274;17264;;:17;;;;:::i;:::-;17263:29;;;;:::i;:::-;17247:45;;17331:4;17321:7;;:14;;;;:::i;:::-;17311:5;:25;;17303:73;;;;-1:-1:-1::0;;;17303:73:0::1;;;;;;;:::i;:::-;17387:4;:12:::0;;;17419:2:::1;::::0;17435:7;;17419:12:::1;::::0;17424:7;;17419:12:::1;:::i;:::-;17418:24;;;;:::i;:::-;17410:5;:32:::0;-1:-1:-1;;;17167:283:0:o;16864:139::-;8955:6;;-1:-1:-1;;;;;8955:6:0;187:10;8955:22;8947:67;;;;-1:-1:-1;;;8947:67:0;;;;;;;:::i;:::-;16949:3:::1;:8:::0;;;;16968:3:::1;:8:::0;16987:3:::1;:8:::0;16864:139::o;18693:862::-;8955:6;;-1:-1:-1;;;;;8955:6:0;187:10;8955:22;8947:67;;;;-1:-1:-1;;;8947:67:0;;;;;;;:::i;:::-;18798:4:::1;18787:15:::0;::::1;;;18783:765;;;-1:-1:-1::0;;;;;18828:12:0;::::1;;::::0;;;:3:::1;:12;::::0;;;;;::::1;;18827:13;18819:54;;;::::0;-1:-1:-1;;;18819:54:0;;13024:2:1;18819:54:0::1;::::0;::::1;13006:21:1::0;13063:2;13043:18;;;13036:30;13102;13082:18;;;13075:58;13150:18;;18819:54:0::1;12996:178:1::0;18819:54:0::1;-1:-1:-1::0;;;;;18891:13:0;::::1;18907:1;18891:13:::0;;;:4:::1;:13;::::0;;;;;:17;18888:107:::1;;-1:-1:-1::0;;;;;18965:13:0;::::1;;::::0;;;:4:::1;:13;::::0;;;;;18945:34:::1;::::0;:19:::1;:34::i;:::-;-1:-1:-1::0;;;;;18929:13:0;::::1;;::::0;;;:4:::1;:13;::::0;;;;:50;18888:107:::1;-1:-1:-1::0;;;;;;19009:12:0::1;;::::0;;;:3:::1;:12;::::0;;;;:19;;-1:-1:-1;;19009:19:0::1;19024:4;19009:19:::0;;::::1;::::0;;;19043:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;19043:23:0::1;::::0;;::::1;::::0;;18693:862::o;18783:765::-:1;19088:16:::0;19084:464:::1;;-1:-1:-1::0;;;;;19129:12:0;::::1;;::::0;;;:3:::1;:12;::::0;;;;;::::1;;19121:53;;;::::0;-1:-1:-1;;;19121:53:0;;11104:2:1;19121:53:0::1;::::0;::::1;11086:21:1::0;11143:2;11123:18;;;11116:30;11182;11162:18;;;11155:58;11230:18;;19121:53:0::1;11076:178:1::0;19121:53:0::1;19194:9;19189:348;19213:9;:16:::0;19209:20;::::1;19189:348;;;19275:7;-1:-1:-1::0;;;;;19259:23:0::1;:9;19269:1;19259:12;;;;;;-1:-1:-1::0;;;19259:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;19259:12:0::1;:23;19255:267;;;19322:9;19332:16:::0;;:20:::1;::::0;19351:1:::1;::::0;19332:20:::1;:::i;:::-;19322:31;;;;;;-1:-1:-1::0;;;19322:31:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;19307:9:::1;:12:::0;;-1:-1:-1;;;;;19322:31:0;;::::1;::::0;19317:1;;19307:12;::::1;;;-1:-1:-1::0;;;19307:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;19307:46:0::1;-1:-1:-1::0;;;;;19307:46:0;;::::1;;::::0;;19376:13;;::::1;::::0;;:4:::1;:13:::0;;;;;;:17;;;19416:3:::1;:12:::0;;;;:20;;-1:-1:-1;;19416:20:0::1;::::0;;19459:9:::1;:15:::0;;;::::1;;-1:-1:-1::0;;;19459:15:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;19459:15:0;;;;;-1:-1:-1;;;;;;19459:15:0::1;::::0;;;;;19497:5:::1;;19255:267;19231:3:::0;::::1;::::0;::::1;:::i;:::-;;;;19189:348;;;;19084:464;18693:862:::0;;:::o;13861:252::-;13959:4;13976:29;13979:6;13987:9;13998:6;13976:2;:29::i;:::-;-1:-1:-1;;;;;;14047:12:0;;;;;;:4;:12;;;;;;;;187:10;14047:26;;;;;;;;;14016:67;;14025:6;;14047:35;;14076:6;;14047:35;:::i;:::-;14016:8;:67::i;:::-;-1:-1:-1;14101:4:0;13861:252;;;;;:::o;15721:373::-;8955:6;;-1:-1:-1;;;;;8955:6:0;187:10;8955:22;8947:67;;;;-1:-1:-1;;;8947:67:0;;;;;;;:::i;:::-;15840:6:::1;;15829:7;:17;;:57;;;;;15880:6;;15867:9;:19;;15829:57;:97;;;;;15920:6;;15907:9;:19;;15829:97;15821:124;;;::::0;::::1;;15999:4;15986:9:::0;15964:19:::1;15974:9:::0;15964:7;:19:::1;:::i;:::-;:31;;;;:::i;:::-;:39;;15956:48;;;::::0;::::1;;16015:5;:15:::0;;;;16041:5:::1;:17:::0;16069:5:::1;:17:::0;15721:373::o;17458:248::-;8955:6;;-1:-1:-1;;;;;8955:6:0;187:10;8955:22;8947:67;;;;-1:-1:-1;;;8947:67:0;;;;;;;:::i;:::-;17526:13:::1;17558:1;17553;17543:7;;:11;;;;:::i;:::-;17542:17;;;;:::i;:::-;17526:33;;17599:4;17589:7;;:14;;;;:::i;:::-;17579:5;:25;;17571:73;;;;-1:-1:-1::0;;;17571:73:0::1;;;;;;;:::i;:::-;17655:4;:12:::0;;;17687:2:::1;::::0;17697:1;;17687:6:::1;::::0;17692:1;;17687:6:::1;:::i;:::-;17686:12;;;;:::i;:::-;17678:5;:20:::0;-1:-1:-1;;;17458:248:0:o;19885:250::-;19951:7;19990;;19979;:18;;19971:73;;;;-1:-1:-1;;;19971:73:0;;9572:2:1;19971:73:0;;;9554:21:1;9611:2;9591:18;;;9584:30;9650:34;9630:18;;;9623:62;-1:-1:-1;;;9701:18:1;;;9694:40;9751:19;;19971:73:0;9544:232:1;19971:73:0;20055:19;20078:10;:8;:10::i;:::-;20055:33;-1:-1:-1;20106:21:0;20055:33;20106:7;:21;:::i;:::-;20099:28;19885:250;-1:-1:-1;;;19885:250:0:o;14121:208::-;187:10;14209:4;14258:18;;;:4;:18;;;;;;;;-1:-1:-1;;;;;14258:27:0;;;;;;;;;;14209:4;;14226:73;;14249:7;;14258:40;;14288:10;;14258:40;:::i;27837:106::-;8955:6;;-1:-1:-1;;;;;8955:6:0;187:10;8955:22;8947:67;;;;-1:-1:-1;;;8947:67:0;;;;;;;:::i;:::-;11648:7;11675:6;;27887:48:::1;::::0;-1:-1:-1;;;;;11675:6:0;;;;27913:21:::1;27887:48:::0;::::1;;;::::0;27913:21;;27887:48;11648:7;27887:48;27913:21;11675:6;27887:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;27837:106::o:0;16483:373::-;8955:6;;-1:-1:-1;;;;;8955:6:0;187:10;8955:22;8947:67;;;;-1:-1:-1;;;8947:67:0;;;;;;;:::i;:::-;16602:6:::1;;16591:7;:17;;:57;;;;;16642:6;;16629:9;:19;;16591:57;:97;;;;;16682:6;;16669:9;:19;;16591:97;16583:124;;;::::0;::::1;;16761:4;16748:9:::0;16726:19:::1;16736:9:::0;16726:7;:19:::1;:::i;:::-;:31;;;;:::i;:::-;:39;;16718:48;;;::::0;::::1;;16777:5;:15:::0;;;;16803:5:::1;:17:::0;16831:5:::1;:17:::0;16483:373::o;11697:767::-;8955:6;;-1:-1:-1;;;;;8955:6:0;187:10;8955:22;8947:67;;;;-1:-1:-1;;;8947:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11778:22:0;::::1;11770:96;;;;-1:-1:-1::0;;;11770:96:0::1;;;;;;;:::i;:::-;11897:4;::::0;-1:-1:-1;;;;;11885:16:0;;::::1;11897:4:::0;::::1;11885:16;;11877:90;;;;-1:-1:-1::0;;;11877:90:0::1;;;;;;;:::i;:::-;11997:6;::::0;;11978:33:::1;::::0;-1:-1:-1;;;;;11997:6:0;;::::1;::::0;11978:18:::1;:33::i;:::-;12022:34;12041:8;12051:4;12022:18;:34::i;:::-;12067:37;12089:8;12099:4;12067:21;:37::i;:::-;12144:6;::::0;12129:3:::1;::::0;-1:-1:-1;;;;;12129:3:0;;::::1;12144:6:::0;::::1;12129:22;12125:64;;;12166:3;:23:::0;;-1:-1:-1;;;;;;12166:23:0::1;-1:-1:-1::0;;;;;12166:23:0;::::1;;::::0;;12125:64:::1;12245:6;::::0;12235:17:::1;::::0;-1:-1:-1;;;;;12245:6:0::1;12235:9;:17::i;:::-;12210:12;12215:6:::0;;-1:-1:-1;;;;;12215:6:0;;::::1;12210:12:::0;;:4:::1;:12;::::0;;;;;;;:22;;::::1;::::0;;;;;;;:42;;;;12276:6;;12210:12;;12266:17:::1;::::0;12276:6:::1;12266:9;:17::i;:::-;:21;12263:92;;;12307:6;::::0;12304:39:::1;::::0;-1:-1:-1;;;;;12307:6:0::1;12315:8:::0;12325:17:::1;12307:6:::0;12325:9:::1;:17::i;:::-;12304:2;:39::i;:::-;;12263:92;12375:6;:17:::0;;-1:-1:-1;;;;;;12375:17:0::1;-1:-1:-1::0;;;;;12375:17:0;::::1;::::0;;::::1;::::0;;12408:38:::1;::::0;12375:17;;;;12408:38:::1;::::0;12375:6;12408:38:::1;11697:767:::0;:::o;13733:120::-;13786:4;13810:35;13818:7;-1:-1:-1;;13810:7:0;:35::i;18566:119::-;8955:6;;-1:-1:-1;;;;;8955:6:0;187:10;8955:22;8947:67;;;;-1:-1:-1;;;8947:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18653:14:0;;;::::1;;::::0;;;:5:::1;:14;::::0;;;;:24;;-1:-1:-1;;18653:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18566:119::o;17011:148::-;8955:6;;-1:-1:-1;;;;;8955:6:0;187:10;8955:22;8947:67;;;;-1:-1:-1;;;8947:67:0;;;;;;;:::i;:::-;17098:15:::1;:27:::0;;;;17136:3:::1;:15:::0;17011:148::o;13204:184::-;-1:-1:-1;;;;;13294:12:0;;13270:7;13294:12;;;:3;:12;;;;;;;;13290:38;;;-1:-1:-1;;;;;;13315:13:0;;;;;:4;:13;;;;;;;13204:184::o;13290:38::-;-1:-1:-1;;;;;13366:13:0;;;;;;:4;:13;;;;;;13346:34;;:19;:34::i;12472:194::-;8955:6;;-1:-1:-1;;;;;8955:6:0;187:10;8955:22;8947:67;;;;-1:-1:-1;;;8947:67:0;;;;;;;:::i;:::-;12558:6:::1;::::0;;12539:33:::1;::::0;-1:-1:-1;;;;;12558:6:0;;::::1;::::0;12539:18:::1;:33::i;:::-;12600:1;12583:19:::0;;-1:-1:-1;;;;;;12583:19:0::1;::::0;;12618:40:::1;::::0;12600:1;;12618:40:::1;::::0;12600:1;;12618:40:::1;12472:194::o:0;24048:264::-;8955:6;;-1:-1:-1;;;;;8955:6:0;187:10;8955:22;8947:67;;;;-1:-1:-1;;;8947:67:0;;;;;;;:::i;:::-;24104:5:::1;::::0;::::1;;24103:6;24095:46;;;::::0;-1:-1:-1;;;24095:46:0;;10387:2:1;24095:46:0::1;::::0;::::1;10369:21:1::0;10426:2;10406:18;;;10399:30;10465:29;10445:18;;;10438:57;10512:18;;24095:46:0::1;10359:177:1::0;24095:46:0::1;24152:42;24182:4;24189;24152:21;:42::i;:::-;24227:6;::::0;24205:35:::1;::::0;-1:-1:-1;;;;;24227:6:0::1;::::0;24205:21:::1;:35::i;:::-;24253:5;:12:::0;;-1:-1:-1;;24253:12:0::1;24261:4;24253:12;::::0;;24276:21:::1;:28:::0;;-1:-1:-1;;;;24276:28:0::1;-1:-1:-1::0;;;24276:28:0::1;::::0;;24048:264::o;15109:379::-;8955:6;;-1:-1:-1;;;;;8955:6:0;187:10;8955:22;8947:67;;;;-1:-1:-1;;;8947:67:0;;;;;;;:::i;:::-;15190:16;15186:295:::1;;-1:-1:-1::0;;;;;;15223:10:0::1;15236:5;15223:10:::0;;;:4:::1;:10;::::0;;;;:18;;-1:-1:-1;;15223:18:0::1;::::0;;18693:862::o;15186:295::-:1;15278:4;::::0;:9;15274:127:::1;;15341:7;15334:4;;15316:15;:22;;;;:::i;:::-;:32;15308:77;;;::::0;-1:-1:-1;;;15308:77:0;;10743:2:1;15308:77:0::1;::::0;::::1;10725:21:1::0;;;10762:18;;;10755:30;10821:34;10801:18;;;10794:62;10873:18;;15308:77:0::1;10715:182:1::0;15308:77:0::1;-1:-1:-1::0;;;;;15415:10:0;::::1;;::::0;;;:4:::1;:10;::::0;;;;:17;;-1:-1:-1;;15415:17:0::1;15428:4;15415:17;::::0;;15454:15:::1;15447:4;:22:::0;15109:379;;:::o;9810:1792::-;8955:6;;-1:-1:-1;;;;;8955:6:0;187:10;8955:22;8947:67;;;;-1:-1:-1;;;8947:67:0;;;;;;;:::i;:::-;9973:3:::1;::::0;::::1;;9972:4;9964:13;;;::::0;::::1;;9990;:40:::0;;-1:-1:-1;;;;;9990:40:0;;::::1;-1:-1:-1::0;;;;;;9990:40:0;;::::1;::::0;::::1;::::0;;;10041:3:::1;:20:::0;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;9990:13:::1;10074:20:::0;;;:5:::1;:20;::::0;;;;;;;:27;;-1:-1:-1;;10074:27:0;;::::1;9990:40:::0;10074:27;;::::1;::::0;;;10118:3;;;;::::1;10112:10:::0;;;;;:17;;;;::::1;;::::0;;10142:16;;::::1;::::0;:3:::1;::::0;:16;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;10169:17:0;;::::1;::::0;:2:::1;::::0;:17:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;10202:13:0::1;10197:2;:18:::0;10264:9:::1;:14:::0;;-1:-1:-1;;10264:14:0::1;10276:2;10264:14:::0;;::::1;::::0;;;10293:12:::1;:24:::0;10444:12:::1;::::0;10440:16:::1;::::0;:2:::1;:16;:::i;:::-;10434:2;;:23;;;;:::i;:::-;10424:7;:33:::0;;;10486:13:::1;::::0;-1:-1:-1;;10486:13:0::1;:::i;:::-;10479:21;::::0;-1:-1:-1;;10479:21:0::1;:::i;:::-;10468:7;:33:::0;10545:14:::1;::::0;10514:9:::1;:46:::0;;-1:-1:-1;;;;;;10514:46:0::1;-1:-1:-1::0;;;;;10545:14:0;;::::1;10514:46:::0;;::::1;::::0;;10598:19:::1;::::0;;-1:-1:-1;;;10598:19:0;;;;:17:::1;::::0;:19:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;10545:14;10598:19;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10580:49:0::1;;10630:9;;;;;;;;;-1:-1:-1::0;;;;;10630:9:0::1;-1:-1:-1::0;;;;;10630:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10580:82;::::0;-1:-1:-1;;;;;;10580:82:0::1;::::0;;;;;;-1:-1:-1;;;;;6269:15:1;;;10580:82:0::1;::::0;::::1;6251:34:1::0;10656:4:0::1;6301:18:1::0;;;6294:43;6186:18;;10580:82:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10571:6;:91:::0;;-1:-1:-1;;;;;;10571:91:0::1;-1:-1:-1::0;;;;;10571:91:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;10673:12:0;;;:4:::1;:12;::::0;;;;;;;:19;;-1:-1:-1;;10673:19:0::1;-1:-1:-1::0;10673:19:0::1;::::0;;10716:4:::1;10703:19:::0;;:4:::1;:19:::0;;;;;10731:9:::1;::::0;;;::::1;10703:39:::0;;;;;;-1:-1:-1;;10703:59:0;;10791:7:::1;::::0;10809:6:::1;::::0;10791:14:::1;::::0;10801:4:::1;10791:14;:::i;:::-;10790:25;;;;:::i;:::-;10783:4;:32:::0;10835:2:::1;::::0;10847:6:::1;::::0;10835:8:::1;::::0;10840:3:::1;10835:8;:::i;:::-;10834:19;;;;:::i;:::-;10826:5;:27:::0;10872:7:::1;::::0;10888:4:::1;::::0;10872:12:::1;::::0;10882:2:::1;10872:12;:::i;:::-;10871:21;;;;:::i;:::-;10864:4;:28:::0;10912:2:::1;::::0;;10923:4:::1;::::0;10912:7:::1;::::0;:2;:7:::1;:::i;:::-;10911:16;;;;:::i;:::-;10903:5;:24:::0;10955:7:::1;::::0;10970:5:::1;::::0;10955:11:::1;::::0;10965:1:::1;10955:11;:::i;:::-;10954:21;;;;:::i;:::-;10938:13;:37:::0;11000:7:::1;::::0;11016:5:::1;::::0;11000:12:::1;::::0;11010:2:::1;11000:12;:::i;:::-;10999:22;;;;:::i;:::-;10986:10;:35:::0;11042:14:::1;::::0;11034:42:::1;::::0;-1:-1:-1;;;;;11042:14:0::1;-1:-1:-1::0;;11034:7:0::1;:42::i;:::-;-1:-1:-1::0;11089:3:0::1;:10:::0;;-1:-1:-1;;11089:10:0::1;11095:4;11089:10:::0;;::::1;::::0;;;11126:7:::1;::::0;;11089:3:::1;11115:7;11648::::0;11675:6;-1:-1:-1;;;;;11675:6:0;;11610:79;11115:7:::1;-1:-1:-1::0;;;;;11110:13:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;11110:13:0;:23;11164:7:::1;11648::::0;11675:6;-1:-1:-1;;;;;11675:6:0;;11610:79;11164:7:::1;11158:4;::::0;11173:7:::1;::::0;11149:32:::1;::::0;16094:25:1;;;-1:-1:-1;;;;;11149:32:0;;::::1;::::0;11158:4;;::::1;::::0;11149:32:::1;::::0;16082:2:1;16067:18;11149:32:0::1;;;;;;;11226:9;::::0;11194:62:::1;::::0;11211:4:::1;::::0;-1:-1:-1;;;;;11226:9:0::1;-1:-1:-1::0;;11194:8:0::1;:62::i;:::-;11269:46;11272:7;11648::::0;11675:6;-1:-1:-1;;;;;11675:6:0;;11610:79;11272:7:::1;11289:4;11296:18;11306:7;11648::::0;11675:6;-1:-1:-1;;;;;11675:6:0;;11610:79;11269:46:::1;-1:-1:-1::0;11342:9:0::1;::::0;-1:-1:-1;;;;;11342:9:0::1;:25;11375:21;11420:4;11440:24;11420:4:::0;11440:9:::1;:24::i;:::-;11479:1;11496::::0;11513:7:::1;11648::::0;11675:6;-1:-1:-1;;;;;11675:6:0;;11610:79;11513:7:::1;11535:15;11342:219;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;11582:12:0::1;11572:7;:22:::0;-1:-1:-1;;;;;9810:1792:0:o;12841:70::-;12882:13;12906:2;12899:9;;;;;:::i;14337:218::-;187:10;14430:4;14479:18;;;:4;:18;;;;;;;;-1:-1:-1;;;;;14479:27:0;;;;;;;;;;14430:4;;14447:78;;14470:7;;14479:45;;14509:15;;14479:45;:::i;13396:160::-;13474:4;13491:35;187:10;13508:9;13519:6;13491:2;:35::i;18215:166::-;8955:6;;-1:-1:-1;;;;;8955:6:0;187:10;8955:22;8947:67;;;;-1:-1:-1;;;8947:67:0;;;;;;;:::i;:::-;18298:3:::1;::::0;-1:-1:-1;;;;;18298:16:0;;::::1;:3:::0;::::1;:16;;18290:48;;;::::0;-1:-1:-1;;;18290:48:0;;12676:2:1;18290:48:0::1;::::0;::::1;12658:21:1::0;12715:2;12695:18;;;12688:30;-1:-1:-1;;;12734:18:1;;;12727:49;12793:18;;18290:48:0::1;12648:169:1::0;18290:48:0::1;18349:3;:24:::0;;-1:-1:-1;;;;;;18349:24:0::1;-1:-1:-1::0;;;;;18349:24:0;;;::::1;::::0;;;::::1;::::0;;18215:166::o;18387:171::-;8955:6;;-1:-1:-1;;;;;8955:6:0;187:10;8955:22;8947:67;;;;-1:-1:-1;;;8947:67:0;;;;;;;:::i;:::-;18464:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;18464:32:0::1;-1:-1:-1::0;;;;18464:32:0;;::::1;;::::0;;18512:38:::1;::::0;::::1;::::0;::::1;::::0;18488:8;7745:14:1;7738:22;7720:41;;7708:2;7693:18;;7675:92;18512:38:0::1;;;;;;;;18387:171:::0;:::o;14563:538::-;8955:6;;-1:-1:-1;;;;;8955:6:0;187:10;8955:22;8947:67;;;;-1:-1:-1;;;8947:67:0;;;;;;;:::i;:::-;14636:29:::1;14687:9;14636:61;;14708:11;14740:10;-1:-1:-1::0;;;;;14740:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14722:47:0::1;;14778:4;14785:10;-1:-1:-1::0;;;;;14785:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14722:81;::::0;-1:-1:-1;;;;;;14722:81:0::1;::::0;;;;;;-1:-1:-1;;;;;6269:15:1;;;14722:81:0::1;::::0;::::1;6251:34:1::0;6321:15;;6301:18;;;6294:43;6186:18;;14722:81:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14708:95:::0;-1:-1:-1;;;;;;14818:17:0;::::1;14814:197;;14879:10;-1:-1:-1::0;;;;;14879:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14861:50:0::1;;14920:4;14927:10;-1:-1:-1::0;;;;;14927:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14861:84;::::0;-1:-1:-1;;;;;;14861:84:0::1;::::0;;;;;;-1:-1:-1;;;;;6269:15:1;;;14861:84:0::1;::::0;::::1;6251:34:1::0;6321:15;;6301:18;;;6294:43;6186:18;;14861:84:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14852:6;:93:::0;;-1:-1:-1;;;;;;14852:93:0::1;-1:-1:-1::0;;;;;14852:93:0;;;::::1;::::0;;;::::1;::::0;;14814:197:::1;;;14987:6;:12:::0;;-1:-1:-1;;;;;;14987:12:0::1;-1:-1:-1::0;;;;;14987:12:0;::::1;;::::0;;14814:197:::1;15021:9;:22:::0;;-1:-1:-1;;;;;;15021:22:0::1;-1:-1:-1::0;;;;;15021:22:0;::::1;;::::0;;15054:39:::1;15071:4;15078:9:::0;-1:-1:-1;;15054:8:0::1;:39::i;18011:196::-:0;8955:6;;-1:-1:-1;;;;;8955:6:0;187:10;8955:22;8947:67;;;;-1:-1:-1;;;8947:67:0;;;;;;;:::i;:::-;18104:13:::1;::::0;-1:-1:-1;;;;;18104:26:0;;::::1;:13:::0;::::1;:26;;18096:58;;;::::0;-1:-1:-1;;;18096:58:0;;12676:2:1;18096:58:0::1;::::0;::::1;12658:21:1::0;12715:2;12695:18;;;12688:30;-1:-1:-1;;;12734:18:1;;;12727:49;12793:18;;18096:58:0::1;12648:169:1::0;18096:58:0::1;18165:13;:34:::0;;-1:-1:-1;;;;;;18165:34:0::1;-1:-1:-1::0;;;;;18165:34:0;;;::::1;::::0;;;::::1;::::0;;18011:196::o;17714:289::-;8955:6;;-1:-1:-1;;;;;8955:6:0;187:10;8955:22;8947:67;;;;-1:-1:-1;;;8947:67:0;;;;;;;:::i;:::-;17914:16:::1;17894;17884:7;;:26;;;;:::i;:::-;17883:47;;;;:::i;:::-;17867:13;:63:::0;17955:7:::1;::::0;17982:13;;17955:23:::1;::::0;17965:13;;17955:23:::1;:::i;:::-;17954:41;;;;:::i;:::-;17941:10;:54:::0;-1:-1:-1;;;;17714:289:0:o;20147:335::-;-1:-1:-1;;;;;20242:20:0;;20234:69;;;;-1:-1:-1;;;20234:69:0;;11461:2:1;20234:69:0;;;11443:21:1;11500:2;11480:18;;;11473:30;11539:34;11519:18;;;11512:62;-1:-1:-1;;;11590:18:1;;;11583:34;11634:19;;20234:69:0;11433:226:1;20234:69:0;-1:-1:-1;;;;;20322:21:0;;20314:68;;;;-1:-1:-1;;;20314:68:0;;8816:2:1;20314:68:0;;;8798:21:1;8855:2;8835:18;;;8828:30;8894:34;8874:18;;;8867:62;-1:-1:-1;;;8945:18:1;;;8938:32;8987:19;;20314:68:0;8788:224:1;20314:68:0;-1:-1:-1;;;;;20395:12:0;;;;;;;:4;:12;;;;;;;;:21;;;;;;;;;;;;;:30;;;20441:33;;16094:25:1;;;20441:33:0;;16067:18:1;20441:33:0;;;;;;;20147:335;;;:::o;20490:1688::-;20562:4;-1:-1:-1;;;;;20587:18:0;;20579:68;;;;-1:-1:-1;;;20579:68:0;;14554:2:1;20579:68:0;;;14536:21:1;14593:2;14573:18;;;14566:30;14632:34;14612:18;;;14605:62;-1:-1:-1;;;14683:18:1;;;14676:35;14728:19;;20579:68:0;14526:227:1;20579:68:0;-1:-1:-1;;;;;20666:16:0;;20658:64;;;;-1:-1:-1;;;20658:64:0;;14960:2:1;20658:64:0;;;14942:21:1;14999:2;14979:18;;;14972:30;15038:34;15018:18;;;15011:62;-1:-1:-1;;;15089:18:1;;;15082:33;15132:19;;20658:64:0;14932:225:1;20658:64:0;20750:1;20741:6;:10;20733:64;;;;-1:-1:-1;;;20733:64:0;;14144:2:1;20733:64:0;;;14126:21:1;14183:2;14163:18;;;14156:30;14222:34;14202:18;;;14195:62;-1:-1:-1;;;14273:18:1;;;14266:39;14322:19;;20733:64:0;14116:231:1;20733:64:0;20811:20;20822:4;20828:2;20811:10;:20::i;:::-;20808:737;;;20852:5;;;;20848:80;;20878:34;;-1:-1:-1;;;20878:34:0;;9219:2:1;20878:34:0;;;9201:21:1;9258:2;9238:18;;;9231:30;9297:26;9277:18;;;9270:54;9341:18;;20878:34:0;9191:174:1;20848:80:0;20946:15;;;;20942:352;;;-1:-1:-1;;;;;20986:10:0;;;;;;:4;:10;;;;;;;;20982:297;;;21045:16;:12;21060:1;21045:16;:::i;:::-;-1:-1:-1;;;;;21028:13:0;;;;;;:9;:13;;;;;;:33;;21020:42;;;;;;-1:-1:-1;;;;;21085:13:0;;;;;;:9;:13;;;;;21101:12;21085:28;;20982:297;;;21189:16;:12;21204:1;21189:16;:::i;:::-;-1:-1:-1;;;;;21170:15:0;;;;;;:9;:15;;;;;;:35;;21162:44;;;;;;-1:-1:-1;;;;;21229:15:0;;;;;;:9;:15;;;;;21247:12;21229:30;;20982:297;21326:4;;21316:6;:14;;21308:60;;;;-1:-1:-1;;;21308:60:0;;13381:2:1;21308:60:0;;;13363:21:1;13420:2;13400:18;;;13393:30;13459:34;13439:18;;;13432:62;-1:-1:-1;;;13510:18:1;;;13503:31;13551:19;;21308:60:0;13353:223:1;21308:60:0;21392:14;;-1:-1:-1;;;;;21386:20:0;;;21392:14;;21386:20;;;;:33;;-1:-1:-1;;;;;;21411:8:0;;;;;;:4;:8;;;;;;;;21410:9;21386:33;21383:151;;;21474:4;;21464:6;21448:13;21458:2;21448:9;:13::i;:::-;:22;;;;:::i;:::-;:30;;21440:78;;;;-1:-1:-1;;;21440:78:0;;9983:2:1;21440:78:0;;;9965:21:1;10022:2;10002:18;;;9995:30;10061:34;10041:18;;;10034:62;-1:-1:-1;;;10112:18:1;;;10105:33;10155:19;;21440:78:0;9955:225:1;21440:78:0;-1:-1:-1;;;;;21588:11:0;;21555:12;21588:11;;;:5;:11;;;;;;21570:4;;21588:11;;;:24;;-1:-1:-1;;;;;;21603:9:0;;;;;;:5;:9;;;;;;;;21588:24;21585:70;;;-1:-1:-1;21638:5:0;21585:70;-1:-1:-1;;;;;21671:8:0;;;;;;:4;:8;;;;;;;;21667:454;;;21701:16;;-1:-1:-1;;;21701:16:0;;;;21700:17;:59;;;;-1:-1:-1;21738:21:0;;-1:-1:-1;;;21738:21:0;;;;21700:59;21696:408;;;21794:28;21825:24;21843:4;21825:9;:24::i;:::-;21794:55;;21896:13;;21872:20;:37;21868:221;;21961:10;;21937:20;:34;21934:77;;-1:-1:-1;21998:10:0;;21934:77;22033:36;22048:20;22033:14;:36::i;:::-;21696:408;;22139:31;22144:4;22150:2;22154:6;22162:7;22139:4;:31::i;:::-;22132:38;20490:1688;-1:-1:-1;;;;;20490:1688:0:o;26970:161::-;27012:7;27033:15;27050;27069:19;:17;:19::i;:::-;27032:56;;-1:-1:-1;27032:56:0;-1:-1:-1;27106:17:0;27032:56;;27106:17;:::i;:::-;27099:24;;;;26970:161;:::o;19658:219::-;19727:4;11675:6;;-1:-1:-1;;;;;19751:15:0;;;11675:6;;19751:15;;;;:33;;-1:-1:-1;11648:7:0;11675:6;-1:-1:-1;;;;;19771:13:0;;;11675:6;;19771:13;;19751:33;:45;;;;-1:-1:-1;;;;;;19789:7:0;;;;;;:3;:7;;;;;;;;19788:8;19751:45;:59;;;;-1:-1:-1;;;;;;19801:9:0;;;;;;:3;:9;;;;;;;;19800:10;19751:59;:73;;;;-1:-1:-1;19820:4:0;;-1:-1:-1;;;;;19814:10:0;;;19820:4;;19814:10;;19751:73;:93;;;;-1:-1:-1;;;;;;19828:16:0;;;;19751:93;:118;;;;-1:-1:-1;;;;;;19848:21:0;;19864:4;19848:21;;19744:125;19658:219;-1:-1:-1;;;19658:219:0:o;22186:1421::-;8829:16;:23;;-1:-1:-1;;;;8829:23:0;-1:-1:-1;;;8829:23:0;;;22294:3:::1;::::0;22276:15:::1;::::0;:21:::1;::::0;22294:3;22276:21:::1;:::i;:::-;22272:52;;22317:7;;22272:52;22334:17;22425:1;22417:3;;22399:15;;:21;;;;:::i;:::-;22379:15;::::0;22356:38:::1;::::0;:20;:38:::1;:::i;:::-;22355:66;;;;:::i;:::-;22354:72;;;;:::i;:::-;22334:92:::0;-1:-1:-1;22439:20:0::1;22462:32;22334:92:::0;22462:20;:32:::1;:::i;:::-;22531:16;::::0;;22545:1:::1;22531:16:::0;;;;;::::1;::::0;;22439:55;;-1:-1:-1;22507:21:0::1;::::0;22531:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;22531:16:0::1;22507:40;;22576:4;22558;22563:1;22558:7;;;;;;-1:-1:-1::0;;;22558:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;22558:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;22602:9:::1;::::0;:16:::1;::::0;;-1:-1:-1;;;22602:16:0;;;;:9;;;::::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;22558:7;;22602:16;;;;;:9;:16;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22592:4;22597:1;22592:7;;;;;;-1:-1:-1::0;;;22592:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;22592:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;22631:9:::1;::::0;:191:::1;::::0;-1:-1:-1;;;22631:191:0;;:9;::::1;::::0;:60:::1;::::0;:191:::1;::::0;22706:12;;22631:9:::1;::::0;22749:4;;22776::::1;::::0;22796:15:::1;::::0;22631:191:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22837:24;22936:1;22928:3;;22910:15;;:21;;;;:::i;:::-;22890:15;::::0;22866:39:::1;::::0;:21:::1;:39;:::i;:::-;22865:67;;;;:::i;:::-;22864:73;;;;:::i;:::-;22837:100:::0;-1:-1:-1;22954:13:0;;22950:343:::1;;22984:9;::::0;23155:3:::1;::::0;22984:223:::1;::::0;-1:-1:-1;;;22984:223:0;;-1:-1:-1;;;;;22984:9:0;;::::1;::::0;:25:::1;::::0;23017:16;;22984:223:::1;::::0;23061:4:::1;::::0;23085:9;;22984::::1;::::0;;;23155:3:::1;::::0;23177:15:::1;::::0;22984:223:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;23227:54:0::1;::::0;;17320:25:1;;;17376:2;17361:18;;17354:34;;;17404:18;;;17397:34;;;23227:54:0::1;::::0;-1:-1:-1;17308:2:1;17293:18;23227:54:0::1;;;;;;;22950:343;23342:1;23307:32;23330:9:::0;23307:20;:32:::1;:::i;:::-;:36;23303:297;;;23458:3;::::0;23452::::1;::::0;23387:21:::1;::::0;23362::::1;::::0;23437:19:::1;::::0;23387:21;23437:19:::1;:::i;:::-;:25;;;;:::i;:::-;23424:38;;23477:10;23511:3;;23505;;23490:13;:19;;;;:::i;:::-;:25;;;;:::i;:::-;23517:3;::::0;:16:::1;::::0;23477:38;;-1:-1:-1;;;;;;23517:3:0::1;::::0;:16;::::1;;;::::0;23477:38;;23517:3:::1;:16:::0;:3;:16;23477:38;23517:3;:16;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;23549:13:0::1;::::0;:26:::1;::::0;-1:-1:-1;;;;;23549:13:0;;::::1;::::0;:26;::::1;;;::::0;23572:2;;23549:13:::1;:26:::0;:13;:26;23572:2;23549:13;:26;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;23303:297;;;;8863:1;;;;;-1:-1:-1::0;8875:16:0;:24;;-1:-1:-1;;;;8875:24:0;;;22186:1421::o;24526:1181::-;24641:16;;24615:4;;24641:16;;;;;24636:237;;24678:28;24697:4;24703:2;24678:18;:28::i;:::-;24730:16;;;;;;;24729:17;:41;;;;;24750:20;24761:4;24767:2;24750:10;:20::i;:::-;24725:137;;;24795:47;;-1:-1:-1;;;24795:47:0;;11866:2:1;24795:47:0;;;11848:21:1;11905:2;11885:18;;;11878:30;11944:34;11924:18;;;11917:62;-1:-1:-1;;;11995:18:1;;;11988:35;12040:19;;24795:47:0;11838:227:1;24725:137:0;24893:25;24921:38;24932:4;24938:2;24942:7;24951;24921:10;:38::i;:::-;24998:14;;;;-1:-1:-1;;;;;24985:10:0;;;;;;:4;:10;;;;;;24893:66;;-1:-1:-1;24985:27:0;;;:::i;:::-;-1:-1:-1;;;;;24972:10:0;;;;;;;:4;:10;;;;;;:40;;;;25045:22;;;;25034:8;;;;;;;;;;:33;;25045:22;25034:33;:::i;:::-;-1:-1:-1;;;;;25023:8:0;;;;;;;:4;:8;;;;;;;;:44;;;;25084:9;;;;;:3;:9;;;;;;;:21;;;;-1:-1:-1;;;;;;25098:7:0;;;;;;:3;:7;;;;;;;;25097:8;25084:21;25080:344;;;-1:-1:-1;;;;;25135:10:0;;;;;;:4;:10;;;;;;:20;;25148:7;;25135:20;:::i;:::-;-1:-1:-1;;;;;25122:10:0;;;;;;:4;:10;;;;;:33;25080:344;;;-1:-1:-1;;;;;25178:9:0;;;;;;:3;:9;;;;;;;;25177:10;:21;;;;-1:-1:-1;;;;;;25191:7:0;;;;;;:3;:7;;;;;;;;25177:21;25173:251;;;25237:22;;-1:-1:-1;;;;;25226:8:0;;25237:22;25226:8;;;:4;:8;;;;;;:33;;25237:22;25226:33;:::i;:::-;-1:-1:-1;;;;;25215:8:0;;;;;;:4;:8;;;;;:44;25173:251;;;-1:-1:-1;;;;;25283:9:0;;;;;;:3;:9;;;;;;;;:20;;;;-1:-1:-1;;;;;;25296:7:0;;;;;;:3;:7;;;;;;;;25283:20;25279:145;;;-1:-1:-1;;;;;25333:10:0;;;;;;:4;:10;;;;;;:20;;25346:7;;25333:20;:::i;:::-;-1:-1:-1;;;;;25320:10:0;;;;;;;:4;:10;;;;;;:33;;;;25390:22;;25379:8;;;;;;;;;;:33;;25390:22;25379:33;:::i;:::-;-1:-1:-1;;;;;25368:8:0;;;;;;:4;:8;;;;;:44;25279:145;25440:17;;;;:21;25436:79;;25476:39;25491:4;25497:6;:17;;;25476:14;:39::i;:::-;25544:1;25530:6;:11;;;:15;:34;;;;25563:1;25549:6;:11;;;:15;25530:34;25526:91;;;25579:38;25592:6;:11;;;25605:6;:11;;;25579:12;:38::i;:::-;25650:2;-1:-1:-1;;;;;25635:42:0;25644:4;-1:-1:-1;;;;;25635:42:0;;25654:6;:22;;;25635:42;;;;16094:25:1;;16082:2;16067:18;;16049:76;25635:42:0;;;;;;;;-1:-1:-1;25695:4:0;;24526:1181;-1:-1:-1;;;;;24526:1181:0:o;27139:535::-;27237:7;;27273;;27190;;;;;27291:271;27315:9;:16;27311:20;;27291:271;;;27378:7;27357:4;:18;27362:9;27372:1;27362:12;;;;;;-1:-1:-1;;;27362:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27362:12:0;27357:18;;;;;;;;;;;;;:28;;:60;;;27410:7;27389:4;:18;27394:9;27404:1;27394:12;;;;;;-1:-1:-1;;;27394:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27394:12:0;27389:18;;;;;;;;;;;;;:28;27357:60;27353:91;;;27427:7;;27436;;27419:25;;;;;;;27139:535;;:::o;27353:91::-;27479:4;:18;27484:9;27494:1;27484:12;;;;;;-1:-1:-1;;;27484:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27484:12:0;27479:18;;;;;;;;;;;;;27469:28;;:7;:28;:::i;:::-;27459:38;;27532:4;:18;27537:9;27547:1;27537:12;;;;;;-1:-1:-1;;;27537:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27537:12:0;27532:18;;;;;;;;;;;;;27522:28;;:7;:28;:::i;:::-;27512:38;-1:-1:-1;27333:3:0;;;;:::i;:::-;;;;27291:271;;;;27596:7;;27586;;:17;;;;:::i;:::-;27576:7;:27;27572:58;;;27613:7;;27622;;27605:25;;;;;;27139:535;;:::o;27572:58::-;27649:7;;27658;;-1:-1:-1;27139:535:0;-1:-1:-1;27139:535:0:o;23623:417::-;23706:16;;;;;;;23705:17;23697:57;;;;-1:-1:-1;;;23697:57:0;;15794:2:1;23697:57:0;;;15776:21:1;15833:2;15813:18;;;15806:30;15872:29;15852:18;;;15845:57;15919:18;;23697:57:0;15766:177:1;23697:57:0;23770:20;23781:4;23787:2;23770:10;:20::i;:::-;23769:21;:37;;;;-1:-1:-1;23800:6:0;;-1:-1:-1;;;;;23794:12:0;;;23800:6;;23794:12;23769:37;23765:268;;;-1:-1:-1;;;;;23823:9:0;;;;;;:3;:9;;;;;;;:16;;-1:-1:-1;;23823:16:0;23835:4;23823:16;;;;;;23854;:23;;-1:-1:-1;;23854:23:0;23823:16;23854:23;;;23907:15;23892:12;:30;23939:21;:28;;-1:-1:-1;;;;23939:28:0;-1:-1:-1;;;23939:28:0;;;23987:34;;;;;;7745:14:1;;7738:22;7720:41;;7708:2;7693:18;;7675:92;23987:34:0;;;;;;;;23623:417;;:::o;25715:1247::-;25810:18;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25810:18:0;25841:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25841:25:0;25877:19;25899:10;:8;:10::i;:::-;25877:32;-1:-1:-1;25939:21:0;25877:32;25939:7;:21;:::i;:::-;25922:14;;;:38;25973:854;;;;-1:-1:-1;;;;;26004:8:0;;;;;;:4;:8;;;;;;;;26000:369;;;26040:5;;26033:4;:12;26071:5;;26064:4;:12;26102:5;;26095:4;:12;26000:369;;;-1:-1:-1;;;;;26133:10:0;;;;;;:4;:10;;;;;;;;26129:240;;;26171:5;;26164:4;:12;26202:5;;26195:4;:12;26233:5;;26226:4;:12;26129:240;;;26286:5;;26279:4;:12;26317:5;;26310:4;:12;26348:5;;26341:4;:12;26129:240;26418:16;;26410:4;;26400:14;;:7;:14;:::i;:::-;26399:35;;;;:::i;:::-;26385:11;;;:49;26497:16;;26488:4;;26481;;:11;;26488:4;26481:11;:::i;:::-;26470:23;;:7;:23;:::i;:::-;26469:44;;;;:::i;:::-;26449:17;;;:64;;;26564:11;;;;:31;;26449:64;26564:31;:::i;:::-;26553:43;;:7;:43;:::i;:::-;26528:68;;26627:11;;;;:25;;26641:11;;26627:25;:::i;:::-;26613:11;;;:39;25973:854;;;26699:1;26685:11;;;:15;;;26715:17;;;:21;;;26751:32;;;26800:11;;;:15;25973:854;26917:11;26897:6;:17;;;:31;;;;:::i;:::-;26882:6;:11;;;:47;;;;:::i;:::-;26864:6;:14;;;:66;;;;:::i;:::-;26839:22;;;:91;-1:-1:-1;26839:22:0;25715:1247;-1:-1:-1;;;;;25715:1247:0:o;27955:403::-;28035:19;28058:10;:8;:10::i;:::-;28035:33;-1:-1:-1;28079:18:0;28100:24;28035:33;28100:10;:24;:::i;:::-;28170:4;28157:19;;;;:4;:19;;;;;;28079:45;;-1:-1:-1;28157:32:0;;28079:45;;28157:32;:::i;:::-;28148:4;28135:19;;;;:4;:19;;;;;;;;:54;;;;28203:3;:18;;;;;;28200:90;;;28271:4;28258:19;;;;:4;:19;;;;;;:32;;28280:10;;28258:32;:::i;:::-;28249:4;28236:19;;;;:4;:19;;;;;:54;28200:90;28306:43;;16094:25:1;;;28331:4:0;;-1:-1:-1;;;;;28306:43:0;;;;;16082:2:1;16067:18;28306:43:0;;;;;;;27955:403;;;;:::o;27686:143::-;27776:4;27766:7;;:14;;;;:::i;:::-;27756:7;:24;27804:10;;:17;;27817:4;;27804:17;:::i;:::-;27791:10;:30;-1:-1:-1;;27686:143:0:o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:160:1;79:20;;135:13;;128:21;118:32;;108:2;;164:1;161;154:12;108:2;60:114;;;:::o;179:739::-;222:5;275:3;268:4;260:6;256:17;252:27;242:2;;297:5;290;283:20;242:2;337:6;324:20;363:18;400:2;396;393:10;390:2;;;406:18;;:::i;:::-;481:2;475:9;449:2;535:13;;-1:-1:-1;;531:22:1;;;555:2;527:31;523:40;511:53;;;579:18;;;599:22;;;576:46;573:2;;;625:18;;:::i;:::-;665:10;661:2;654:22;700:2;692:6;685:18;746:3;739:4;734:2;726:6;722:15;718:26;715:35;712:2;;;767:5;760;753:20;712:2;835;828:4;820:6;816:17;809:4;801:6;797:17;784:54;858:15;;;875:4;854:26;847:41;;;;-1:-1:-1;862:6:1;232:686;-1:-1:-1;;;232:686:1:o;923:257::-;982:6;1035:2;1023:9;1014:7;1010:23;1006:32;1003:2;;;1056:6;1048;1041:22;1003:2;1100:9;1087:23;1119:31;1144:5;1119:31;:::i;1185:261::-;1255:6;1308:2;1296:9;1287:7;1283:23;1279:32;1276:2;;;1329:6;1321;1314:22;1276:2;1366:9;1360:16;1385:31;1410:5;1385:31;:::i;1721:866::-;1843:6;1851;1859;1867;1920:3;1908:9;1899:7;1895:23;1891:33;1888:2;;;1942:6;1934;1927:22;1888:2;1986:9;1973:23;2005:31;2030:5;2005:31;:::i;:::-;2055:5;-1:-1:-1;2112:2:1;2097:18;;2084:32;2125:33;2084:32;2125:33;:::i;:::-;2177:7;-1:-1:-1;2235:2:1;2220:18;;2207:32;2258:18;2288:14;;;2285:2;;;2320:6;2312;2305:22;2285:2;2348:50;2390:7;2381:6;2370:9;2366:22;2348:50;:::i;:::-;2338:60;;2451:2;2440:9;2436:18;2423:32;2407:48;;2480:2;2470:8;2467:16;2464:2;;;2501:6;2493;2486:22;2464:2;;2529:52;2573:7;2562:8;2551:9;2547:24;2529:52;:::i;:::-;2519:62;;;1878:709;;;;;;;:::o;2592:398::-;2660:6;2668;2721:2;2709:9;2700:7;2696:23;2692:32;2689:2;;;2742:6;2734;2727:22;2689:2;2786:9;2773:23;2805:31;2830:5;2805:31;:::i;:::-;2855:5;-1:-1:-1;2912:2:1;2897:18;;2884:32;2925:33;2884:32;2925:33;:::i;:::-;2977:7;2967:17;;;2679:311;;;;;:::o;2995:466::-;3072:6;3080;3088;3141:2;3129:9;3120:7;3116:23;3112:32;3109:2;;;3162:6;3154;3147:22;3109:2;3206:9;3193:23;3225:31;3250:5;3225:31;:::i;:::-;3275:5;-1:-1:-1;3332:2:1;3317:18;;3304:32;3345:33;3304:32;3345:33;:::i;:::-;3099:362;;3397:7;;-1:-1:-1;;;3451:2:1;3436:18;;;;3423:32;;3099:362::o;3466:325::-;3531:6;3539;3592:2;3580:9;3571:7;3567:23;3563:32;3560:2;;;3613:6;3605;3598:22;3560:2;3657:9;3644:23;3676:31;3701:5;3676:31;:::i;:::-;3726:5;-1:-1:-1;3750:35:1;3781:2;3766:18;;3750:35;:::i;:::-;3740:45;;3550:241;;;;;:::o;3796:325::-;3864:6;3872;3925:2;3913:9;3904:7;3900:23;3896:32;3893:2;;;3946:6;3938;3931:22;3893:2;3990:9;3977:23;4009:31;4034:5;4009:31;:::i;:::-;4059:5;4111:2;4096:18;;;;4083:32;;-1:-1:-1;;;3883:238:1:o;4126:190::-;4182:6;4235:2;4223:9;4214:7;4210:23;4206:32;4203:2;;;4256:6;4248;4241:22;4203:2;4284:26;4300:9;4284:26;:::i;4321:190::-;4380:6;4433:2;4421:9;4412:7;4408:23;4404:32;4401:2;;;4454:6;4446;4439:22;4401:2;-1:-1:-1;4482:23:1;;4391:120;-1:-1:-1;4391:120:1:o;4516:258::-;4584:6;4592;4645:2;4633:9;4624:7;4620:23;4616:32;4613:2;;;4666:6;4658;4651:22;4613:2;-1:-1:-1;;4694:23:1;;;4764:2;4749:18;;;4736:32;;-1:-1:-1;4603:171:1:o;4779:326::-;4856:6;4864;4872;4925:2;4913:9;4904:7;4900:23;4896:32;4893:2;;;4946:6;4938;4931:22;4893:2;-1:-1:-1;;4974:23:1;;;5044:2;5029:18;;5016:32;;-1:-1:-1;5095:2:1;5080:18;;;5067:32;;4883:222;-1:-1:-1;4883:222:1:o;5110:316::-;5198:6;5206;5214;5267:2;5255:9;5246:7;5242:23;5238:32;5235:2;;;5288:6;5280;5273:22;5235:2;5322:9;5316:16;5306:26;;5372:2;5361:9;5357:18;5351:25;5341:35;;5416:2;5405:9;5401:18;5395:25;5385:35;;5225:201;;;;;:::o;5431:395::-;5517:6;5525;5533;5541;5594:3;5582:9;5573:7;5569:23;5565:33;5562:2;;;5616:6;5608;5601:22;5562:2;-1:-1:-1;;5644:23:1;;;5714:2;5699:18;;5686:32;;-1:-1:-1;5765:2:1;5750:18;;5737:32;;5816:2;5801:18;5788:32;;-1:-1:-1;5552:274:1;-1:-1:-1;5552:274:1:o;6348:615::-;-1:-1:-1;;;;;6715:15:1;;;6697:34;;6762:2;6747:18;;6740:34;;;;6805:2;6790:18;;6783:34;;;;6848:2;6833:18;;6826:34;;;;6897:15;;;6891:3;6876:19;;6869:44;6677:3;6929:19;;6922:35;;;;6646:3;6631:19;;6613:350::o;8006:603::-;8118:4;8147:2;8176;8165:9;8158:21;8208:6;8202:13;8251:6;8246:2;8235:9;8231:18;8224:34;8276:4;8289:140;8303:6;8300:1;8297:13;8289:140;;;8398:14;;;8394:23;;8388:30;8364:17;;;8383:2;8360:26;8353:66;8318:10;;8289:140;;;8447:6;8444:1;8441:13;8438:2;;;8517:4;8512:2;8503:6;8492:9;8488:22;8484:31;8477:45;8438:2;-1:-1:-1;8593:2:1;8572:15;-1:-1:-1;;8568:29:1;8553:45;;;;8600:2;8549:54;;8127:482;-1:-1:-1;;;8127:482:1:o;12070:399::-;12272:2;12254:21;;;12311:2;12291:18;;;12284:30;12350:34;12345:2;12330:18;;12323:62;-1:-1:-1;;;12416:2:1;12401:18;;12394:33;12459:3;12444:19;;12244:225::o;13581:356::-;13783:2;13765:21;;;13802:18;;;13795:30;13861:34;13856:2;13841:18;;13834:62;13928:2;13913:18;;13755:182::o;15162:425::-;15364:2;15346:21;;;15403:2;15383:18;;;15376:30;15442:34;15437:2;15422:18;;15415:62;15513:31;15508:2;15493:18;;15486:59;15577:3;15562:19;;15336:251::o;16130:983::-;16392:4;16440:3;16429:9;16425:19;16471:6;16460:9;16453:25;16497:2;16535:6;16530:2;16519:9;16515:18;16508:34;16578:3;16573:2;16562:9;16558:18;16551:31;16602:6;16637;16631:13;16668:6;16660;16653:22;16706:3;16695:9;16691:19;16684:26;;16745:2;16737:6;16733:15;16719:29;;16766:4;16779:195;16793:6;16790:1;16787:13;16779:195;;;16858:13;;-1:-1:-1;;;;;16854:39:1;16842:52;;16949:15;;;;16914:12;;;;16890:1;16808:9;16779:195;;;-1:-1:-1;;;;;;;17030:32:1;;;;17025:2;17010:18;;17003:60;-1:-1:-1;;;17094:3:1;17079:19;17072:35;16991:3;16401:712;-1:-1:-1;;;16401:712:1:o;17631:128::-;17671:3;17702:1;17698:6;17695:1;17692:13;17689:2;;;17708:18;;:::i;:::-;-1:-1:-1;17744:9:1;;17679:80::o;17764:120::-;17804:1;17830;17820:2;;17835:18;;:::i;:::-;-1:-1:-1;17869:9:1;;17810:74::o;17889:422::-;17978:1;18021:5;17978:1;18035:270;18056:7;18046:8;18043:21;18035:270;;;18115:4;18111:1;18107:6;18103:17;18097:4;18094:27;18091:2;;;18124:18;;:::i;:::-;18174:7;18164:8;18160:22;18157:2;;;18194:16;;;;18157:2;18273:22;;;;18233:15;;;;18035:270;;;18039:3;17953:358;;;;;:::o;18316:131::-;18376:5;18405:36;18432:8;18426:4;18501:5;18531:8;18521:2;;-1:-1:-1;18572:1:1;18586:5;;18521:2;18620:4;18610:2;;-1:-1:-1;18657:1:1;18671:5;;18610:2;18702:4;18720:1;18715:59;;;;18788:1;18783:130;;;;18695:218;;18715:59;18745:1;18736:10;;18759:5;;;18783:130;18820:3;18810:8;18807:17;18804:2;;;18827:18;;:::i;:::-;-1:-1:-1;;18883:1:1;18869:16;;18898:5;;18695:218;;18997:2;18987:8;18984:16;18978:3;18972:4;18969:13;18965:36;18959:2;18949:8;18946:16;18941:2;18935:4;18932:12;18928:35;18925:77;18922:2;;;-1:-1:-1;19034:19:1;;;19066:5;;18922:2;19113:34;19138:8;19132:4;19113:34;:::i;:::-;19183:6;19179:1;19175:6;19171:19;19162:7;19159:32;19156:2;;;19194:18;;:::i;:::-;19232:20;;18511:747;-1:-1:-1;;;18511:747:1:o;19263:168::-;19303:7;19369:1;19365;19361:6;19357:14;19354:1;19351:21;19346:1;19339:9;19332:17;19328:45;19325:2;;;19376:18;;:::i;:::-;-1:-1:-1;19416:9:1;;19315:116::o;19436:125::-;19476:4;19504:1;19501;19498:8;19495:2;;;19509:18;;:::i;:::-;-1:-1:-1;19546:9:1;;19485:76::o;19566:380::-;19645:1;19641:12;;;;19688;;;19709:2;;19763:4;19755:6;19751:17;19741:27;;19709:2;19816;19808:6;19805:14;19785:18;19782:38;19779:2;;;19862:10;19857:3;19853:20;19850:1;19843:31;19897:4;19894:1;19887:15;19925:4;19922:1;19915:15;19779:2;;19621:325;;;:::o;19951:135::-;19990:3;-1:-1:-1;;20011:17:1;;20008:2;;;20031:18;;:::i;:::-;-1:-1:-1;20078:1:1;20067:13;;19998:88::o;20091:112::-;20123:1;20149;20139:2;;20154:18;;:::i;:::-;-1:-1:-1;20188:9:1;;20129:74::o;20208:127::-;20269:10;20264:3;20260:20;20257:1;20250:31;20300:4;20297:1;20290:15;20324:4;20321:1;20314:15;20340:127;20401:10;20396:3;20392:20;20389:1;20382:31;20432:4;20429:1;20422:15;20456:4;20453:1;20446:15;20472:127;20533:10;20528:3;20524:20;20521:1;20514:31;20564:4;20561:1;20554:15;20588:4;20585:1;20578:15;20604:131;-1:-1:-1;;;;;20679:31:1;;20669:42;;20659:2;;20725:1;20722;20715:12
Swarm Source
ipfs://ef07988d54f0ceba20103cfba059c7253d2bf64cec328e574f10caf29c1dc29c
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.