ERC-20
Overview
Max Total Supply
100,000,000 NS
Holders
43
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
1,039,468.283896298 NSValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
NATURALSTUPIDITY
Compiler Version
v0.8.5+commit.a4f2e591
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-02-01 */ /** www.naturalstupidity.net https://t.me/NaturalStupidityOfficial The balance between automation and human oversight. ███╗░░██╗░█████╗░████████╗██╗░░░██╗██████╗░░█████╗░██╗░░░░░ ████╗░██║██╔══██╗╚══██╔══╝██║░░░██║██╔══██╗██╔══██╗██║░░░░░ ██╔██╗██║███████║░░░██║░░░██║░░░██║██████╔╝███████║██║░░░░░ ██║╚████║██╔══██║░░░██║░░░██║░░░██║██╔══██╗██╔══██║██║░░░░░ ██║░╚███║██║░░██║░░░██║░░░╚██████╔╝██║░░██║██║░░██║███████╗ ╚═╝░░╚══╝╚═╝░░╚═╝░░░╚═╝░░░░╚═════╝░╚═╝░░╚═╝╚═╝░░╚═╝╚══════╝ ░██████╗████████╗██╗░░░██╗██████╗░██╗██████╗░██╗████████╗██╗░░░██╗ ██╔════╝╚══██╔══╝██║░░░██║██╔══██╗██║██╔══██╗██║╚══██╔══╝╚██╗░██╔╝ ╚█████╗░░░░██║░░░██║░░░██║██████╔╝██║██║░░██║██║░░░██║░░░░╚████╔╝░ ░╚═══██╗░░░██║░░░██║░░░██║██╔═══╝░██║██║░░██║██║░░░██║░░░░░╚██╔╝░░ ██████╔╝░░░██║░░░╚██████╔╝██║░░░░░██║██████╔╝██║░░░██║░░░░░░██║░░░ ╚═════╝░░░░╚═╝░░░░╚═════╝░╚═╝░░░░░╚═╝╚═════╝░╚═╝░░░╚═╝░░░░░░╚═╝░░░ */ // SPDX-License-Identifier: MIT pragma solidity 0.8.5; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; return msg.data; } } interface IBEP20 { 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); } contract Ownable is Context { address private _owner; address private _previousOwner; uint256 private _lockTime; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } function getUnlockTime() public view returns (uint256) { return _lockTime; } function lock(uint256 time) public virtual onlyOwner { _previousOwner = _owner; _owner = address(0); _lockTime = block.timestamp + time; emit OwnershipTransferred(_owner, address(0)); } function unlock() public virtual { require(_previousOwner == msg.sender, "You don't have permission to unlock"); require(block.timestamp > _lockTime , "Contract is still locked"); emit OwnershipTransferred(_owner, _previousOwner); _owner = _previousOwner; } } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 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 NATURALSTUPIDITY is Context, IBEP20, Ownable { mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isExcluded; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) public _isExcludedFromAutoLiquidity; mapping (address => bool) public _isExcludedFromAntiWhale; mapping (address => bool) public _isExcludedFromBuy; mapping (address => bool) public _isBlacklisted; mapping (address => bool) public _isExcludedFromMaxTx; address[] private _excluded; address private _teamWallet; address private _marketingWallet; address public constant _burnAddress = 0x000000000000000000000000000000000000dEaD; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 100000000 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; string private constant _name = "NATURAL STUPIDITY"; string private constant _symbol = "NS"; uint8 private constant _decimals = 9; uint256 private _percentageOfLiquidityForTeam = 4000; //LP tax is whatever is left remaining of 10,000, if marketing is 4000 and team is 4000, auto LP would be 2000 uint256 private _percentageOfLiquidityForMarketing = 4000; // transfer fee uint256 public _taxFee = 0; // tax fee is reflections uint256 public _liquidityFee = 0; // ZERO tax for transfering tokens // buy fee uint256 public _taxFeeBuy = 0; uint256 public _liquidityFeeBuy = 0; // // sell fee uint256 public _taxFeeSell = 0; uint256 public _liquidityFeeSell = 90; uint256 public _maxTxAmount = _tTotal * 100 / 10000; uint256 public _minTokenBalance = _tTotal / 100; // auto liquidity IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 bnbReceived, uint256 tokensIntoLiquidity ); // no big willies bool public _isAntiWhaleEnabled = true; uint256 public _antiWhaleThreshold = _tTotal * 200 / 10000; // 2% of total supply event TeamSent(address to, uint256 bnbSent); event MarketingSent(address to, uint256 bnbSent); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor () { _rOwned[_msgSender()] = _rTotal; // _teamWallet = 0xDAa347ec9F429f5B5F801cfCa809a5c7b102a049; _marketingWallet = 0xDAa347ec9F429f5B5F801cfCa809a5c7b102a049; // uniswap IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; // exclude system contracts _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromAutoLiquidity[uniswapV2Pair] = true; _isExcludedFromAutoLiquidity[address(uniswapV2Router)] = true; _isExcludedFromAntiWhale[owner()] = true; _isExcludedFromAntiWhale[address(this)] = true; _isExcludedFromAntiWhale[uniswapV2Pair] = true; _isExcludedFromAntiWhale[address(uniswapV2Router)] = true; _isExcludedFromAntiWhale[_burnAddress] = true; _isExcludedFromMaxTx[owner()] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { // to reflect burned amount in total supply // return _tTotal - balanceOf(_burnAddress); return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()] - amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue); return true; } function isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) { require(tAmount <= _tTotal, "Amount must be less than supply"); (, uint256 tFee, uint256 tLiquidity) = _getTValues(tAmount); uint256 currentRate = _getRate(); if (!deductTransferFee) { (uint256 rAmount,,) = _getRValues(tAmount, tFee, tLiquidity, currentRate); return rAmount; } else { (, uint256 rTransferAmount,) = _getRValues(tAmount, tFee, tLiquidity, currentRate); return rTransferAmount; } } 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 excludeFromReward(address account) public onlyOwner { require(!_isExcluded[account], "Account is already excluded"); if (_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeInReward(address account) external onlyOwner { require(_isExcluded[account], "Account is already excluded"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } //Remove from Blacklist function removeFromBlackList(address account) external onlyOwner { _isBlacklisted[account] = false; } function setExcludedFromFee(address account, bool e) external onlyOwner { _isExcludedFromFee[account] = e; } function setMaxTx(uint256 maxTx) external onlyOwner { _maxTxAmount = maxTx; } function setMinTokenBalance(uint256 minTokenBalance) external onlyOwner { _minTokenBalance = minTokenBalance; } function setAntiWhaleEnabled(bool e) external onlyOwner { _isAntiWhaleEnabled = e; } function setExcludedFromAntiWhale(address account, bool e) external onlyOwner { _isExcludedFromAntiWhale[account] = e; } function setExcludedFromBuy(address account, bool e) external onlyOwner { _isExcludedFromBuy[account] = e; } function setExcludedFromMaxTx(address account, bool e) external onlyOwner { _isExcludedFromMaxTx[account] = e; } function setAntiWhaleThreshold(uint256 antiWhaleThreshold) external onlyOwner { _antiWhaleThreshold = antiWhaleThreshold; } function setFeesTransfer(uint taxFee, uint liquidityFee) external onlyOwner { _taxFee = taxFee; _liquidityFee = liquidityFee; } function setFeesBuy(uint taxFee, uint liquidityFee) external onlyOwner { _taxFeeBuy = taxFee; _liquidityFeeBuy = liquidityFee; } function setFeesSell(uint taxFee, uint liquidityFee) external onlyOwner { _taxFeeSell = taxFee; _liquidityFeeSell = liquidityFee; } function setAddresses(address teamWallet, address marketingWallet) external onlyOwner { _teamWallet = teamWallet; _marketingWallet = marketingWallet; } function setLiquidityPercentages(uint256 teamFee, uint256 marketingFee) external onlyOwner { _percentageOfLiquidityForTeam = teamFee; _percentageOfLiquidityForMarketing = marketingFee; } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } receive() external payable {} function setUniswapRouter(address r) external onlyOwner { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(r); uniswapV2Router = _uniswapV2Router; } function setUniswapPair(address p) external onlyOwner { uniswapV2Pair = p; } function setExcludedFromAutoLiquidity(address a, bool b) external onlyOwner { _isExcludedFromAutoLiquidity[a] = b; } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal - rFee; _tFeeTotal = _tFeeTotal + tFee; } function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256) { uint256 tFee = calculateFee(tAmount, _taxFee); uint256 tLiquidity = calculateFee(tAmount, _liquidityFee); uint256 tTransferAmount = tAmount - tFee; tTransferAmount = tTransferAmount - tLiquidity; return (tTransferAmount, tFee, tLiquidity); } function _getRValues(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 currentRate) private pure returns (uint256, uint256, uint256) { uint256 rAmount = tAmount * currentRate; uint256 rFee = tFee * currentRate; uint256 rLiquidity = tLiquidity * currentRate; uint256 rTransferAmount = rAmount - rFee; rTransferAmount = rTransferAmount - rLiquidity; return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply / tSupply; } function _getCurrentSupply() private view returns(uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply - _rOwned[_excluded[i]]; tSupply = tSupply - _tOwned[_excluded[i]]; } if (rSupply < _rTotal / _tTotal) return (_rTotal, _tTotal); return (rSupply, tSupply); } function takeTransactionFee(address sender, address to, uint256 tAmount, uint256 currentRate) private { if (tAmount == 0) { return; } uint256 rAmount = tAmount * currentRate; _rOwned[to] = _rOwned[to] + rAmount; if (_isExcluded[to]) { _tOwned[to] = _tOwned[to] + tAmount; } emit Transfer(sender, to, tAmount); } function calculateFee(uint256 amount, uint256 fee) private pure returns (uint256) { return amount * fee / 100; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "BEP20: approve from the zero address"); require(spender != address(0), "BEP20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { require(!_isBlacklisted[from] && !_isBlacklisted[to], "This address is blacklisted"); require(from != address(0), "BEP20: transfer from the zero address"); require(to != address(0), "BEP20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if (!_isExcludedFromMaxTx[from]) { require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); } // prevent blacklisted addresses to buy if (from == uniswapV2Pair && to != address(uniswapV2Router)) { require(!_isExcludedFromBuy[to], "Address is not allowed to buy"); } /* - swapAndLiquify will be initiated when token balance of this contract has accumulated enough over the minimum number of tokens required. - don't get caught in a circular liquidity event. - don't swapAndLiquify if sender is uniswap pair. */ uint256 contractTokenBalance = balanceOf(address(this)); if (contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } bool isOverMinTokenBalance = contractTokenBalance >= _minTokenBalance; if ( isOverMinTokenBalance && !inSwapAndLiquify && !_isExcludedFromAutoLiquidity[from] && swapAndLiquifyEnabled ) { contractTokenBalance = _minTokenBalance; swapAndLiquify(contractTokenBalance); } bool takeFee = true; if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) { takeFee = false; } _tokenTransfer(from, to, amount, takeFee); /* anti whale: when buying, check if sender balance will be greater than anti whale threshold if greater, throw error */ if ( _isAntiWhaleEnabled && !_isExcludedFromAntiWhale[to] ) { require(balanceOf(to) <= _antiWhaleThreshold, "Anti whale: can't hold more than the specified threshold"); } } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { // split contract balance into halves uint256 half = contractTokenBalance / 2; uint256 otherHalf = contractTokenBalance - half; uint256 initialBalance = address(this).balance; swapTokensForBnb(half); uint256 newBalance = address(this).balance - initialBalance; uint256 bnbForTeam = newBalance / 10000 * _percentageOfLiquidityForTeam; uint256 bnbForMarketing = newBalance / 10000 * _percentageOfLiquidityForMarketing; uint256 bnbForLiquidity = newBalance - bnbForTeam - bnbForMarketing; if ( bnbForTeam != 0 ) { emit TeamSent(_teamWallet, bnbForTeam); payable(_teamWallet).transfer(bnbForTeam); } if ( bnbForMarketing != 0 ) { emit MarketingSent(_marketingWallet, bnbForMarketing); payable(_marketingWallet).transfer(bnbForMarketing); } (uint256 tokenAdded, uint256 bnbAdded) = addLiquidity(otherHalf, bnbForLiquidity); emit SwapAndLiquify(half, bnbAdded, tokenAdded); } function swapTokensForBnb(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of BNB path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 bnbAmount) private returns (uint256, uint256) { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity (uint amountToken, uint amountETH, ) = uniswapV2Router.addLiquidityETH{value: bnbAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); return (uint256(amountToken), uint256(amountETH)); } function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private { uint256 previousTaxFee = _taxFee; uint256 previousLiquidityFee = _liquidityFee; bool isBuy = sender == uniswapV2Pair && recipient != address(uniswapV2Router); bool isSell = recipient == uniswapV2Pair; if (!takeFee) { _taxFee = 0; _liquidityFee = 0; } else if (isBuy) { _taxFee = _taxFeeBuy; _liquidityFee = _liquidityFeeBuy; } else if (isSell) { _taxFee = _taxFeeSell; _liquidityFee = _liquidityFeeSell; } _transferStandard(sender, recipient, amount); if (!takeFee || isBuy || isSell) { _taxFee = previousTaxFee; _liquidityFee = previousLiquidityFee; } } //adding multiple addresses to the blacklist - Used to manually block known bots and scammers function addToBlacklist(address[] calldata addresses) external onlyOwner { for (uint256 i; i < addresses.length; ++i) { _isBlacklisted[addresses[i]] = true; } } function _transferStandard(address sender, address recipient, uint256 tAmount) private { (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getTValues(tAmount); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, currentRate); _rOwned[sender] = _rOwned[sender] - rAmount; if (_isExcluded[sender]) { _tOwned[sender] = _tOwned[sender] - tAmount; } _rOwned[recipient] = _rOwned[recipient] + rTransferAmount; if (_isExcluded[recipient]) { _tOwned[recipient] = _tOwned[recipient] + tTransferAmount; } takeTransactionFee(sender, address(this), tLiquidity, currentRate); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"bnbSent","type":"uint256"}],"name":"MarketingSent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bnbReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","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":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"bnbSent","type":"uint256"}],"name":"TeamSent","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":"_antiWhaleThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_burnAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_isAntiWhaleEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromAntiWhale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromAutoLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromBuy","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromMaxTx","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFeeBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFeeSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_minTokenBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFeeBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFeeSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"addToBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeFromBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"teamWallet","type":"address"},{"internalType":"address","name":"marketingWallet","type":"address"}],"name":"setAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"e","type":"bool"}],"name":"setAntiWhaleEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"antiWhaleThreshold","type":"uint256"}],"name":"setAntiWhaleThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"e","type":"bool"}],"name":"setExcludedFromAntiWhale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"},{"internalType":"bool","name":"b","type":"bool"}],"name":"setExcludedFromAutoLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"e","type":"bool"}],"name":"setExcludedFromBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"e","type":"bool"}],"name":"setExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"e","type":"bool"}],"name":"setExcludedFromMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"},{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setFeesBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"},{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setFeesSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"},{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setFeesTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"teamFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"setLiquidityPercentages","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTx","type":"uint256"}],"name":"setMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"minTokenBalance","type":"uint256"}],"name":"setMinTokenBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"p","type":"address"}],"name":"setUniswapPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"r","type":"address"}],"name":"setUniswapRouter","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":"pure","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":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405267016345785d8a0000601081905562000020906000196200057f565b6200002e9060001962000565565b601155610fa0601355610fa060145560006015556000601655600060175560006018556000601955605a601a5561271060105460646200006f919062000543565b6200007b91906200052c565b601b5560646010546200008f91906200052c565b601c55601e805461ffff60a81b191661010160a81b17905560105461271090620000bb9060c862000543565b620000c791906200052c565b601f55348015620000d757600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506011543360009081526003602090815260409182902092909255600e805473daa347ec9f429f5b5f801cfca809a5c7b102a0496001600160a01b03199182168117909255600f80549091169091179055805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d92839263c45a01559260048083019392829003018186803b158015620001b157600080fd5b505afa158015620001c6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ec9190620004fa565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200023557600080fd5b505afa1580156200024a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002709190620004fa565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620002b957600080fd5b505af1158015620002ce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f49190620004fa565b601e80546001600160a01b03199081166001600160a01b0393841617909155601d80549091169183169190911790556001600560006200033c6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905530815260058452828120805486166001908117909155601e548316825260089094528281208054861685179055601d5490911681529081208054909316821790925590600990620003c36000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526009909352818320805485166001908117909155601e54821684528284208054861682179055601d549091168352908220805484168217905561dead82527f960b1051749987b45b5679007fff577a1c2f763ec21c15a6c5eb19307500378580549093168117909255600c90620004736000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055620004a33390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601054604051620004eb91815260200190565b60405180910390a350620005c2565b6000602082840312156200050d57600080fd5b81516001600160a01b03811681146200052557600080fd5b9392505050565b6000826200053e576200053e620005ac565b500490565b600081600019048311821515161562000560576200056062000596565b500290565b6000828210156200057a576200057a62000596565b500390565b600082620005915762000591620005ac565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b612e7180620005d26000396000f3fe6080604052600436106103b15760003560e01c80636bc87c3a116101e7578063a69df4b51161010d578063c49b9a80116100a0578063d8d89bc61161006f578063d8d89bc614610b55578063dd46706414610b6b578063dd62ed3e14610b8b578063f2fde38b14610bd157600080fd5b8063c49b9a8014610adf578063c7f59a6714610aff578063d4c70c8d14610b1f578063d5aed6bf14610b3557600080fd5b8063baa04398116100dc578063baa0439814610a59578063bc33718214610a89578063bd3900c014610aa9578063bea9849e14610abf57600080fd5b8063a69df4b5146109e4578063a9059cbb146109f9578063aa5f57ca14610a19578063b0ac157114610a3957600080fd5b806389dfe6fd1161018557806395d89b411161015457806395d89b41146109635780639e3a94091461098e5780639fe64094146109a4578063a457c2d7146109c457600080fd5b806389dfe6fd146108d55780638da5cb5b1461090557806390107afe14610923578063935eb35f1461094357600080fd5b80637921199f116101c15780637921199f14610850578063795f694f146108665780637d1db4a51461088657806388f820201461089c57600080fd5b80636bc87c3a1461080557806370a082311461081b578063715018a61461083b57600080fd5b8063383c5900116102d757806352390c021161026a578063565836e711610239578063565836e71461079a5780635d83b454146107b0578063602bc62b146107d05780636612e66f146107e557600080fd5b806352390c021461070157806352d6585814610721578063530948f6146107415780635342acb41461076157600080fd5b80634549b039116102a65780634549b0391461068057806349bd5a5e146106a05780634a49ac4c146106c05780634a74bb02146106e057600080fd5b8063383c59001461060957806339509351146106295780633b124fe71461064957806342737bb11461065f57600080fd5b80631cdd3be31161034f5780632d8381191161031e5780632d8381191461058d5780632f39f21f146105ad578063313ce567146105cd5780633685d419146105e957600080fd5b80631cdd3be3146104f757806323b872dd14610527578063260978d8146105475780632c505e901461055d57600080fd5b80630fa7c8691161038b5780630fa7c8691461046957806313114a9d1461048b5780631694505e146104aa57806318160ddd146104e257600080fd5b806306fdde03146103bd5780630786629114610409578063095ea7b31461044957600080fd5b366103b857005b600080fd5b3480156103c957600080fd5b506040805180820190915260118152704e41545552414c2053545550494449545960781b60208201525b6040516104009190612c3b565b60405180910390f35b34801561041557600080fd5b50610439610424366004612a0a565b600c6020526000908152604090205460ff1681565b6040519015158152602001610400565b34801561045557600080fd5b50610439610464366004612af3565b610bf1565b34801561047557600080fd5b50610489610484366004612beb565b610c08565b005b34801561049757600080fd5b506012545b604051908152602001610400565b3480156104b657600080fd5b50601d546104ca906001600160a01b031681565b6040516001600160a01b039091168152602001610400565b3480156104ee57600080fd5b5060105461049c565b34801561050357600080fd5b50610439610512366004612a0a565b600b6020526000908152604090205460ff1681565b34801561053357600080fd5b50610439610542366004612a7d565b610c46565b34801561055357600080fd5b5061049c601f5481565b34801561056957600080fd5b50610439610578366004612a0a565b60096020526000908152604090205460ff1681565b34801561059957600080fd5b5061049c6105a8366004612baf565b610c98565b3480156105b957600080fd5b506104896105c8366004612abe565b610d1c565b3480156105d957600080fd5b5060405160098152602001610400565b3480156105f557600080fd5b50610489610604366004612a0a565b610d71565b34801561061557600080fd5b50610489610624366004612beb565b610f28565b34801561063557600080fd5b50610439610644366004612af3565b610f5d565b34801561065557600080fd5b5061049c60155481565b34801561066b57600080fd5b50601e5461043990600160b01b900460ff1681565b34801561068c57600080fd5b5061049c61069b366004612bc8565b610f94565b3480156106ac57600080fd5b50601e546104ca906001600160a01b031681565b3480156106cc57600080fd5b506104896106db366004612a0a565b611043565b3480156106ec57600080fd5b50601e5461043990600160a81b900460ff1681565b34801561070d57600080fd5b5061048961071c366004612a0a565b61108e565b34801561072d57600080fd5b5061048961073c366004612beb565b6111e1565b34801561074d57600080fd5b5061048961075c366004612abe565b611216565b34801561076d57600080fd5b5061043961077c366004612a0a565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156107a657600080fd5b5061049c601a5481565b3480156107bc57600080fd5b506104896107cb366004612abe565b61126b565b3480156107dc57600080fd5b5060025461049c565b3480156107f157600080fd5b50610489610800366004612abe565b6112c0565b34801561081157600080fd5b5061049c60165481565b34801561082757600080fd5b5061049c610836366004612a0a565b611315565b34801561084757600080fd5b50610489611374565b34801561085c57600080fd5b5061049c60195481565b34801561087257600080fd5b50610489610881366004612baf565b6113d6565b34801561089257600080fd5b5061049c601b5481565b3480156108a857600080fd5b506104396108b7366004612a0a565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156108e157600080fd5b506104396108f0366004612a0a565b600a6020526000908152604090205460ff1681565b34801561091157600080fd5b506000546001600160a01b03166104ca565b34801561092f57600080fd5b5061048961093e366004612a44565b611405565b34801561094f57600080fd5b5061048961095e366004612b1f565b61145d565b34801561096f57600080fd5b506040805180820190915260028152614e5360f01b60208201526103f3565b34801561099a57600080fd5b5061049c60185481565b3480156109b057600080fd5b506104896109bf366004612beb565b6114fc565b3480156109d057600080fd5b506104396109df366004612af3565b611531565b3480156109f057600080fd5b50610489611568565b348015610a0557600080fd5b50610439610a14366004612af3565b61166e565b348015610a2557600080fd5b50610489610a34366004612b94565b61167b565b348015610a4557600080fd5b50610489610a54366004612baf565b6116c3565b348015610a6557600080fd5b50610439610a74366004612a0a565b60086020526000908152604090205460ff1681565b348015610a9557600080fd5b50610489610aa4366004612baf565b6116f2565b348015610ab557600080fd5b506104ca61dead81565b348015610acb57600080fd5b50610489610ada366004612a0a565b611721565b348015610aeb57600080fd5b50610489610afa366004612b94565b61176d565b348015610b0b57600080fd5b50610489610b1a366004612abe565b6117ef565b348015610b2b57600080fd5b5061049c60175481565b348015610b4157600080fd5b50610489610b50366004612a0a565b611844565b348015610b6157600080fd5b5061049c601c5481565b348015610b7757600080fd5b50610489610b86366004612baf565b611890565b348015610b9757600080fd5b5061049c610ba6366004612a44565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b348015610bdd57600080fd5b50610489610bec366004612a0a565b611915565b6000610bfe3384846119ed565b5060015b92915050565b6000546001600160a01b03163314610c3b5760405162461bcd60e51b8152600401610c3290612c90565b60405180910390fd5b601591909155601655565b6000610c53848484611b11565b6001600160a01b038416600090815260076020908152604080832033808552925290912054610c8e918691610c89908690612d8f565b6119ed565b5060019392505050565b6000601154821115610cff5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610c32565b6000610d09611f7f565b9050610d158184612d4e565b9392505050565b6000546001600160a01b03163314610d465760405162461bcd60e51b8152600401610c3290612c90565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610d9b5760405162461bcd60e51b8152600401610c3290612c90565b6001600160a01b03811660009081526006602052604090205460ff16610e035760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610c32565b60005b600d54811015610f2457816001600160a01b0316600d8281548110610e2d57610e2d612ded565b6000918252602090912001546001600160a01b03161415610f1257600d8054610e5890600190612d8f565b81548110610e6857610e68612ded565b600091825260209091200154600d80546001600160a01b039092169183908110610e9457610e94612ded565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600690925220805460ff19169055600d805480610eec57610eec612dd7565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610f1c81612da6565b915050610e06565b5050565b6000546001600160a01b03163314610f525760405162461bcd60e51b8152600401610c3290612c90565b601391909155601455565b3360008181526007602090815260408083206001600160a01b03871684529091528120549091610bfe918590610c89908690612d36565b6000601054831115610fe85760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610c32565b600080610ff485611fa2565b92509250506000611003611f7f565b90508461102757600061101887858585611fec565b50909550610c02945050505050565b600061103587858585611fec565b509550610c02945050505050565b6000546001600160a01b0316331461106d5760405162461bcd60e51b8152600401610c3290612c90565b6001600160a01b03166000908152600b60205260409020805460ff19169055565b6000546001600160a01b031633146110b85760405162461bcd60e51b8152600401610c3290612c90565b6001600160a01b03811660009081526006602052604090205460ff16156111215760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610c32565b6001600160a01b0381166000908152600360205260409020541561117b576001600160a01b03811660009081526003602052604090205461116190610c98565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600660205260408120805460ff19166001908117909155600d805491820181559091527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50180546001600160a01b0319169091179055565b6000546001600160a01b0316331461120b5760405162461bcd60e51b8152600401610c3290612c90565b601791909155601855565b6000546001600160a01b031633146112405760405162461bcd60e51b8152600401610c3290612c90565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146112955760405162461bcd60e51b8152600401610c3290612c90565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146112ea5760405162461bcd60e51b8152600401610c3290612c90565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b03811660009081526006602052604081205460ff161561135257506001600160a01b031660009081526004602052604090205490565b6001600160a01b038216600090815260036020526040902054610c0290610c98565b6000546001600160a01b0316331461139e5760405162461bcd60e51b8152600401610c3290612c90565b600080546040516001600160a01b0390911690600080516020612e1c833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146114005760405162461bcd60e51b8152600401610c3290612c90565b601f55565b6000546001600160a01b0316331461142f5760405162461bcd60e51b8152600401610c3290612c90565b600e80546001600160a01b039384166001600160a01b031991821617909155600f8054929093169116179055565b6000546001600160a01b031633146114875760405162461bcd60e51b8152600401610c3290612c90565b60005b818110156114f7576001600b60008585858181106114aa576114aa612ded565b90506020020160208101906114bf9190612a0a565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556114f081612da6565b905061148a565b505050565b6000546001600160a01b031633146115265760405162461bcd60e51b8152600401610c3290612c90565b601991909155601a55565b3360008181526007602090815260408083206001600160a01b03871684529091528120549091610bfe918590610c89908690612d8f565b6001546001600160a01b031633146115ce5760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610c32565b600254421161161f5760405162461bcd60e51b815260206004820152601860248201527f436f6e7472616374206973207374696c6c206c6f636b656400000000000000006044820152606401610c32565b600154600080546040516001600160a01b039384169390911691600080516020612e1c83398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610bfe338484611b11565b6000546001600160a01b031633146116a55760405162461bcd60e51b8152600401610c3290612c90565b601e8054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b031633146116ed5760405162461bcd60e51b8152600401610c3290612c90565b601c55565b6000546001600160a01b0316331461171c5760405162461bcd60e51b8152600401610c3290612c90565b601b55565b6000546001600160a01b0316331461174b5760405162461bcd60e51b8152600401610c3290612c90565b601d80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146117975760405162461bcd60e51b8152600401610c3290612c90565b601e8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906117e490831515815260200190565b60405180910390a150565b6000546001600160a01b031633146118195760405162461bcd60e51b8152600401610c3290612c90565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461186e5760405162461bcd60e51b8152600401610c3290612c90565b601e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146118ba5760405162461bcd60e51b8152600401610c3290612c90565b60008054600180546001600160a01b03199081166001600160a01b038416179091551690556118e98142612d36565b600255600080546040516001600160a01b0390911690600080516020612e1c833981519152908390a350565b6000546001600160a01b0316331461193f5760405162461bcd60e51b8152600401610c3290612c90565b6001600160a01b0381166119a45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c32565b600080546040516001600160a01b0380851693921691600080516020612e1c83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316611a4f5760405162461bcd60e51b8152602060048201526024808201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c32565b6001600160a01b038216611ab05760405162461bcd60e51b815260206004820152602260248201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c32565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166000908152600b602052604090205460ff16158015611b5357506001600160a01b0382166000908152600b602052604090205460ff16155b611b9f5760405162461bcd60e51b815260206004820152601b60248201527f54686973206164647265737320697320626c61636b6c697374656400000000006044820152606401610c32565b6001600160a01b038316611c035760405162461bcd60e51b815260206004820152602560248201527f42455032303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c32565b6001600160a01b038216611c655760405162461bcd60e51b815260206004820152602360248201527f42455032303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c32565b60008111611cc75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610c32565b6001600160a01b0383166000908152600c602052604090205460ff16611d4a57601b54811115611d4a5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610c32565b601e546001600160a01b038481169116148015611d755750601d546001600160a01b03838116911614155b15611de3576001600160a01b0382166000908152600a602052604090205460ff1615611de35760405162461bcd60e51b815260206004820152601d60248201527f41646472657373206973206e6f7420616c6c6f77656420746f206275790000006044820152606401610c32565b6000611dee30611315565b9050601b548110611dfe5750601b545b601c5481108015908190611e1c5750601e54600160a01b900460ff16155b8015611e4157506001600160a01b03851660009081526008602052604090205460ff16155b8015611e565750601e54600160a81b900460ff165b15611e6957601c549150611e6982612044565b6001600160a01b03851660009081526005602052604090205460019060ff1680611eab57506001600160a01b03851660009081526005602052604090205460ff165b15611eb4575060005b611ec08686868461225f565b601e54600160b01b900460ff168015611ef257506001600160a01b03851660009081526009602052604090205460ff16155b15611f7757601f54611f0386611315565b1115611f775760405162461bcd60e51b815260206004820152603860248201527f416e7469207768616c653a2063616e277420686f6c64206d6f7265207468616e60448201527f2074686520737065636966696564207468726573686f6c6400000000000000006064820152608401610c32565b505050505050565b6000806000611f8c61231c565b9092509050611f9b8183612d4e565b9250505090565b600080600080611fb48560155461249f565b90506000611fc48660165461249f565b90506000611fd28388612d8f565b9050611fde8282612d8f565b979296509094509092505050565b6000808080611ffb8589612d70565b905060006120098689612d70565b905060006120178789612d70565b905060006120258385612d8f565b90506120318282612d8f565b939b939a50919850919650505050505050565b601e805460ff60a01b1916600160a01b1790556000612064600283612d4e565b905060006120728284612d8f565b90504761207e836124b7565b600061208a8247612d8f565b905060006013546127108361209f9190612d4e565b6120a99190612d70565b90506000601454612710846120be9190612d4e565b6120c89190612d70565b90506000816120d78486612d8f565b6120e19190612d8f565b9050821561216b57600e54604080516001600160a01b039092168252602082018590527fe9c7f2b211c760890268dc4250ab69d148f8840809c94c593b2bc430e673fa63910160405180910390a1600e546040516001600160a01b039091169084156108fc029085906000818181858888f19350505050158015612169573d6000803e3d6000fd5b505b81156121f357600f54604080516001600160a01b039092168252602082018490527fbe61dd4a9cfefc957af4f19405f44fbde1f74724fcbf173c8b23225353eb4673910160405180910390a1600f546040516001600160a01b039091169083156108fc029084906000818181858888f193505050501580156121f1573d6000803e3d6000fd5b505b6000806122008884612618565b604080518c81526020810183905290810183905291935091507f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15050601e805460ff60a01b191690555050505050505050565b601554601654601e546000906001600160a01b0388811691161480156122935750601d546001600160a01b03878116911614155b601e549091506001600160a01b03878116911614846122bb57600060158190556016556122e5565b81156122d2576017546015556018546016556122e5565b80156122e557601954601555601a546016555b6122f088888861270c565b8415806122fa5750815b806123025750805b1561231257601584905560168390555b5050505050505050565b6011546010546000918291825b600d5481101561246e578260036000600d848154811061234b5761234b612ded565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806123b657508160046000600d848154811061238f5761238f612ded565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156123cc57601154601054945094505050509091565b60036000600d83815481106123e3576123e3612ded565b60009182526020808320909101546001600160a01b031683528201929092526040019020546124129084612d8f565b925060046000600d838154811061242b5761242b612ded565b60009182526020808320909101546001600160a01b0316835282019290925260400190205461245a9083612d8f565b91508061246681612da6565b915050612329565b5060105460115461247f9190612d4e565b821015612496576011546010549350935050509091565b90939092509050565b600060646124ad8385612d70565b610d159190612d4e565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106124ec576124ec612ded565b6001600160a01b03928316602091820292909201810191909152601d54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561254057600080fd5b505afa158015612554573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125789190612a27565b8160018151811061258b5761258b612ded565b6001600160a01b039283166020918202929092010152601d546125b191309116846119ed565b601d5460405163791ac94760e01b81526001600160a01b039091169063791ac947906125ea908590600090869030904290600401612cc5565b600060405180830381600087803b15801561260457600080fd5b505af1158015611f77573d6000803e3d6000fd5b601d5460009081906126359030906001600160a01b0316866119ed565b601d5460009081906001600160a01b031663f305d71986308985806126626000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b1580156126c557600080fd5b505af11580156126d9573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126fe9190612c0d565b509097909650945050505050565b600080600061271a84611fa2565b925092509250600061272a611f7f565b9050600080600061273d88878787611fec565b6001600160a01b038d166000908152600360205260409020549295509093509150612769908490612d8f565b6001600160a01b038b1660009081526003602090815260408083209390935560069052205460ff16156127d4576001600160a01b038a166000908152600460205260409020546127ba908990612d8f565b6001600160a01b038b166000908152600460205260409020555b6001600160a01b0389166000908152600360205260409020546127f8908390612d36565b6001600160a01b038a1660009081526003602090815260408083209390935560069052205460ff1615612863576001600160a01b038916600090815260046020526040902054612849908890612d36565b6001600160a01b038a166000908152600460205260409020555b61286f8a3087876128d2565b61287981876129cf565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef896040516128be91815260200190565b60405180910390a350505050505050505050565b816128dc576129c9565b60006128e88284612d70565b6001600160a01b03851660009081526003602052604090205490915061290f908290612d36565b6001600160a01b03851660009081526003602090815260408083209390935560069052205460ff161561297a576001600160a01b038416600090815260046020526040902054612960908490612d36565b6001600160a01b0385166000908152600460205260409020555b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516129bf91815260200190565b60405180910390a3505b50505050565b816011546129dd9190612d8f565b6011556012546129ee908290612d36565b6012555050565b80358015158114612a0557600080fd5b919050565b600060208284031215612a1c57600080fd5b8135610d1581612e03565b600060208284031215612a3957600080fd5b8151610d1581612e03565b60008060408385031215612a5757600080fd5b8235612a6281612e03565b91506020830135612a7281612e03565b809150509250929050565b600080600060608486031215612a9257600080fd5b8335612a9d81612e03565b92506020840135612aad81612e03565b929592945050506040919091013590565b60008060408385031215612ad157600080fd5b8235612adc81612e03565b9150612aea602084016129f5565b90509250929050565b60008060408385031215612b0657600080fd5b8235612b1181612e03565b946020939093013593505050565b60008060208385031215612b3257600080fd5b823567ffffffffffffffff80821115612b4a57600080fd5b818501915085601f830112612b5e57600080fd5b813581811115612b6d57600080fd5b8660208260051b8501011115612b8257600080fd5b60209290920196919550909350505050565b600060208284031215612ba657600080fd5b610d15826129f5565b600060208284031215612bc157600080fd5b5035919050565b60008060408385031215612bdb57600080fd5b82359150612aea602084016129f5565b60008060408385031215612bfe57600080fd5b50508035926020909101359150565b600080600060608486031215612c2257600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b81811015612c6857858101830151858201604001528201612c4c565b81811115612c7a576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612d155784516001600160a01b031683529383019391830191600101612cf0565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612d4957612d49612dc1565b500190565b600082612d6b57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612d8a57612d8a612dc1565b500290565b600082821015612da157612da1612dc1565b500390565b6000600019821415612dba57612dba612dc1565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114612e1857600080fd5b5056fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a264697066735822122051c97a4422e3ef20f45238f449aa9a9882e2bd9ddda8ae893915d4539c13658164736f6c63430008050033
Deployed Bytecode
0x6080604052600436106103b15760003560e01c80636bc87c3a116101e7578063a69df4b51161010d578063c49b9a80116100a0578063d8d89bc61161006f578063d8d89bc614610b55578063dd46706414610b6b578063dd62ed3e14610b8b578063f2fde38b14610bd157600080fd5b8063c49b9a8014610adf578063c7f59a6714610aff578063d4c70c8d14610b1f578063d5aed6bf14610b3557600080fd5b8063baa04398116100dc578063baa0439814610a59578063bc33718214610a89578063bd3900c014610aa9578063bea9849e14610abf57600080fd5b8063a69df4b5146109e4578063a9059cbb146109f9578063aa5f57ca14610a19578063b0ac157114610a3957600080fd5b806389dfe6fd1161018557806395d89b411161015457806395d89b41146109635780639e3a94091461098e5780639fe64094146109a4578063a457c2d7146109c457600080fd5b806389dfe6fd146108d55780638da5cb5b1461090557806390107afe14610923578063935eb35f1461094357600080fd5b80637921199f116101c15780637921199f14610850578063795f694f146108665780637d1db4a51461088657806388f820201461089c57600080fd5b80636bc87c3a1461080557806370a082311461081b578063715018a61461083b57600080fd5b8063383c5900116102d757806352390c021161026a578063565836e711610239578063565836e71461079a5780635d83b454146107b0578063602bc62b146107d05780636612e66f146107e557600080fd5b806352390c021461070157806352d6585814610721578063530948f6146107415780635342acb41461076157600080fd5b80634549b039116102a65780634549b0391461068057806349bd5a5e146106a05780634a49ac4c146106c05780634a74bb02146106e057600080fd5b8063383c59001461060957806339509351146106295780633b124fe71461064957806342737bb11461065f57600080fd5b80631cdd3be31161034f5780632d8381191161031e5780632d8381191461058d5780632f39f21f146105ad578063313ce567146105cd5780633685d419146105e957600080fd5b80631cdd3be3146104f757806323b872dd14610527578063260978d8146105475780632c505e901461055d57600080fd5b80630fa7c8691161038b5780630fa7c8691461046957806313114a9d1461048b5780631694505e146104aa57806318160ddd146104e257600080fd5b806306fdde03146103bd5780630786629114610409578063095ea7b31461044957600080fd5b366103b857005b600080fd5b3480156103c957600080fd5b506040805180820190915260118152704e41545552414c2053545550494449545960781b60208201525b6040516104009190612c3b565b60405180910390f35b34801561041557600080fd5b50610439610424366004612a0a565b600c6020526000908152604090205460ff1681565b6040519015158152602001610400565b34801561045557600080fd5b50610439610464366004612af3565b610bf1565b34801561047557600080fd5b50610489610484366004612beb565b610c08565b005b34801561049757600080fd5b506012545b604051908152602001610400565b3480156104b657600080fd5b50601d546104ca906001600160a01b031681565b6040516001600160a01b039091168152602001610400565b3480156104ee57600080fd5b5060105461049c565b34801561050357600080fd5b50610439610512366004612a0a565b600b6020526000908152604090205460ff1681565b34801561053357600080fd5b50610439610542366004612a7d565b610c46565b34801561055357600080fd5b5061049c601f5481565b34801561056957600080fd5b50610439610578366004612a0a565b60096020526000908152604090205460ff1681565b34801561059957600080fd5b5061049c6105a8366004612baf565b610c98565b3480156105b957600080fd5b506104896105c8366004612abe565b610d1c565b3480156105d957600080fd5b5060405160098152602001610400565b3480156105f557600080fd5b50610489610604366004612a0a565b610d71565b34801561061557600080fd5b50610489610624366004612beb565b610f28565b34801561063557600080fd5b50610439610644366004612af3565b610f5d565b34801561065557600080fd5b5061049c60155481565b34801561066b57600080fd5b50601e5461043990600160b01b900460ff1681565b34801561068c57600080fd5b5061049c61069b366004612bc8565b610f94565b3480156106ac57600080fd5b50601e546104ca906001600160a01b031681565b3480156106cc57600080fd5b506104896106db366004612a0a565b611043565b3480156106ec57600080fd5b50601e5461043990600160a81b900460ff1681565b34801561070d57600080fd5b5061048961071c366004612a0a565b61108e565b34801561072d57600080fd5b5061048961073c366004612beb565b6111e1565b34801561074d57600080fd5b5061048961075c366004612abe565b611216565b34801561076d57600080fd5b5061043961077c366004612a0a565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156107a657600080fd5b5061049c601a5481565b3480156107bc57600080fd5b506104896107cb366004612abe565b61126b565b3480156107dc57600080fd5b5060025461049c565b3480156107f157600080fd5b50610489610800366004612abe565b6112c0565b34801561081157600080fd5b5061049c60165481565b34801561082757600080fd5b5061049c610836366004612a0a565b611315565b34801561084757600080fd5b50610489611374565b34801561085c57600080fd5b5061049c60195481565b34801561087257600080fd5b50610489610881366004612baf565b6113d6565b34801561089257600080fd5b5061049c601b5481565b3480156108a857600080fd5b506104396108b7366004612a0a565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156108e157600080fd5b506104396108f0366004612a0a565b600a6020526000908152604090205460ff1681565b34801561091157600080fd5b506000546001600160a01b03166104ca565b34801561092f57600080fd5b5061048961093e366004612a44565b611405565b34801561094f57600080fd5b5061048961095e366004612b1f565b61145d565b34801561096f57600080fd5b506040805180820190915260028152614e5360f01b60208201526103f3565b34801561099a57600080fd5b5061049c60185481565b3480156109b057600080fd5b506104896109bf366004612beb565b6114fc565b3480156109d057600080fd5b506104396109df366004612af3565b611531565b3480156109f057600080fd5b50610489611568565b348015610a0557600080fd5b50610439610a14366004612af3565b61166e565b348015610a2557600080fd5b50610489610a34366004612b94565b61167b565b348015610a4557600080fd5b50610489610a54366004612baf565b6116c3565b348015610a6557600080fd5b50610439610a74366004612a0a565b60086020526000908152604090205460ff1681565b348015610a9557600080fd5b50610489610aa4366004612baf565b6116f2565b348015610ab557600080fd5b506104ca61dead81565b348015610acb57600080fd5b50610489610ada366004612a0a565b611721565b348015610aeb57600080fd5b50610489610afa366004612b94565b61176d565b348015610b0b57600080fd5b50610489610b1a366004612abe565b6117ef565b348015610b2b57600080fd5b5061049c60175481565b348015610b4157600080fd5b50610489610b50366004612a0a565b611844565b348015610b6157600080fd5b5061049c601c5481565b348015610b7757600080fd5b50610489610b86366004612baf565b611890565b348015610b9757600080fd5b5061049c610ba6366004612a44565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b348015610bdd57600080fd5b50610489610bec366004612a0a565b611915565b6000610bfe3384846119ed565b5060015b92915050565b6000546001600160a01b03163314610c3b5760405162461bcd60e51b8152600401610c3290612c90565b60405180910390fd5b601591909155601655565b6000610c53848484611b11565b6001600160a01b038416600090815260076020908152604080832033808552925290912054610c8e918691610c89908690612d8f565b6119ed565b5060019392505050565b6000601154821115610cff5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610c32565b6000610d09611f7f565b9050610d158184612d4e565b9392505050565b6000546001600160a01b03163314610d465760405162461bcd60e51b8152600401610c3290612c90565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610d9b5760405162461bcd60e51b8152600401610c3290612c90565b6001600160a01b03811660009081526006602052604090205460ff16610e035760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610c32565b60005b600d54811015610f2457816001600160a01b0316600d8281548110610e2d57610e2d612ded565b6000918252602090912001546001600160a01b03161415610f1257600d8054610e5890600190612d8f565b81548110610e6857610e68612ded565b600091825260209091200154600d80546001600160a01b039092169183908110610e9457610e94612ded565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600690925220805460ff19169055600d805480610eec57610eec612dd7565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610f1c81612da6565b915050610e06565b5050565b6000546001600160a01b03163314610f525760405162461bcd60e51b8152600401610c3290612c90565b601391909155601455565b3360008181526007602090815260408083206001600160a01b03871684529091528120549091610bfe918590610c89908690612d36565b6000601054831115610fe85760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610c32565b600080610ff485611fa2565b92509250506000611003611f7f565b90508461102757600061101887858585611fec565b50909550610c02945050505050565b600061103587858585611fec565b509550610c02945050505050565b6000546001600160a01b0316331461106d5760405162461bcd60e51b8152600401610c3290612c90565b6001600160a01b03166000908152600b60205260409020805460ff19169055565b6000546001600160a01b031633146110b85760405162461bcd60e51b8152600401610c3290612c90565b6001600160a01b03811660009081526006602052604090205460ff16156111215760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610c32565b6001600160a01b0381166000908152600360205260409020541561117b576001600160a01b03811660009081526003602052604090205461116190610c98565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600660205260408120805460ff19166001908117909155600d805491820181559091527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50180546001600160a01b0319169091179055565b6000546001600160a01b0316331461120b5760405162461bcd60e51b8152600401610c3290612c90565b601791909155601855565b6000546001600160a01b031633146112405760405162461bcd60e51b8152600401610c3290612c90565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146112955760405162461bcd60e51b8152600401610c3290612c90565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146112ea5760405162461bcd60e51b8152600401610c3290612c90565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b03811660009081526006602052604081205460ff161561135257506001600160a01b031660009081526004602052604090205490565b6001600160a01b038216600090815260036020526040902054610c0290610c98565b6000546001600160a01b0316331461139e5760405162461bcd60e51b8152600401610c3290612c90565b600080546040516001600160a01b0390911690600080516020612e1c833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146114005760405162461bcd60e51b8152600401610c3290612c90565b601f55565b6000546001600160a01b0316331461142f5760405162461bcd60e51b8152600401610c3290612c90565b600e80546001600160a01b039384166001600160a01b031991821617909155600f8054929093169116179055565b6000546001600160a01b031633146114875760405162461bcd60e51b8152600401610c3290612c90565b60005b818110156114f7576001600b60008585858181106114aa576114aa612ded565b90506020020160208101906114bf9190612a0a565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556114f081612da6565b905061148a565b505050565b6000546001600160a01b031633146115265760405162461bcd60e51b8152600401610c3290612c90565b601991909155601a55565b3360008181526007602090815260408083206001600160a01b03871684529091528120549091610bfe918590610c89908690612d8f565b6001546001600160a01b031633146115ce5760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610c32565b600254421161161f5760405162461bcd60e51b815260206004820152601860248201527f436f6e7472616374206973207374696c6c206c6f636b656400000000000000006044820152606401610c32565b600154600080546040516001600160a01b039384169390911691600080516020612e1c83398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610bfe338484611b11565b6000546001600160a01b031633146116a55760405162461bcd60e51b8152600401610c3290612c90565b601e8054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b031633146116ed5760405162461bcd60e51b8152600401610c3290612c90565b601c55565b6000546001600160a01b0316331461171c5760405162461bcd60e51b8152600401610c3290612c90565b601b55565b6000546001600160a01b0316331461174b5760405162461bcd60e51b8152600401610c3290612c90565b601d80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146117975760405162461bcd60e51b8152600401610c3290612c90565b601e8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906117e490831515815260200190565b60405180910390a150565b6000546001600160a01b031633146118195760405162461bcd60e51b8152600401610c3290612c90565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461186e5760405162461bcd60e51b8152600401610c3290612c90565b601e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146118ba5760405162461bcd60e51b8152600401610c3290612c90565b60008054600180546001600160a01b03199081166001600160a01b038416179091551690556118e98142612d36565b600255600080546040516001600160a01b0390911690600080516020612e1c833981519152908390a350565b6000546001600160a01b0316331461193f5760405162461bcd60e51b8152600401610c3290612c90565b6001600160a01b0381166119a45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c32565b600080546040516001600160a01b0380851693921691600080516020612e1c83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316611a4f5760405162461bcd60e51b8152602060048201526024808201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c32565b6001600160a01b038216611ab05760405162461bcd60e51b815260206004820152602260248201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c32565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166000908152600b602052604090205460ff16158015611b5357506001600160a01b0382166000908152600b602052604090205460ff16155b611b9f5760405162461bcd60e51b815260206004820152601b60248201527f54686973206164647265737320697320626c61636b6c697374656400000000006044820152606401610c32565b6001600160a01b038316611c035760405162461bcd60e51b815260206004820152602560248201527f42455032303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c32565b6001600160a01b038216611c655760405162461bcd60e51b815260206004820152602360248201527f42455032303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c32565b60008111611cc75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610c32565b6001600160a01b0383166000908152600c602052604090205460ff16611d4a57601b54811115611d4a5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610c32565b601e546001600160a01b038481169116148015611d755750601d546001600160a01b03838116911614155b15611de3576001600160a01b0382166000908152600a602052604090205460ff1615611de35760405162461bcd60e51b815260206004820152601d60248201527f41646472657373206973206e6f7420616c6c6f77656420746f206275790000006044820152606401610c32565b6000611dee30611315565b9050601b548110611dfe5750601b545b601c5481108015908190611e1c5750601e54600160a01b900460ff16155b8015611e4157506001600160a01b03851660009081526008602052604090205460ff16155b8015611e565750601e54600160a81b900460ff165b15611e6957601c549150611e6982612044565b6001600160a01b03851660009081526005602052604090205460019060ff1680611eab57506001600160a01b03851660009081526005602052604090205460ff165b15611eb4575060005b611ec08686868461225f565b601e54600160b01b900460ff168015611ef257506001600160a01b03851660009081526009602052604090205460ff16155b15611f7757601f54611f0386611315565b1115611f775760405162461bcd60e51b815260206004820152603860248201527f416e7469207768616c653a2063616e277420686f6c64206d6f7265207468616e60448201527f2074686520737065636966696564207468726573686f6c6400000000000000006064820152608401610c32565b505050505050565b6000806000611f8c61231c565b9092509050611f9b8183612d4e565b9250505090565b600080600080611fb48560155461249f565b90506000611fc48660165461249f565b90506000611fd28388612d8f565b9050611fde8282612d8f565b979296509094509092505050565b6000808080611ffb8589612d70565b905060006120098689612d70565b905060006120178789612d70565b905060006120258385612d8f565b90506120318282612d8f565b939b939a50919850919650505050505050565b601e805460ff60a01b1916600160a01b1790556000612064600283612d4e565b905060006120728284612d8f565b90504761207e836124b7565b600061208a8247612d8f565b905060006013546127108361209f9190612d4e565b6120a99190612d70565b90506000601454612710846120be9190612d4e565b6120c89190612d70565b90506000816120d78486612d8f565b6120e19190612d8f565b9050821561216b57600e54604080516001600160a01b039092168252602082018590527fe9c7f2b211c760890268dc4250ab69d148f8840809c94c593b2bc430e673fa63910160405180910390a1600e546040516001600160a01b039091169084156108fc029085906000818181858888f19350505050158015612169573d6000803e3d6000fd5b505b81156121f357600f54604080516001600160a01b039092168252602082018490527fbe61dd4a9cfefc957af4f19405f44fbde1f74724fcbf173c8b23225353eb4673910160405180910390a1600f546040516001600160a01b039091169083156108fc029084906000818181858888f193505050501580156121f1573d6000803e3d6000fd5b505b6000806122008884612618565b604080518c81526020810183905290810183905291935091507f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15050601e805460ff60a01b191690555050505050505050565b601554601654601e546000906001600160a01b0388811691161480156122935750601d546001600160a01b03878116911614155b601e549091506001600160a01b03878116911614846122bb57600060158190556016556122e5565b81156122d2576017546015556018546016556122e5565b80156122e557601954601555601a546016555b6122f088888861270c565b8415806122fa5750815b806123025750805b1561231257601584905560168390555b5050505050505050565b6011546010546000918291825b600d5481101561246e578260036000600d848154811061234b5761234b612ded565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806123b657508160046000600d848154811061238f5761238f612ded565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156123cc57601154601054945094505050509091565b60036000600d83815481106123e3576123e3612ded565b60009182526020808320909101546001600160a01b031683528201929092526040019020546124129084612d8f565b925060046000600d838154811061242b5761242b612ded565b60009182526020808320909101546001600160a01b0316835282019290925260400190205461245a9083612d8f565b91508061246681612da6565b915050612329565b5060105460115461247f9190612d4e565b821015612496576011546010549350935050509091565b90939092509050565b600060646124ad8385612d70565b610d159190612d4e565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106124ec576124ec612ded565b6001600160a01b03928316602091820292909201810191909152601d54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561254057600080fd5b505afa158015612554573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125789190612a27565b8160018151811061258b5761258b612ded565b6001600160a01b039283166020918202929092010152601d546125b191309116846119ed565b601d5460405163791ac94760e01b81526001600160a01b039091169063791ac947906125ea908590600090869030904290600401612cc5565b600060405180830381600087803b15801561260457600080fd5b505af1158015611f77573d6000803e3d6000fd5b601d5460009081906126359030906001600160a01b0316866119ed565b601d5460009081906001600160a01b031663f305d71986308985806126626000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b1580156126c557600080fd5b505af11580156126d9573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126fe9190612c0d565b509097909650945050505050565b600080600061271a84611fa2565b925092509250600061272a611f7f565b9050600080600061273d88878787611fec565b6001600160a01b038d166000908152600360205260409020549295509093509150612769908490612d8f565b6001600160a01b038b1660009081526003602090815260408083209390935560069052205460ff16156127d4576001600160a01b038a166000908152600460205260409020546127ba908990612d8f565b6001600160a01b038b166000908152600460205260409020555b6001600160a01b0389166000908152600360205260409020546127f8908390612d36565b6001600160a01b038a1660009081526003602090815260408083209390935560069052205460ff1615612863576001600160a01b038916600090815260046020526040902054612849908890612d36565b6001600160a01b038a166000908152600460205260409020555b61286f8a3087876128d2565b61287981876129cf565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef896040516128be91815260200190565b60405180910390a350505050505050505050565b816128dc576129c9565b60006128e88284612d70565b6001600160a01b03851660009081526003602052604090205490915061290f908290612d36565b6001600160a01b03851660009081526003602090815260408083209390935560069052205460ff161561297a576001600160a01b038416600090815260046020526040902054612960908490612d36565b6001600160a01b0385166000908152600460205260409020555b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516129bf91815260200190565b60405180910390a3505b50505050565b816011546129dd9190612d8f565b6011556012546129ee908290612d36565b6012555050565b80358015158114612a0557600080fd5b919050565b600060208284031215612a1c57600080fd5b8135610d1581612e03565b600060208284031215612a3957600080fd5b8151610d1581612e03565b60008060408385031215612a5757600080fd5b8235612a6281612e03565b91506020830135612a7281612e03565b809150509250929050565b600080600060608486031215612a9257600080fd5b8335612a9d81612e03565b92506020840135612aad81612e03565b929592945050506040919091013590565b60008060408385031215612ad157600080fd5b8235612adc81612e03565b9150612aea602084016129f5565b90509250929050565b60008060408385031215612b0657600080fd5b8235612b1181612e03565b946020939093013593505050565b60008060208385031215612b3257600080fd5b823567ffffffffffffffff80821115612b4a57600080fd5b818501915085601f830112612b5e57600080fd5b813581811115612b6d57600080fd5b8660208260051b8501011115612b8257600080fd5b60209290920196919550909350505050565b600060208284031215612ba657600080fd5b610d15826129f5565b600060208284031215612bc157600080fd5b5035919050565b60008060408385031215612bdb57600080fd5b82359150612aea602084016129f5565b60008060408385031215612bfe57600080fd5b50508035926020909101359150565b600080600060608486031215612c2257600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b81811015612c6857858101830151858201604001528201612c4c565b81811115612c7a576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612d155784516001600160a01b031683529383019391830191600101612cf0565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612d4957612d49612dc1565b500190565b600082612d6b57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612d8a57612d8a612dc1565b500290565b600082821015612da157612da1612dc1565b500390565b6000600019821415612dba57612dba612dc1565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114612e1857600080fd5b5056fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a264697066735822122051c97a4422e3ef20f45238f449aa9a9882e2bd9ddda8ae893915d4539c13658164736f6c63430008050033
Deployed Bytecode Sourcemap
13093:20267:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17191:83;;;;;;;;;;-1:-1:-1;17261:5:0;;;;;;;;;;;;-1:-1:-1;;;17261:5:0;;;;17191:83;;;;;;;:::i;:::-;;;;;;;;13687:53;;;;;;;;;;-1:-1:-1;13687:53:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5252:14:1;;5245:22;5227:41;;5215:2;5200:18;13687:53:0;5182:92:1;18212:161:0;;;;;;;;;;-1:-1:-1;18212:161:0;;;;;:::i;:::-;;:::i;22206:156::-;;;;;;;;;;-1:-1:-1;22206:156:0;;;;;:::i;:::-;;:::i;:::-;;19237:87;;;;;;;;;;-1:-1:-1;19306:10:0;;19237:87;;;12489:25:1;;;12477:2;12462:18;19237:87:0;12444:76:1;15071:41:0;;;;;;;;;;-1:-1:-1;15071:41:0;;;;-1:-1:-1;;;;;15071:41:0;;;;;;-1:-1:-1;;;;;4152:32:1;;;4134:51;;4122:2;4107:18;15071:41:0;4089:102:1;17468:204:0;;;;;;;;;;-1:-1:-1;17657:7:0;;17468:204;;13633:47;;;;;;;;;;-1:-1:-1;13633:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18379:266;;;;;;;;;;-1:-1:-1;18379:266:0;;;;;:::i;:::-;;:::i;15570:58::-;;;;;;;;;;;;;;;;13511:57;;;;;;;;;;-1:-1:-1;13511:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19952:251;;;;;;;;;;-1:-1:-1;19952:251:0;;;;;:::i;:::-;;:::i;21797:122::-;;;;;;;;;;-1:-1:-1;21797:122:0;;;;;:::i;:::-;;:::i;17377:83::-;;;;;;;;;;-1:-1:-1;17377:83:0;;14283:1;13976:36:1;;13964:2;13949:18;17377:83:0;13931:87:1;20553:479:0;;;;;;;;;;-1:-1:-1;20553:479:0;;;;;:::i;:::-;;:::i;22891:217::-;;;;;;;;;;-1:-1:-1;22891:217:0;;;;;:::i;:::-;;:::i;18653:215::-;;;;;;;;;;-1:-1:-1;18653:215:0;;;;;:::i;:::-;;:::i;14562:33::-;;;;;;;;;;;;;;;;15522:41;;;;;;;;;;-1:-1:-1;15522:41:0;;;;-1:-1:-1;;;15522:41:0;;;;;;19332:612;;;;;;;;;;-1:-1:-1;19332:612:0;;;;;:::i;:::-;;:::i;15119:39::-;;;;;;;;;;-1:-1:-1;15119:39:0;;;;-1:-1:-1;;;;;15119:39:0;;;21066:115;;;;;;;;;;-1:-1:-1;21066:115:0;;;;;:::i;:::-;;:::i;15193:40::-;;;;;;;;;;-1:-1:-1;15193:40:0;;;;-1:-1:-1;;;15193:40:0;;;;;;20211:334;;;;;;;;;;-1:-1:-1;20211:334:0;;;;;:::i;:::-;;:::i;22370:157::-;;;;;;;;;;-1:-1:-1;22370:157:0;;;;;:::i;:::-;;:::i;21927:126::-;;;;;;;;;;-1:-1:-1;21927:126:0;;;;;:::i;:::-;;:::i;26047:123::-;;;;;;;;;;-1:-1:-1;26047:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;26135:27:0;26111:4;26135:27;;;:18;:27;;;;;;;;;26047:123;14873:38;;;;;;;;;;;;;;;;23621:130;;;;;;;;;;-1:-1:-1;23621:130:0;;;;;:::i;:::-;;:::i;4485:90::-;;;;;;;;;;-1:-1:-1;4558:9:0;;4485:90;;21187:122;;;;;;;;;;-1:-1:-1;21187:122:0;;;;;:::i;:::-;;:::i;14628:33::-;;;;;;;;;;;;;;;;17680:198;;;;;;;;;;-1:-1:-1;17680:198:0;;;;;:::i;:::-;;:::i;4077:148::-;;;;;;;;;;;;;:::i;14829:37::-;;;;;;;;;;;;;;;;22061:137;;;;;;;;;;-1:-1:-1;22061:137:0;;;;;:::i;:::-;;:::i;14924:56::-;;;;;;;;;;;;;;;;19109:120;;;;;;;;;;-1:-1:-1;19109:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;19201:20:0;19177:4;19201:20;;;:11;:20;;;;;;;;;19109:120;13575:51;;;;;;;;;;-1:-1:-1;13575:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;3863:79;;;;;;;;;;-1:-1:-1;3901:7:0;3928:6;-1:-1:-1;;;;;3928:6:0;3863:79;;22703:180;;;;;;;;;;-1:-1:-1;22703:180:0;;;;;:::i;:::-;;:::i;32279:190::-;;;;;;;;;;-1:-1:-1;32279:190:0;;;;;:::i;:::-;;:::i;17282:87::-;;;;;;;;;;-1:-1:-1;17354:7:0;;;;;;;;;;;;-1:-1:-1;;;17354:7:0;;;;17282:87;;14764:36;;;;;;;;;;;;;;;;22535:160;;;;;;;;;;-1:-1:-1;22535:160:0;;;;;:::i;:::-;;:::i;18876:225::-;;;;;;;;;;-1:-1:-1;18876:225:0;;;;;:::i;:::-;;:::i;4821:298::-;;;;;;;;;;;;;:::i;17886:167::-;;;;;;;;;;-1:-1:-1;17886:167:0;;;;;:::i;:::-;;:::i;21549:98::-;;;;;;;;;;-1:-1:-1;21549:98:0;;;;;:::i;:::-;;:::i;21416:125::-;;;;;;;;;;-1:-1:-1;21416:125:0;;;;;:::i;:::-;;:::i;13443:61::-;;;;;;;;;;-1:-1:-1;13443:61:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;21317:91;;;;;;;;;;-1:-1:-1;21317:91:0;;;;;:::i;:::-;;:::i;13858:81::-;;;;;;;;;;;;13897:42;13858:81;;23336:179;;;;;;;;;;-1:-1:-1;23336:179:0;;;;;:::i;:::-;;:::i;23116:171::-;;;;;;;;;;-1:-1:-1;23116:171:0;;;;;:::i;:::-;;:::i;21655:134::-;;;;;;;;;;-1:-1:-1;21655:134:0;;;;;:::i;:::-;;:::i;14721:36::-;;;;;;;;;;;;;;;;23523:90;;;;;;;;;;-1:-1:-1;23523:90:0;;;;;:::i;:::-;;:::i;14987:48::-;;;;;;;;;;;;;;;;4583:226;;;;;;;;;;-1:-1:-1;4583:226:0;;;;;:::i;:::-;;:::i;18061:143::-;;;;;;;;;;-1:-1:-1;18061:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;18169:18:0;;;18142:7;18169:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;18061:143;4233:244;;;;;;;;;;-1:-1:-1;4233:244:0;;;;;:::i;:::-;;:::i;18212:161::-;18287:4;18304:39;2649:10;18327:7;18336:6;18304:8;:39::i;:::-;-1:-1:-1;18361:4:0;18212:161;;;;;:::o;22206:156::-;3990:6;;-1:-1:-1;;;;;3990:6:0;2649:10;3990:22;3982:67;;;;-1:-1:-1;;;3982:67:0;;;;;;;:::i;:::-;;;;;;;;;22293:7:::1;:22:::0;;;;22326:13:::1;:28:::0;22206:156::o;18379:266::-;18477:4;18494:36;18504:6;18512:9;18523:6;18494:9;:36::i;:::-;-1:-1:-1;;;;;18572:19:0;;;;;;:11;:19;;;;;;;;2649:10;18572:33;;;;;;;;;18541:74;;18550:6;;18572:42;;18608:6;;18572:42;:::i;:::-;18541:8;:74::i;:::-;-1:-1:-1;18633:4:0;18379:266;;;;;:::o;19952:251::-;20018:7;20057;;20046;:18;;20038:73;;;;-1:-1:-1;;;20038:73:0;;7481:2:1;20038:73:0;;;7463:21:1;7520:2;7500:18;;;7493:30;7559:34;7539:18;;;7532:62;-1:-1:-1;;;7610:18:1;;;7603:40;7660:19;;20038:73:0;7453:232:1;20038:73:0;20124:19;20146:10;:8;:10::i;:::-;20124:32;-1:-1:-1;20174:21:0;20124:32;20174:7;:21;:::i;:::-;20167:28;19952:251;-1:-1:-1;;;19952:251:0:o;21797:122::-;3990:6;;-1:-1:-1;;;;;3990:6:0;2649:10;3990:22;3982:67;;;;-1:-1:-1;;;3982:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21880:27:0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:31;;-1:-1:-1;;21880:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21797:122::o;20553:479::-;3990:6;;-1:-1:-1;;;;;3990:6:0;2649:10;3990:22;3982:67;;;;-1:-1:-1;;;3982:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20633:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;20625:60;;;::::0;-1:-1:-1;;;20625:60:0;;8299:2:1;20625:60:0::1;::::0;::::1;8281:21:1::0;8338:2;8318:18;;;8311:30;8377:29;8357:18;;;8350:57;8424:18;;20625:60:0::1;8271:177:1::0;20625:60:0::1;20703:9;20698:327;20722:9;:16:::0;20718:20;::::1;20698:327;;;20780:7;-1:-1:-1::0;;;;;20764:23:0::1;:9;20774:1;20764:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;20764:12:0::1;:23;20760:254;;;20823:9;20833:16:::0;;:20:::1;::::0;20852:1:::1;::::0;20833:20:::1;:::i;:::-;20823:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;20808:9:::1;:12:::0;;-1:-1:-1;;;;;20823:31:0;;::::1;::::0;20818:1;;20808:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;20808:46:0::1;-1:-1:-1::0;;;;;20808:46:0;;::::1;;::::0;;20873:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;20912:11:::1;:20:::0;;;;:28;;-1:-1:-1;;20912:28:0::1;::::0;;20959:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;20959:15:0;;;;;-1:-1:-1;;;;;;20959:15:0::1;::::0;;;;;20698:327:::1;20553:479:::0;:::o;20760:254::-:1;20740:3:::0;::::1;::::0;::::1;:::i;:::-;;;;20698:327;;;;20553:479:::0;:::o;22891:217::-;3990:6;;-1:-1:-1;;;;;3990:6:0;2649:10;3990:22;3982:67;;;;-1:-1:-1;;;3982:67:0;;;;;;;:::i;:::-;22993:29:::1;:46:::0;;;;23050:34:::1;:50:::0;22891:217::o;18653:215::-;2649:10;18741:4;18790:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;18790:34:0;;;;;;;;;;18741:4;;18758:80;;18781:7;;18790:47;;18827:10;;18790:47;:::i;19332:612::-;19422:7;19461;;19450;:18;;19442:62;;;;-1:-1:-1;;;19442:62:0;;9011:2:1;19442:62:0;;;8993:21:1;9050:2;9030:18;;;9023:30;9089:33;9069:18;;;9062:61;9140:18;;19442:62:0;8983:181:1;19442:62:0;19518:12;19532:18;19554:20;19566:7;19554:11;:20::i;:::-;19515:59;;;;;19585:19;19607:10;:8;:10::i;:::-;19585:32;;19635:17;19630:307;;19670:15;19691:51;19703:7;19712:4;19718:10;19730:11;19691;:51::i;:::-;-1:-1:-1;19669:73:0;;-1:-1:-1;19757:14:0;;-1:-1:-1;;;;;19757:14:0;19630:307;19809:23;19837:51;19849:7;19858:4;19864:10;19876:11;19837;:51::i;:::-;-1:-1:-1;19806:82:0;-1:-1:-1;19903:22:0;;-1:-1:-1;;;;;19903:22:0;21066:115;3990:6;;-1:-1:-1;;;;;3990:6:0;2649:10;3990:22;3982:67;;;;-1:-1:-1;;;3982:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21142:23:0::1;21168:5;21142:23:::0;;;:14:::1;:23;::::0;;;;:31;;-1:-1:-1;;21142:31:0::1;::::0;;21066:115::o;20211:334::-;3990:6;;-1:-1:-1;;;;;3990:6:0;2649:10;3990:22;3982:67;;;;-1:-1:-1;;;3982:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20292:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;20291:21;20283:61;;;::::0;-1:-1:-1;;;20283:61:0;;8299:2:1;20283:61:0::1;::::0;::::1;8281:21:1::0;8338:2;8318:18;;;8311:30;8377:29;8357:18;;;8350:57;8424:18;;20283:61:0::1;8271:177:1::0;20283:61:0::1;-1:-1:-1::0;;;;;20361:16:0;::::1;20380:1;20361:16:::0;;;:7:::1;:16;::::0;;;;;:20;20357:109:::1;;-1:-1:-1::0;;;;;20437:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;20417:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;20398:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;20357:109:::1;-1:-1:-1::0;;;;;20476:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;20476:27:0::1;20499:4;20476:27:::0;;::::1;::::0;;;20514:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;20514:23:0::1;::::0;;::::1;::::0;;20211:334::o;22370:157::-;3990:6;;-1:-1:-1;;;;;3990:6:0;2649:10;3990:22;3982:67;;;;-1:-1:-1;;;3982:67:0;;;;;;;:::i;:::-;22452:10:::1;:25:::0;;;;22488:16:::1;:31:::0;22370:157::o;21927:126::-;3990:6;;-1:-1:-1;;;;;3990:6:0;2649:10;3990:22;3982:67;;;;-1:-1:-1;;;3982:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22012:29:0;;;::::1;;::::0;;;:20:::1;:29;::::0;;;;:33;;-1:-1:-1;;22012:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21927:126::o;23621:130::-;3990:6;;-1:-1:-1;;;;;3990:6:0;2649:10;3990:22;3982:67;;;;-1:-1:-1;;;3982:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23708:31:0;;;::::1;;::::0;;;:28:::1;:31;::::0;;;;:35;;-1:-1:-1;;23708:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23621:130::o;21187:122::-;3990:6;;-1:-1:-1;;;;;3990:6:0;2649:10;3990:22;3982:67;;;;-1:-1:-1;;;3982:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21270:27:0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:31;;-1:-1:-1;;21270:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21187:122::o;17680:198::-;-1:-1:-1;;;;;17770:20:0;;17746:7;17770:20;;;:11;:20;;;;;;;;17766:49;;;-1:-1:-1;;;;;;17799:16:0;;;;;:7;:16;;;;;;;17680:198::o;17766:49::-;-1:-1:-1;;;;;17853:16:0;;;;;;:7;:16;;;;;;17833:37;;:19;:37::i;4077:148::-;3990:6;;-1:-1:-1;;;;;3990:6:0;2649:10;3990:22;3982:67;;;;-1:-1:-1;;;3982:67:0;;;;;;;:::i;:::-;4184:1:::1;4168:6:::0;;4147:40:::1;::::0;-1:-1:-1;;;;;4168:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;4147:40:0;4184:1;;4147:40:::1;4215:1;4198:19:::0;;-1:-1:-1;;;;;;4198:19:0::1;::::0;;4077:148::o;22061:137::-;3990:6;;-1:-1:-1;;;;;3990:6:0;2649:10;3990:22;3982:67;;;;-1:-1:-1;;;3982:67:0;;;;;;;:::i;:::-;22150:19:::1;:40:::0;22061:137::o;22703:180::-;3990:6;;-1:-1:-1;;;;;3990:6:0;2649:10;3990:22;3982:67;;;;-1:-1:-1;;;3982:67:0;;;;;;;:::i;:::-;22800:11:::1;:30:::0;;-1:-1:-1;;;;;22800:30:0;;::::1;-1:-1:-1::0;;;;;;22800:30:0;;::::1;;::::0;;;22841:16:::1;:34:::0;;;;;::::1;::::0;::::1;;::::0;;22703:180::o;32279:190::-;3990:6;;-1:-1:-1;;;;;3990:6:0;2649:10;3990:22;3982:67;;;;-1:-1:-1;;;3982:67:0;;;;;;;:::i;:::-;32368:9:::1;32363:99;32379:20:::0;;::::1;32363:99;;;32448:4;32417:14;:28;32432:9;;32442:1;32432:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;32417:28:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;32417:28:0;:35;;-1:-1:-1;;32417:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;32401:3:::1;::::0;::::1;:::i;:::-;;;32363:99;;;;32279:190:::0;;:::o;22535:160::-;3990:6;;-1:-1:-1;;;;;3990:6:0;2649:10;3990:22;3982:67;;;;-1:-1:-1;;;3982:67:0;;;;;;;:::i;:::-;22618:11:::1;:26:::0;;;;22655:17:::1;:32:::0;22535:160::o;18876:225::-;2649:10;18969:4;19018:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19018:34:0;;;;;;;;;;18969:4;;18986:85;;19009:7;;19018:52;;19055:15;;19018:52;:::i;4821:298::-;4873:14;;-1:-1:-1;;;;;4873:14:0;4891:10;4873:28;4865:76;;;;-1:-1:-1;;;4865:76:0;;12141:2:1;4865:76:0;;;12123:21:1;12180:2;12160:18;;;12153:30;12219:34;12199:18;;;12192:62;-1:-1:-1;;;12270:18:1;;;12263:33;12313:19;;4865:76:0;12113:225:1;4865:76:0;4978:9;;4960:15;:27;4952:65;;;;-1:-1:-1;;;4952:65:0;;6723:2:1;4952:65:0;;;6705:21:1;6762:2;6742:18;;;6735:30;6801:26;6781:18;;;6774:54;6845:18;;4952:65:0;6695:174:1;4952:65:0;5062:14;;;5054:6;;5033:44;;-1:-1:-1;;;;;5062:14:0;;;;5054:6;;;;-1:-1:-1;;;;;;;;;;;5033:44:0;;5097:14;;;5088:23;;-1:-1:-1;;;;;;5088:23:0;-1:-1:-1;;;;;5097:14:0;;;5088:23;;;;;;4821:298::o;17886:167::-;17964:4;17981:42;2649:10;18005:9;18016:6;17981:9;:42::i;21549:98::-;3990:6;;-1:-1:-1;;;;;3990:6:0;2649:10;3990:22;3982:67;;;;-1:-1:-1;;;3982:67:0;;;;;;;:::i;:::-;21616:19:::1;:23:::0;;;::::1;;-1:-1:-1::0;;;21616:23:0::1;-1:-1:-1::0;;;;21616:23:0;;::::1;::::0;;;::::1;::::0;;21549:98::o;21416:125::-;3990:6;;-1:-1:-1;;;;;3990:6:0;2649:10;3990:22;3982:67;;;;-1:-1:-1;;;3982:67:0;;;;;;;:::i;:::-;21499:16:::1;:34:::0;21416:125::o;21317:91::-;3990:6;;-1:-1:-1;;;;;3990:6:0;2649:10;3990:22;3982:67;;;;-1:-1:-1;;;3982:67:0;;;;;;;:::i;:::-;21380:12:::1;:20:::0;21317:91::o;23336:179::-;3990:6;;-1:-1:-1;;;;;3990:6:0;2649:10;3990:22;3982:67;;;;-1:-1:-1;;;3982:67:0;;;;;;;:::i;:::-;23473:15:::1;:34:::0;;-1:-1:-1;;;;;;23473:34:0::1;-1:-1:-1::0;;;;;23473:34:0;;;::::1;::::0;;;::::1;::::0;;23336:179::o;23116:171::-;3990:6;;-1:-1:-1;;;;;3990:6:0;2649:10;3990:22;3982:67;;;;-1:-1:-1;;;3982:67:0;;;;;;;:::i;:::-;23193:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;23193:32:0::1;-1:-1:-1::0;;;;23193:32:0;;::::1;;::::0;;23241:38:::1;::::0;::::1;::::0;::::1;::::0;23217:8;5252:14:1;5245:22;5227:41;;5215:2;5200:18;;5182:92;23241:38:0::1;;;;;;;;23116:171:::0;:::o;21655:134::-;3990:6;;-1:-1:-1;;;;;3990:6:0;2649:10;3990:22;3982:67;;;;-1:-1:-1;;;3982:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21744:33:0;;;::::1;;::::0;;;:24:::1;:33;::::0;;;;:37;;-1:-1:-1;;21744:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21655:134::o;23523:90::-;3990:6;;-1:-1:-1;;;;;3990:6:0;2649:10;3990:22;3982:67;;;;-1:-1:-1;;;3982:67:0;;;;;;;:::i;:::-;23588:13:::1;:17:::0;;-1:-1:-1;;;;;;23588:17:0::1;-1:-1:-1::0;;;;;23588:17:0;;;::::1;::::0;;;::::1;::::0;;23523:90::o;4583:226::-;3990:6;;-1:-1:-1;;;;;3990:6:0;2649:10;3990:22;3982:67;;;;-1:-1:-1;;;3982:67:0;;;;;;;:::i;:::-;4664:6:::1;::::0;;;4647:23;;-1:-1:-1;;;;;;4647:23:0;;::::1;-1:-1:-1::0;;;;;4664:6:0;::::1;4647:23;::::0;;;4681:19:::1;::::0;;4723:22:::1;4741:4:::0;4723:15:::1;:22;:::i;:::-;4711:9;:34:::0;4798:1:::1;4782:6:::0;;4761:40:::1;::::0;-1:-1:-1;;;;;4782:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;4761:40:0;4798:1;;4761:40:::1;4583:226:::0;:::o;4233:244::-;3990:6;;-1:-1:-1;;;;;3990:6:0;2649:10;3990:22;3982:67;;;;-1:-1:-1;;;3982:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4322:22:0;::::1;4314:73;;;::::0;-1:-1:-1;;;4314:73:0;;7892:2:1;4314:73:0::1;::::0;::::1;7874:21:1::0;7931:2;7911:18;;;7904:30;7970:34;7950:18;;;7943:62;-1:-1:-1;;;8021:18:1;;;8014:36;8067:19;;4314:73:0::1;7864:228:1::0;4314:73:0::1;4424:6;::::0;;4403:38:::1;::::0;-1:-1:-1;;;;;4403:38:0;;::::1;::::0;4424:6;::::1;::::0;-1:-1:-1;;;;;;;;;;;4403:38:0;::::1;4452:6;:17:::0;;-1:-1:-1;;;;;;4452:17:0::1;-1:-1:-1::0;;;;;4452:17:0;;;::::1;::::0;;;::::1;::::0;;4233:244::o;26178:337::-;-1:-1:-1;;;;;26271:19:0;;26263:68;;;;-1:-1:-1;;;26263:68:0;;7076:2:1;26263:68:0;;;7058:21:1;7115:2;7095:18;;;7088:30;7154:34;7134:18;;;7127:62;-1:-1:-1;;;7205:18:1;;;7198:34;7249:19;;26263:68:0;7048:226:1;26263:68:0;-1:-1:-1;;;;;26350:21:0;;26342:68;;;;-1:-1:-1;;;26342:68:0;;11738:2:1;26342:68:0;;;11720:21:1;11777:2;11757:18;;;11750:30;11816:34;11796:18;;;11789:62;-1:-1:-1;;;11867:18:1;;;11860:32;11909:19;;26342:68:0;11710:224:1;26342:68:0;-1:-1:-1;;;;;26423:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;26475:32;;12489:25:1;;;26475:32:0;;12462:18:1;26475:32:0;;;;;;;26178:337;;;:::o;26523:2277::-;-1:-1:-1;;;;;26658:20:0;;;;;;:14;:20;;;;;;;;26657:21;:44;;;;-1:-1:-1;;;;;;26683:18:0;;;;;;:14;:18;;;;;;;;26682:19;26657:44;26649:84;;;;-1:-1:-1;;;26649:84:0;;8655:2:1;26649:84:0;;;8637:21:1;8694:2;8674:18;;;8667:30;8733:29;8713:18;;;8706:57;8780:18;;26649:84:0;8627:177:1;26649:84:0;-1:-1:-1;;;;;26752:18:0;;26744:68;;;;-1:-1:-1;;;26744:68:0;;6317:2:1;26744:68:0;;;6299:21:1;6356:2;6336:18;;;6329:30;6395:34;6375:18;;;6368:62;-1:-1:-1;;;6446:18:1;;;6439:35;6491:19;;26744:68:0;6289:227:1;26744:68:0;-1:-1:-1;;;;;26831:16:0;;26823:64;;;;-1:-1:-1;;;26823:64:0;;10551:2:1;26823:64:0;;;10533:21:1;10590:2;10570:18;;;10563:30;10629:34;10609:18;;;10602:62;-1:-1:-1;;;10680:18:1;;;10673:33;10723:19;;26823:64:0;10523:225:1;26823:64:0;26915:1;26906:6;:10;26898:64;;;;-1:-1:-1;;;26898:64:0;;10141:2:1;26898:64:0;;;10123:21:1;10180:2;10160:18;;;10153:30;10219:34;10199:18;;;10192:62;-1:-1:-1;;;10270:18:1;;;10263:39;10319:19;;26898:64:0;10113:231:1;26898:64:0;-1:-1:-1;;;;;26980:26:0;;;;;;:20;:26;;;;;;;;26975:135;;27041:12;;27031:6;:22;;27023:75;;;;-1:-1:-1;;;27023:75:0;;9371:2:1;27023:75:0;;;9353:21:1;9410:2;9390:18;;;9383:30;9449:34;9429:18;;;9422:62;-1:-1:-1;;;9500:18:1;;;9493:38;9548:19;;27023:75:0;9343:230:1;27023:75:0;27183:13;;-1:-1:-1;;;;;27175:21:0;;;27183:13;;27175:21;:55;;;;-1:-1:-1;27214:15:0;;-1:-1:-1;;;;;27200:30:0;;;27214:15;;27200:30;;27175:55;27171:153;;;-1:-1:-1;;;;;27256:22:0;;;;;;:18;:22;;;;;;;;27255:23;27247:65;;;;-1:-1:-1;;;27247:65:0;;10955:2:1;27247:65:0;;;10937:21:1;10994:2;10974:18;;;10967:30;11033:31;11013:18;;;11006:59;11082:18;;27247:65:0;10927:179:1;27247:65:0;27650:28;27681:24;27699:4;27681:9;:24::i;:::-;27650:55;;27754:12;;27730:20;:36;27726:104;;-1:-1:-1;27806:12:0;;27726:104;27903:16;;27879:40;;;;;;;27948:55;;-1:-1:-1;27987:16:0;;-1:-1:-1;;;27987:16:0;;;;27986:17;27948:55;:107;;;;-1:-1:-1;;;;;;28021:34:0;;;;;;:28;:34;;;;;;;;28020:35;27948:107;:145;;;;-1:-1:-1;28072:21:0;;-1:-1:-1;;;28072:21:0;;;;27948:145;27930:292;;;28143:16;;28120:39;;28174:36;28189:20;28174:14;:36::i;:::-;-1:-1:-1;;;;;28278:24:0;;28244:12;28278:24;;;:18;:24;;;;;;28259:4;;28278:24;;;:50;;-1:-1:-1;;;;;;28306:22:0;;;;;;:18;:22;;;;;;;;28278:50;28274:98;;;-1:-1:-1;28355:5:0;28274:98;28382:41;28397:4;28403:2;28407:6;28415:7;28382:14;:41::i;:::-;28606:19;;-1:-1:-1;;;28606:19:0;;;;:52;;;;-1:-1:-1;;;;;;28630:28:0;;;;;;:24;:28;;;;;;;;28629:29;28606:52;28601:192;;;28701:19;;28684:13;28694:2;28684:9;:13::i;:::-;:36;;28676:105;;;;-1:-1:-1;;;28676:105:0;;11313:2:1;28676:105:0;;;11295:21:1;11352:2;11332:18;;;11325:30;11391:34;11371:18;;;11364:62;11462:26;11442:18;;;11435:54;11506:19;;28676:105:0;11285:246:1;28676:105:0;26626:2174;;;26523:2277;;;:::o;24780:160::-;24821:7;24842:15;24859;24878:19;:17;:19::i;:::-;24841:56;;-1:-1:-1;24841:56:0;-1:-1:-1;24915:17:0;24841:56;;24915:17;:::i;:::-;24908:24;;;;24780:160;:::o;23911:386::-;23971:7;23980;23989;24009:12;24030:30;24043:7;24052;;24030:12;:30::i;:::-;24009:51;;24071:18;24092:36;24105:7;24114:13;;24092:12;:36::i;:::-;24071:57;-1:-1:-1;24139:23:0;24165:14;24175:4;24165:7;:14;:::i;:::-;24139:40;-1:-1:-1;24208:28:0;24226:10;24139:40;24208:28;:::i;:::-;24190:46;24272:4;;-1:-1:-1;24278:10:0;;-1:-1:-1;23911:386:0;;-1:-1:-1;;;23911:386:0:o;24305:467::-;24420:7;;;;24479:21;24489:11;24479:7;:21;:::i;:::-;24458:42;-1:-1:-1;24511:12:0;24532:18;24539:11;24532:4;:18;:::i;:::-;24511:39;-1:-1:-1;24561:18:0;24582:24;24595:11;24582:10;:24;:::i;:::-;24561:45;-1:-1:-1;24617:23:0;24643:14;24653:4;24643:7;:14;:::i;:::-;24617:40;-1:-1:-1;24686:28:0;24704:10;24617:40;24686:28;:::i;:::-;24733:7;;;;-1:-1:-1;24759:4:0;;-1:-1:-1;24305:467:0;;-1:-1:-1;;;;;;;24305:467:0:o;28808:1176::-;15802:16;:23;;-1:-1:-1;;;;15802:23:0;-1:-1:-1;;;15802:23:0;;;;28960:24:::1;28983:1;28960:20:::0;:24:::1;:::i;:::-;28940:44:::0;-1:-1:-1;28995:17:0::1;29015:27;28940:44:::0;29015:20;:27:::1;:::i;:::-;28995:47:::0;-1:-1:-1;29080:21:0::1;29114:22;29131:4:::0;29114:16:::1;:22::i;:::-;29149:18;29170:38;29194:14:::0;29170:21:::1;:38;:::i;:::-;29149:59;;29219:18;29267:29;;29259:5;29246:10;:18;;;;:::i;:::-;:50;;;;:::i;:::-;29219:77;;29307:23;29354:34;;29346:5;29333:10;:18;;;;:::i;:::-;:55;;;;:::i;:::-;29307:81:::0;-1:-1:-1;29399:23:0::1;29307:81:::0;29425:23:::1;29438:10:::0;29425;:23:::1;:::i;:::-;:41;;;;:::i;:::-;29399:67:::0;-1:-1:-1;29484:15:0;;29479:144:::1;;29531:11;::::0;29522:33:::1;::::0;;-1:-1:-1;;;;;29531:11:0;;::::1;4370:51:1::0;;4452:2;4437:18;;4430:34;;;29522:33:0::1;::::0;4343:18:1;29522:33:0::1;;;;;;;29578:11;::::0;29570:41:::1;::::0;-1:-1:-1;;;;;29578:11:0;;::::1;::::0;29570:41;::::1;;;::::0;29600:10;;29578:11:::1;29570:41:::0;29578:11;29570:41;29600:10;29578:11;29570:41;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;29479:144;29638:20:::0;;29633:174:::1;;29695:16;::::0;29681:48:::1;::::0;;-1:-1:-1;;;;;29695:16:0;;::::1;4370:51:1::0;;4452:2;4437:18;;4430:34;;;29681:48:0::1;::::0;4343:18:1;29681:48:0::1;;;;;;;29752:16;::::0;29744:51:::1;::::0;-1:-1:-1;;;;;29752:16:0;;::::1;::::0;29744:51;::::1;;;::::0;29779:15;;29752:16:::1;29744:51:::0;29752:16;29744:51;29779:15;29752:16;29744:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;29633:174;29828:18;29848:16:::0;29868:40:::1;29881:9;29892:15;29868:12;:40::i;:::-;29934:42;::::0;;13712:25:1;;;13768:2;13753:18;;13746:34;;;13796:18;;;13789:34;;;29827:81:0;;-1:-1:-1;29827:81:0;-1:-1:-1;29934:42:0::1;::::0;13700:2:1;13685:18;29934:42:0::1;;;;;;;-1:-1:-1::0;;15848:16:0;:24;;-1:-1:-1;;;;15848:24:0;;;-1:-1:-1;;;;;;;;28808:1176:0:o;31236:938::-;31375:7;;31424:13;;31482;;31344:22;;-1:-1:-1;;;;;31472:23:0;;;31482:13;;31472:23;:64;;;;-1:-1:-1;31520:15:0;;-1:-1:-1;;;;;31499:37:0;;;31520:15;;31499:37;;31472:64;31574:13;;31458:78;;-1:-1:-1;;;;;;31561:26:0;;;31574:13;;31561:26;31613:7;31608:333;;31653:1;31637:7;:17;;;31669:13;:17;31608:333;;;31710:5;31706:235;;;31749:10;;31733:7;:26;31790:16;;31774:13;:32;31706:235;;;31830:6;31826:115;;;31870:11;;31854:7;:27;31912:17;;31896:13;:33;31826:115;31961:44;31979:6;31987:9;31998:6;31961:17;:44::i;:::-;32031:7;32030:8;:17;;;;32042:5;32030:17;:27;;;;32051:6;32030:27;32026:141;;;32074:7;:30;;;32119:13;:36;;;32026:141;31333:841;;;;31236:938;;;;:::o;24948:552::-;25045:7;;25081;;24998;;;;;25105:283;25129:9;:16;25125:20;;25105:283;;;25195:7;25171;:21;25179:9;25189:1;25179:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;25179:12:0;25171:21;;;;;;;;;;;;;:31;;:66;;;25230:7;25206;:21;25214:9;25224:1;25214:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;25214:12:0;25206:21;;;;;;;;;;;;;:31;25171:66;25167:97;;;25247:7;;25256;;25239:25;;;;;;;24948:552;;:::o;25167:97::-;25299:7;:21;25307:9;25317:1;25307:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;25307:12:0;25299:21;;;;;;;;;;;;;25289:31;;:7;:31;:::i;:::-;25279:41;;25355:7;:21;25363:9;25373:1;25363:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;25363:12:0;25355:21;;;;;;;;;;;;;25345:31;;:7;:31;:::i;:::-;25335:41;-1:-1:-1;25147:3:0;;;;:::i;:::-;;;;25105:283;;;;25422:7;;25412;;:17;;;;:::i;:::-;25402:7;:27;25398:58;;;25439:7;;25448;;25431:25;;;;;;24948:552;;:::o;25398:58::-;25475:7;;25484;;-1:-1:-1;24948:552:0;-1:-1:-1;24948:552:0:o;25909:126::-;25982:7;26024:3;26009:12;26018:3;26009:6;:12;:::i;:::-;:18;;;;:::i;29992:589::-;30142:16;;;30156:1;30142:16;;;;;;;;30118:21;;30142:16;;;;;;;;;;-1:-1:-1;30142:16:0;30118:40;;30187:4;30169;30174:1;30169:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;30169:23:0;;;:7;;;;;;;;;;:23;;;;30213:15;;:22;;;-1:-1:-1;;;30213:22:0;;;;:15;;;;;:20;;:22;;;;;30169:7;;30213:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30203:4;30208:1;30203:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;30203:32:0;;;:7;;;;;;;;;:32;30280:15;;30248:62;;30265:4;;30280:15;30298:11;30248:8;:62::i;:::-;30349:15;;:224;;-1:-1:-1;;;30349:224:0;;-1:-1:-1;;;;;30349:15:0;;;;:66;;:224;;30430:11;;30349:15;;30500:4;;30527;;30547:15;;30349:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30589:639;30796:15;;30668:7;;;;30764:62;;30781:4;;-1:-1:-1;;;;;30796:15:0;30814:11;30764:8;:62::i;:::-;30908:15;;30870:16;;;;-1:-1:-1;;;;;30908:15:0;:31;30947:9;30980:4;31000:11;30870:16;;31112:7;3901;3928:6;-1:-1:-1;;;;;3928:6:0;;3863:79;31112:7;30908:252;;;;;;-1:-1:-1;;;;;;30908:252:0;;;-1:-1:-1;;;;;4834:15:1;;;30908:252:0;;;4816:34:1;4866:18;;;4859:34;;;;4909:18;;;4902:34;;;;4952:18;;;4945:34;5016:15;;;4995:19;;;4988:44;31134:15:0;5048:19:1;;;5041:35;4750:19;;30908:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;30869:291:0;;;;-1:-1:-1;30589:639:0;-1:-1:-1;;;;;30589:639:0:o;32477:878::-;32576:23;32601:12;32615:18;32637:20;32649:7;32637:11;:20::i;:::-;32575:82;;;;;;32668:19;32690:10;:8;:10::i;:::-;32668:32;;32712:15;32729:23;32754:12;32770:51;32782:7;32791:4;32797:10;32809:11;32770;:51::i;:::-;-1:-1:-1;;;;;32852:15:0;;;;;;:7;:15;;;;;;32711:110;;-1:-1:-1;32711:110:0;;-1:-1:-1;32711:110:0;-1:-1:-1;32852:25:0;;32711:110;;32852:25;:::i;:::-;-1:-1:-1;;;;;32834:15:0;;;;;;:7;:15;;;;;;;;:43;;;;32892:11;:19;;;;;;32888:95;;;-1:-1:-1;;;;;32946:15:0;;;;;;:7;:15;;;;;;:25;;32964:7;;32946:25;:::i;:::-;-1:-1:-1;;;;;32928:15:0;;;;;;:7;:15;;;;;:43;32888:95;-1:-1:-1;;;;;33016:18:0;;;;;;:7;:18;;;;;;:36;;33037:15;;33016:36;:::i;:::-;-1:-1:-1;;;;;32995:18:0;;;;;;:7;:18;;;;;;;;:57;;;;33067:11;:22;;;;;;33063:112;;;-1:-1:-1;;;;;33127:18:0;;;;;;:7;:18;;;;;;:36;;33148:15;;33127:36;:::i;:::-;-1:-1:-1;;;;;33106:18:0;;;;;;:7;:18;;;;;:57;33063:112;33187:66;33206:6;33222:4;33229:10;33241:11;33187:18;:66::i;:::-;33264:23;33276:4;33282;33264:11;:23::i;:::-;33320:9;-1:-1:-1;;;;;33303:44:0;33312:6;-1:-1:-1;;;;;33303:44:0;;33331:15;33303:44;;;;12489:25:1;;12477:2;12462:18;;12444:76;33303:44:0;;;;;;;;32564:791;;;;;;;32477:878;;;:::o;25512:385::-;25629:12;25625:29;;25645:7;;25625:29;25666:15;25684:21;25694:11;25684:7;:21;:::i;:::-;-1:-1:-1;;;;;25730:11:0;;;;;;:7;:11;;;;;;25666:39;;-1:-1:-1;25730:21:0;;25666:39;;25730:21;:::i;:::-;-1:-1:-1;;;;;25716:11:0;;;;;;:7;:11;;;;;;;;:35;;;;25766:11;:15;;;;;;25762:83;;;-1:-1:-1;;;;;25812:11:0;;;;;;:7;:11;;;;;;:21;;25826:7;;25812:21;:::i;:::-;-1:-1:-1;;;;;25798:11:0;;;;;;:7;:11;;;;;:35;25762:83;25877:2;-1:-1:-1;;;;;25860:29:0;25869:6;-1:-1:-1;;;;;25860:29:0;;25881:7;25860:29;;;;12489:25:1;;12477:2;12462:18;;12444:76;25860:29:0;;;;;;;;25614:283;25512:385;;;;;:::o;23759:144::-;23850:4;23840:7;;:14;;;;:::i;:::-;23827:7;:27;23878:10;;:17;;23891:4;;23878:17;:::i;:::-;23865:10;:30;-1:-1:-1;;23759:144:0: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:247::-;238:6;291:2;279:9;270:7;266:23;262:32;259:2;;;307:1;304;297:12;259:2;346:9;333:23;365:31;390:5;365:31;:::i;431:251::-;501:6;554:2;542:9;533:7;529:23;525:32;522:2;;;570:1;567;560:12;522:2;602:9;596:16;621:31;646:5;621:31;:::i;687:388::-;755:6;763;816:2;804:9;795:7;791:23;787:32;784:2;;;832:1;829;822:12;784:2;871:9;858:23;890:31;915:5;890:31;:::i;:::-;940:5;-1:-1:-1;997:2:1;982:18;;969:32;1010:33;969:32;1010:33;:::i;:::-;1062:7;1052:17;;;774:301;;;;;:::o;1080:456::-;1157:6;1165;1173;1226:2;1214:9;1205:7;1201:23;1197:32;1194:2;;;1242:1;1239;1232:12;1194:2;1281:9;1268:23;1300:31;1325:5;1300:31;:::i;:::-;1350:5;-1:-1:-1;1407:2:1;1392:18;;1379:32;1420:33;1379:32;1420:33;:::i;:::-;1184:352;;1472:7;;-1:-1:-1;;;1526:2:1;1511:18;;;;1498:32;;1184:352::o;1541:315::-;1606:6;1614;1667:2;1655:9;1646:7;1642:23;1638:32;1635:2;;;1683:1;1680;1673:12;1635:2;1722:9;1709:23;1741:31;1766:5;1741:31;:::i;:::-;1791:5;-1:-1:-1;1815:35:1;1846:2;1831:18;;1815:35;:::i;:::-;1805:45;;1625:231;;;;;:::o;1861:315::-;1929:6;1937;1990:2;1978:9;1969:7;1965:23;1961:32;1958:2;;;2006:1;2003;1996:12;1958:2;2045:9;2032:23;2064:31;2089:5;2064:31;:::i;:::-;2114:5;2166:2;2151:18;;;;2138:32;;-1:-1:-1;;;1948:228:1:o;2181:615::-;2267:6;2275;2328:2;2316:9;2307:7;2303:23;2299:32;2296:2;;;2344:1;2341;2334:12;2296:2;2384:9;2371:23;2413:18;2454:2;2446:6;2443:14;2440:2;;;2470:1;2467;2460:12;2440:2;2508:6;2497:9;2493:22;2483:32;;2553:7;2546:4;2542:2;2538:13;2534:27;2524:2;;2575:1;2572;2565:12;2524:2;2615;2602:16;2641:2;2633:6;2630:14;2627:2;;;2657:1;2654;2647:12;2627:2;2710:7;2705:2;2695:6;2692:1;2688:14;2684:2;2680:23;2676:32;2673:45;2670:2;;;2731:1;2728;2721:12;2670:2;2762;2754:11;;;;;2784:6;;-1:-1:-1;2286:510:1;;-1:-1:-1;;;;2286:510:1:o;2801:180::-;2857:6;2910:2;2898:9;2889:7;2885:23;2881:32;2878:2;;;2926:1;2923;2916:12;2878:2;2949:26;2965:9;2949:26;:::i;2986:180::-;3045:6;3098:2;3086:9;3077:7;3073:23;3069:32;3066:2;;;3114:1;3111;3104:12;3066:2;-1:-1:-1;3137:23:1;;3056:110;-1:-1:-1;3056:110:1:o;3171:248::-;3236:6;3244;3297:2;3285:9;3276:7;3272:23;3268:32;3265:2;;;3313:1;3310;3303:12;3265:2;3349:9;3336:23;3326:33;;3378:35;3409:2;3398:9;3394:18;3378:35;:::i;3424:248::-;3492:6;3500;3553:2;3541:9;3532:7;3528:23;3524:32;3521:2;;;3569:1;3566;3559:12;3521:2;-1:-1:-1;;3592:23:1;;;3662:2;3647:18;;;3634:32;;-1:-1:-1;3511:161:1:o;3677:306::-;3765:6;3773;3781;3834:2;3822:9;3813:7;3809:23;3805:32;3802:2;;;3850:1;3847;3840:12;3802:2;3879:9;3873:16;3863:26;;3929:2;3918:9;3914:18;3908:25;3898:35;;3973:2;3962:9;3958:18;3952:25;3942:35;;3792:191;;;;;:::o;5513:597::-;5625:4;5654:2;5683;5672:9;5665:21;5715:6;5709:13;5758:6;5753:2;5742:9;5738:18;5731:34;5783:1;5793:140;5807:6;5804:1;5801:13;5793:140;;;5902:14;;;5898:23;;5892:30;5868:17;;;5887:2;5864:26;5857:66;5822:10;;5793:140;;;5951:6;5948:1;5945:13;5942:2;;;6021:1;6016:2;6007:6;5996:9;5992:22;5988:31;5981:42;5942:2;-1:-1:-1;6094:2:1;6073:15;-1:-1:-1;;6069:29:1;6054:45;;;;6101:2;6050:54;;5634:476;-1:-1:-1;;;5634:476:1:o;9578:356::-;9780:2;9762:21;;;9799:18;;;9792:30;9858:34;9853:2;9838:18;;9831:62;9925:2;9910:18;;9752:182::o;12525:980::-;12787:4;12835:3;12824:9;12820:19;12866:6;12855:9;12848:25;12892:2;12930:6;12925:2;12914:9;12910:18;12903:34;12973:3;12968:2;12957:9;12953:18;12946:31;12997:6;13032;13026:13;13063:6;13055;13048:22;13101:3;13090:9;13086:19;13079:26;;13140:2;13132:6;13128:15;13114:29;;13161:1;13171:195;13185:6;13182:1;13179:13;13171:195;;;13250:13;;-1:-1:-1;;;;;13246:39:1;13234:52;;13341:15;;;;13306:12;;;;13282:1;13200:9;13171:195;;;-1:-1:-1;;;;;;;13422:32:1;;;;13417:2;13402:18;;13395:60;-1:-1:-1;;;13486:3:1;13471:19;13464:35;13383:3;12796:709;-1:-1:-1;;;12796:709:1:o;14023:128::-;14063:3;14094:1;14090:6;14087:1;14084:13;14081:2;;;14100:18;;:::i;:::-;-1:-1:-1;14136:9:1;;14071:80::o;14156:217::-;14196:1;14222;14212:2;;14266:10;14261:3;14257:20;14254:1;14247:31;14301:4;14298:1;14291:15;14329:4;14326:1;14319:15;14212:2;-1:-1:-1;14358:9:1;;14202:171::o;14378:168::-;14418:7;14484:1;14480;14476:6;14472:14;14469:1;14466:21;14461:1;14454:9;14447:17;14443:45;14440:2;;;14491:18;;:::i;:::-;-1:-1:-1;14531:9:1;;14430:116::o;14551:125::-;14591:4;14619:1;14616;14613:8;14610:2;;;14624:18;;:::i;:::-;-1:-1:-1;14661:9:1;;14600:76::o;14681:135::-;14720:3;-1:-1:-1;;14741:17:1;;14738:2;;;14761:18;;:::i;:::-;-1:-1:-1;14808:1:1;14797:13;;14728:88::o;14821:127::-;14882:10;14877:3;14873:20;14870:1;14863:31;14913:4;14910:1;14903:15;14937:4;14934:1;14927:15;14953:127;15014:10;15009:3;15005:20;15002:1;14995:31;15045:4;15042:1;15035:15;15069:4;15066:1;15059:15;15085:127;15146:10;15141:3;15137:20;15134:1;15127:31;15177:4;15174:1;15167:15;15201:4;15198:1;15191:15;15349:131;-1:-1:-1;;;;;15424:31:1;;15414:42;;15404:2;;15470:1;15467;15460:12;15404:2;15394:86;:::o
Swarm Source
ipfs://51c97a4422e3ef20f45238f449aa9a9882e2bd9ddda8ae893915d4539c136581
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.