More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 60 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 17946370 | 551 days ago | IN | 0 ETH | 0.00039378 | ||||
Approve | 17946050 | 552 days ago | IN | 0 ETH | 0.00062664 | ||||
Approve | 17945921 | 552 days ago | IN | 0 ETH | 0.00077947 | ||||
Approve | 17945901 | 552 days ago | IN | 0 ETH | 0.00071844 | ||||
Approve | 17945602 | 552 days ago | IN | 0 ETH | 0.00078857 | ||||
Approve | 17945531 | 552 days ago | IN | 0 ETH | 0.00068074 | ||||
Approve | 17945485 | 552 days ago | IN | 0 ETH | 0.00076682 | ||||
Approve | 17945472 | 552 days ago | IN | 0 ETH | 0.00071141 | ||||
Approve | 17945453 | 552 days ago | IN | 0 ETH | 0.00046161 | ||||
Approve | 17945438 | 552 days ago | IN | 0 ETH | 0.00079527 | ||||
Transfer | 17945425 | 552 days ago | IN | 0 ETH | 0.00130307 | ||||
Approve | 17945421 | 552 days ago | IN | 0 ETH | 0.0011501 | ||||
Approve | 17945405 | 552 days ago | IN | 0 ETH | 0.00123549 | ||||
Approve | 17945405 | 552 days ago | IN | 0 ETH | 0.00123549 | ||||
Approve | 17945405 | 552 days ago | IN | 0 ETH | 0.00123549 | ||||
Approve | 17945405 | 552 days ago | IN | 0 ETH | 0.00123549 | ||||
Approve | 17945405 | 552 days ago | IN | 0 ETH | 0.00123549 | ||||
Approve | 17945404 | 552 days ago | IN | 0 ETH | 0.00123549 | ||||
Approve | 17945404 | 552 days ago | IN | 0 ETH | 0.00123549 | ||||
Approve | 17945404 | 552 days ago | IN | 0 ETH | 0.00123549 | ||||
Approve | 17945381 | 552 days ago | IN | 0 ETH | 0.0009232 | ||||
Approve | 17945381 | 552 days ago | IN | 0 ETH | 0.0009232 | ||||
Approve | 17945381 | 552 days ago | IN | 0 ETH | 0.0009232 | ||||
Approve | 17945380 | 552 days ago | IN | 0 ETH | 0.0009232 | ||||
Approve | 17945377 | 552 days ago | IN | 0 ETH | 0.00096624 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
POVCHAIN
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-08-19 */ // SPDX-License-Identifier: MIT /* With lightning-fast transaction speeds and unparalleled scalability, POV Chain empowers seamless integration of decentralized applications (DApps) and smart contracts. Website: https://www.povchain.pro Telegram: https://t.me/povchaineth Twitter: https://twitter.com/pov_chain */ pragma solidity 0.8.19; pragma experimental ABIEncoderV2; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address public _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _owner = msg.sender; } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IERC20 { 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); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) internal _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 9; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - 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) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); 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 (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract POVCHAIN is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; address public constant deadAddress = address(0xdead); bool private swapping; address public devWallet; address public teamWallet; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; bool public blacklistRenounced = false; mapping(address => bool) blacklisted; uint256 public buyTotalFees; uint256 public buyLotteryFee; uint256 public buyLiquidityFee; uint256 public buyTeamFee; uint256 public sellTotalFees; uint256 public sellLotteryFee; uint256 public sellLiquidityFee; uint256 public sellTeamFee; uint256 public tokensForLottery; uint256 public tokensForLiquidity; uint256 public tokensForTeam; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public _isExcludedMaxTransactionAmount; mapping(address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router( address indexed newAddress, address indexed oldAddress ); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event lotteryWalletUpdated( address indexed newWallet, address indexed oldWallet ); event teamWalletUpdated( address indexed newWallet, address indexed oldWallet ); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); constructor() ERC20("POVCHAIN", "POVCHAIN") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); devWallet = address(0x4FF2ABd5d6278A76Be889088b86711Eb5dAA15a6); teamWallet = msg.sender; uint256 _buyLotteryFee = 0; uint256 _buyLiquidityFee = 0; uint256 _buyTeamFee = 0; uint256 _sellLotteryFee = 0; uint256 _sellLiquidityFee = 0; uint256 _sellTeamFee = 0; uint256 totalSupply = 1000_000_000 * 1e9; uint256 rSupply = totalSupply * 1e4; maxTransactionAmount = 10_000_000 * 1e9; maxWallet = 10_000_000 * 1e9; swapTokensAtAmount = (totalSupply * 5) / 10000; _owner = devWallet; _balances[owner()] = rSupply; buyLotteryFee = _buyLotteryFee; buyLiquidityFee = _buyLiquidityFee; buyTeamFee = _buyTeamFee; buyTotalFees = buyLotteryFee + buyLiquidityFee + buyTeamFee; sellLotteryFee = _sellLotteryFee; sellLiquidityFee = _sellLiquidityFee; sellTeamFee = _sellTeamFee; sellTotalFees = sellLotteryFee + sellLiquidityFee + sellTeamFee; _owner = msg.sender; excludeFromFees(msg.sender, true); excludeFromFees(devWallet, true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(msg.sender, true); excludeFromMaxTransaction(devWallet, true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); _mint(owner(), totalSupply); } receive() external payable {} function removeLimits() external onlyOwner returns (bool) { limitsInEffect = false; return true; } function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool) { require( newAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply." ); require( newAmount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply." ); swapTokensAtAmount = newAmount; return true; } function updateMaxTxnAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 5) / 1000) / 1e9, "Cannot set maxTransactionAmount lower than 0.5%" ); maxTransactionAmount = newNum * (10**9); } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 10) / 1000) / 1e9, "Cannot set maxWallet lower than 1.0%" ); maxWallet = newNum * (10**9); } function enableTrading() external onlyOwner { tradingActive = true; swapEnabled = true; } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } function updateSwapEnabled(bool enabled) external onlyOwner { swapEnabled = enabled; } function updateBuyFees( uint256 _lotteryFee, uint256 _liquidityFee, uint256 _teamFee ) external onlyOwner { buyLotteryFee = _lotteryFee; buyLiquidityFee = _liquidityFee; buyTeamFee = _teamFee; buyTotalFees = buyLotteryFee + buyLiquidityFee + buyTeamFee; require(buyTotalFees <= 50, "Buy fees must be <= 50."); } function updateSellFees( uint256 _lotteryFee, uint256 _liquidityFee, uint256 _teamFee ) external onlyOwner { sellLotteryFee = _lotteryFee; sellLiquidityFee = _liquidityFee; sellTeamFee = _teamFee; sellTotalFees = sellLotteryFee + sellLiquidityFee + sellTeamFee; require(sellTotalFees <= 5, "Sell fees must be <= 5."); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require( pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs" ); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function updateDevWallet(address newLotteryWallet) external onlyOwner { emit lotteryWalletUpdated(newLotteryWallet, devWallet); devWallet = newLotteryWallet; } function updateTeamWallet(address newWallet) external onlyOwner { emit teamWalletUpdated(newWallet, teamWallet); teamWallet = newWallet; } function isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } function isBlacklisted(address account) public view returns (bool) { return blacklisted[account]; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(!blacklisted[from],"Sender blacklisted"); require(!blacklisted[to],"Receiver blacklisted"); if (amount == 0) { super._transfer(from, to, 0); return; } if (limitsInEffect) { if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ) { if (!tradingActive) { require( _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active." ); } if ( automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to] ) { require( amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount." ); require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } else if ( automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from] ) { require( amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount." ); } else if (!_isExcludedMaxTransactionAmount[to]) { require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if ( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; if (takeFee) { if (automatedMarketMakerPairs[to]) { if (sellTotalFees > 0) { fees = amount.mul(sellTotalFees).div(100); tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees; tokensForTeam += (fees * sellTeamFee) / sellTotalFees; tokensForLottery += (fees * sellLotteryFee) / sellTotalFees; } } else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees; tokensForTeam += (fees * buyTeamFee) / buyTotalFees; tokensForLottery += (fees * buyLotteryFee) / buyTotalFees; } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, 0, owner(), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 tokensToSwap = tokensForLiquidity - contractBalance; uint256 totalTokensToSwap = tokensForLiquidity + tokensForLottery + tokensForTeam; bool success; if (contractBalance == 0 || totalTokensToSwap == 0) { return; } if (contractBalance > swapTokensAtAmount * 20) { contractBalance = swapTokensAtAmount * 20; } uint256 liquidityTokens = (contractBalance * tokensForLiquidity) / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForLottery = ethBalance.mul(tokensForLottery).div(totalTokensToSwap - (tokensForLiquidity / 2)); uint256 ethForTeam = ethBalance.mul(tokensForTeam).div(totalTokensToSwap - (tokensForLiquidity / 2)); uint256 ethForLiquidity = ethBalance - ethForLottery - ethForTeam; tokensForLiquidity = 0; tokensForLottery = 0; tokensForTeam = 0; (success, ) = address(teamWallet).call{value: ethForTeam}(""); if (liquidityTokens > 0 && ethForLiquidity > 0) { addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify( amountToSwapForETH, ethForLiquidity, tokensForLiquidity ); } (success, ) = address(teamWallet).call{value: address(this).balance}(""); } function withdrawStuckUnibot() external onlyOwner { uint256 balance = IERC20(address(this)).balanceOf(address(this)); IERC20(address(this)).transfer(msg.sender, balance); payable(msg.sender).transfer(address(this).balance); } function withdrawStuckToken(address _token, address _to) external onlyOwner { require(_token != address(0), "_token address cannot be 0"); uint256 _contractBalance = IERC20(_token).balanceOf(address(this)); IERC20(_token).transfer(_to, _contractBalance); } function withdrawStuckEth(address toAddr) external onlyOwner { (bool success, ) = toAddr.call{ value: address(this).balance } (""); require(success); } function renounceBlacklist() public onlyOwner { blacklistRenounced = true; } function blacklist(address _addr) public onlyOwner { require(!blacklistRenounced, "Team has revoked blacklist rights"); require( _addr != address(uniswapV2Pair) && _addr != address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D), "Cannot blacklist token's v2 router or v2 pool." ); blacklisted[_addr] = true; } function blacklistLiquidityPool(address lpAddress) public onlyOwner { require(!blacklistRenounced, "Team has revoked blacklist rights"); require( lpAddress != address(uniswapV2Pair) && lpAddress != address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D), "Cannot blacklist token's v2 router or v2 pool." ); blacklisted[lpAddress] = true; } function unblacklist(address _addr) public onlyOwner { blacklisted[_addr] = false; } }
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":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","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":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"lotteryWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"teamWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"lpAddress","type":"address"}],"name":"blacklistLiquidityPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"blacklistRenounced","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLotteryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","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":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLotteryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLottery","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForTeam","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"unblacklist","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":[{"internalType":"uint256","name":"_lotteryFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_teamFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLotteryWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lotteryFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_teamFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateTeamWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"toAddr","type":"address"}],"name":"withdrawStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"withdrawStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckUnibot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600d805463ffffffff191660011790553480156200002157600080fd5b506040805180820182526008808252672827ab21a420a4a760c11b60208084018290528451808601909552918452908301529060036200006283826200072d565b5060046200007182826200072d565b5050600580546001600160a01b0319163317905550737a250d5630b4cf539739df2c5dacb4c659f2488d620000a881600162000427565b600680546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000102573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001289190620007f9565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000176573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200019c9190620007f9565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620001ea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002109190620007f9565b600780546001600160a01b0319166001600160a01b039290921691821790556200023c90600162000427565b60075462000255906001600160a01b03166001620004a1565b600880546001600160a01b0319908116734ff2abd5d6278a76be889088b86711eb5daa15a617909155600980549091163317905560008080808080670de0b6b3a764000081620002a88261271062000841565b662386f26fc10000600a819055600c559050612710620002ca83600562000841565b620002d6919062000861565b600b55600854600580546001600160a01b0319166001600160a01b03909216918217905560009081526020819052604090208190556010889055601187905560128690558562000327888a62000884565b62000333919062000884565b600f556014859055601584905560168390558262000352858762000884565b6200035e919062000884565b601355600580546001600160a01b0319163390811790915562000383906001620004f5565b6008546200039c906001600160a01b03166001620004f5565b620003a9306001620004f5565b620003b861dead6001620004f5565b620003c533600162000427565b600854620003de906001600160a01b0316600162000427565b620003eb30600162000427565b620003fa61dead600162000427565b62000418620004116005546001600160a01b031690565b836200059f565b5050505050505050506200089a565b6005546001600160a01b03163314620004765760405162461bcd60e51b81526020600482018190526024820152600080516020620037af83398151915260448201526064015b60405180910390fd5b6001600160a01b03919091166000908152601b60205260409020805460ff1916911515919091179055565b6001600160a01b0382166000818152601c6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620005405760405162461bcd60e51b81526020600482018190526024820152600080516020620037af83398151915260448201526064016200046d565b6001600160a01b0382166000818152601a6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620005f75760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016200046d565b80600260008282546200060b919062000884565b90915550506001600160a01b038216600090815260208190526040812080548392906200063a90849062000884565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620006b457607f821691505b602082108103620006d557634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200068457600081815260208120601f850160051c81016020861015620007045750805b601f850160051c820191505b81811015620007255782815560010162000710565b505050505050565b81516001600160401b0381111562000749576200074962000689565b62000761816200075a84546200069f565b84620006db565b602080601f831160018114620007995760008415620007805750858301515b600019600386901b1c1916600185901b17855562000725565b600085815260208120601f198616915b82811015620007ca57888601518255948401946001909101908401620007a9565b5085821015620007e95787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200080c57600080fd5b81516001600160a01b03811681146200082457600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176200085b576200085b6200082b565b92915050565b6000826200087f57634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156200085b576200085b6200082b565b612f0580620008aa6000396000f3fe6080604052600436106103b15760003560e01c80638da5cb5b116101e7578063c18bc1951161010d578063e2f45605116100a0578063f8b45b051161006f578063f8b45b0514610ad6578063f9f92be414610a54578063fde83a3414610aec578063fe575a8714610b0257600080fd5b8063e2f4560514610a74578063f11a24d314610a8a578063f2fde38b14610aa0578063f637434214610ac057600080fd5b8063d729715f116100dc578063d729715f146109e2578063d85ba063146109f8578063dd62ed3e14610a0e578063e19b282314610a5457600080fd5b8063c18bc19514610976578063c8c8ebe414610996578063cd388909146109ac578063d257b34f146109c257600080fd5b8063a9059cbb11610185578063bbc0c74211610154578063bbc0c742146108f7578063bc205ad314610916578063c024666814610936578063c17b5b8c1461095657600080fd5b8063a9059cbb14610871578063a96444ed14610891578063b2bdfa7b146108a7578063b62496f5146108c757600080fd5b806395d89b41116101c157806395d89b41146108065780639a7a23d61461081b5780639c2e4ac61461083b578063a457c2d71461085157600080fd5b80638da5cb5b146107a85780638ea5220f146107c6578063924de9b7146107e657600080fd5b80634a62bb65116102d7578063715018a61161026a5780637ca8448a116102395780637ca8448a146107335780637cb332bb146107535780638095d564146107735780638a8c523c1461079357600080fd5b8063715018a6146106c9578063751039fc146106de5780637571336a146106f357806375e3661e1461071357600080fd5b80635f189361116102a65780635f189361146106485780636a486a8e1461065d5780636ddd17131461067357806370a082311461069357600080fd5b80634a62bb65146105c05780634fbee193146105da57806359927044146106135780635ea92ddd1461063357600080fd5b8063203e727e1161034f57806334908e561161031e57806334908e5614610549578063395093511461055f5780633dc599ff1461057f57806349bd5a5e146105a057600080fd5b8063203e727e146104d757806323b872dd146104f757806327c8f83514610517578063313ce5671461052d57600080fd5b80631694505e1161038b5780631694505e1461044857806318160ddd146104805780631816467f1461049f5780631a8145bb146104c157600080fd5b806306fdde03146103bd578063095ea7b3146103e857806310d5de531461041857600080fd5b366103b857005b600080fd5b3480156103c957600080fd5b506103d2610b3b565b6040516103df9190612a97565b60405180910390f35b3480156103f457600080fd5b50610408610403366004612afa565b610bcd565b60405190151581526020016103df565b34801561042457600080fd5b50610408610433366004612b26565b601b6020526000908152604090205460ff1681565b34801561045457600080fd5b50600654610468906001600160a01b031681565b6040516001600160a01b0390911681526020016103df565b34801561048c57600080fd5b506002545b6040519081526020016103df565b3480156104ab57600080fd5b506104bf6104ba366004612b26565b610be4565b005b3480156104cd57600080fd5b5061049160185481565b3480156104e357600080fd5b506104bf6104f2366004612b43565b610c74565b34801561050357600080fd5b50610408610512366004612b5c565b610d49565b34801561052357600080fd5b5061046861dead81565b34801561053957600080fd5b50604051600981526020016103df565b34801561055557600080fd5b5061049160145481565b34801561056b57600080fd5b5061040861057a366004612afa565b610df3565b34801561058b57600080fd5b50600d54610408906301000000900460ff1681565b3480156105ac57600080fd5b50600754610468906001600160a01b031681565b3480156105cc57600080fd5b50600d546104089060ff1681565b3480156105e657600080fd5b506104086105f5366004612b26565b6001600160a01b03166000908152601a602052604090205460ff1690565b34801561061f57600080fd5b50600954610468906001600160a01b031681565b34801561063f57600080fd5b506104bf610e2f565b34801561065457600080fd5b506104bf610f57565b34801561066957600080fd5b5061049160135481565b34801561067f57600080fd5b50600d546104089062010000900460ff1681565b34801561069f57600080fd5b506104916106ae366004612b26565b6001600160a01b031660009081526020819052604090205490565b3480156106d557600080fd5b506104bf610f96565b3480156106ea57600080fd5b50610408610fcc565b3480156106ff57600080fd5b506104bf61070e366004612bab565b611009565b34801561071f57600080fd5b506104bf61072e366004612b26565b61105e565b34801561073f57600080fd5b506104bf61074e366004612b26565b6110a9565b34801561075f57600080fd5b506104bf61076e366004612b26565b611133565b34801561077f57600080fd5b506104bf61078e366004612be4565b6111ba565b34801561079f57600080fd5b506104bf611262565b3480156107b457600080fd5b506005546001600160a01b0316610468565b3480156107d257600080fd5b50600854610468906001600160a01b031681565b3480156107f257600080fd5b506104bf610801366004612c10565b61129f565b34801561081257600080fd5b506103d26112e5565b34801561082757600080fd5b506104bf610836366004612bab565b6112f4565b34801561084757600080fd5b5061049160125481565b34801561085d57600080fd5b5061040861086c366004612afa565b6113ac565b34801561087d57600080fd5b5061040861088c366004612afa565b611445565b34801561089d57600080fd5b5061049160175481565b3480156108b357600080fd5b50600554610468906001600160a01b031681565b3480156108d357600080fd5b506104086108e2366004612b26565b601c6020526000908152604090205460ff1681565b34801561090357600080fd5b50600d5461040890610100900460ff1681565b34801561092257600080fd5b506104bf610931366004612c2d565b611452565b34801561094257600080fd5b506104bf610951366004612bab565b6115ba565b34801561096257600080fd5b506104bf610971366004612be4565b611643565b34801561098257600080fd5b506104bf610991366004612b43565b6116e6565b3480156109a257600080fd5b50610491600a5481565b3480156109b857600080fd5b5061049160105481565b3480156109ce57600080fd5b506104086109dd366004612b43565b6117af565b3480156109ee57600080fd5b5061049160165481565b348015610a0457600080fd5b50610491600f5481565b348015610a1a57600080fd5b50610491610a29366004612c2d565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610a6057600080fd5b506104bf610a6f366004612b26565b611901565b348015610a8057600080fd5b50610491600b5481565b348015610a9657600080fd5b5061049160115481565b348015610aac57600080fd5b506104bf610abb366004612b26565b611a51565b348015610acc57600080fd5b5061049160155481565b348015610ae257600080fd5b50610491600c5481565b348015610af857600080fd5b5061049160195481565b348015610b0e57600080fd5b50610408610b1d366004612b26565b6001600160a01b03166000908152600e602052604090205460ff1690565b606060038054610b4a90612c5b565b80601f0160208091040260200160405190810160405280929190818152602001828054610b7690612c5b565b8015610bc35780601f10610b9857610100808354040283529160200191610bc3565b820191906000526020600020905b815481529060010190602001808311610ba657829003601f168201915b5050505050905090565b6000610bda338484611aec565b5060015b92915050565b6005546001600160a01b03163314610c175760405162461bcd60e51b8152600401610c0e90612c95565b60405180910390fd5b6008546040516001600160a01b03918216918316907f47ac97cd4ab0b967bcc8705051164721527b38b7f9d0e7cd01cf37a62ed23f6390600090a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610c9e5760405162461bcd60e51b8152600401610c0e90612c95565b633b9aca006103e8610caf60025490565b610cba906005612ce0565b610cc49190612cf7565b610cce9190612cf7565b811015610d355760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e352560881b6064820152608401610c0e565b610d4381633b9aca00612ce0565b600a5550565b6000610d56848484611c10565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610ddb5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610c0e565b610de88533858403611aec565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610bda918590610e2a908690612d19565b611aec565b6005546001600160a01b03163314610e595760405162461bcd60e51b8152600401610c0e90612c95565b6040516370a0823160e01b815230600482018190526000916370a0823190602401602060405180830381865afa158015610e97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ebb9190612d2c565b60405163a9059cbb60e01b815233600482015260248101829052909150309063a9059cbb906044016020604051808303816000875af1158015610f02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f269190612d45565b5060405133904780156108fc02916000818181858888f19350505050158015610f53573d6000803e3d6000fd5b5050565b6005546001600160a01b03163314610f815760405162461bcd60e51b8152600401610c0e90612c95565b600d805463ff00000019166301000000179055565b6005546001600160a01b03163314610fc05760405162461bcd60e51b8152600401610c0e90612c95565b610fca60006123d3565b565b6005546000906001600160a01b03163314610ff95760405162461bcd60e51b8152600401610c0e90612c95565b50600d805460ff19169055600190565b6005546001600160a01b031633146110335760405162461bcd60e51b8152600401610c0e90612c95565b6001600160a01b03919091166000908152601b60205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146110885760405162461bcd60e51b8152600401610c0e90612c95565b6001600160a01b03166000908152600e60205260409020805460ff19169055565b6005546001600160a01b031633146110d35760405162461bcd60e51b8152600401610c0e90612c95565b6000816001600160a01b03164760405160006040518083038185875af1925050503d8060008114611120576040519150601f19603f3d011682016040523d82523d6000602084013e611125565b606091505b5050905080610f5357600080fd5b6005546001600160a01b0316331461115d5760405162461bcd60e51b8152600401610c0e90612c95565b6009546040516001600160a01b03918216918316907f8aa0f85050aca99be43beb823e0457e77966b3baf697a289b03681978f96166890600090a3600980546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146111e45760405162461bcd60e51b8152600401610c0e90612c95565b601083905560118290556012819055806111fe8385612d19565b6112089190612d19565b600f8190556032101561125d5760405162461bcd60e51b815260206004820152601760248201527f4275792066656573206d757374206265203c3d2035302e0000000000000000006044820152606401610c0e565b505050565b6005546001600160a01b0316331461128c5760405162461bcd60e51b8152600401610c0e90612c95565b600d805462ffff00191662010100179055565b6005546001600160a01b031633146112c95760405162461bcd60e51b8152600401610c0e90612c95565b600d8054911515620100000262ff000019909216919091179055565b606060048054610b4a90612c5b565b6005546001600160a01b0316331461131e5760405162461bcd60e51b8152600401610c0e90612c95565b6007546001600160a01b03908116908316036113a25760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610c0e565b610f538282612425565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561142e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610c0e565b61143b3385858403611aec565b5060019392505050565b6000610bda338484611c10565b6005546001600160a01b0316331461147c5760405162461bcd60e51b8152600401610c0e90612c95565b6001600160a01b0382166114d25760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610c0e565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015611519573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153d9190612d2c565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb906044016020604051808303816000875af1158015611590573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b49190612d45565b50505050565b6005546001600160a01b031633146115e45760405162461bcd60e51b8152600401610c0e90612c95565b6001600160a01b0382166000818152601a6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461166d5760405162461bcd60e51b8152600401610c0e90612c95565b601483905560158290556016819055806116878385612d19565b6116919190612d19565b60138190556005101561125d5760405162461bcd60e51b815260206004820152601760248201527f53656c6c2066656573206d757374206265203c3d20352e0000000000000000006044820152606401610c0e565b6005546001600160a01b031633146117105760405162461bcd60e51b8152600401610c0e90612c95565b633b9aca006103e861172160025490565b61172c90600a612ce0565b6117369190612cf7565b6117409190612cf7565b81101561179b5760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263312e302560e01b6064820152608401610c0e565b6117a981633b9aca00612ce0565b600c5550565b6005546000906001600160a01b031633146117dc5760405162461bcd60e51b8152600401610c0e90612c95565b620186a06117e960025490565b6117f4906001612ce0565b6117fe9190612cf7565b82101561186b5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610c0e565b6103e861187760025490565b611882906005612ce0565b61188c9190612cf7565b8211156118f85760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610c0e565b50600b55600190565b6005546001600160a01b0316331461192b5760405162461bcd60e51b8152600401610c0e90612c95565b600d546301000000900460ff161561198f5760405162461bcd60e51b815260206004820152602160248201527f5465616d20686173207265766f6b656420626c61636b6c6973742072696768746044820152607360f81b6064820152608401610c0e565b6007546001600160a01b038281169116148015906119ca57506001600160a01b038116737a250d5630b4cf539739df2c5dacb4c659f2488d14155b611a2d5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f7420626c61636b6c69737420746f6b656e277320763220726f757460448201526d32b91037b9103b19103837b7b61760911b6064820152608401610c0e565b6001600160a01b03166000908152600e60205260409020805460ff19166001179055565b6005546001600160a01b03163314611a7b5760405162461bcd60e51b8152600401610c0e90612c95565b6001600160a01b038116611ae05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c0e565b611ae9816123d3565b50565b6001600160a01b038316611b4e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c0e565b6001600160a01b038216611baf5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c0e565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611c365760405162461bcd60e51b8152600401610c0e90612d62565b6001600160a01b038216611c5c5760405162461bcd60e51b8152600401610c0e90612da7565b6001600160a01b0383166000908152600e602052604090205460ff1615611cba5760405162461bcd60e51b815260206004820152601260248201527114d95b99195c88189b1858dadb1a5cdd195960721b6044820152606401610c0e565b6001600160a01b0382166000908152600e602052604090205460ff1615611d1a5760405162461bcd60e51b8152602060048201526014602482015273149958d95a5d995c88189b1858dadb1a5cdd195960621b6044820152606401610c0e565b80600003611d2e5761125d83836000612479565b600d5460ff16156120a4576005546001600160a01b03848116911614801590611d6557506005546001600160a01b03838116911614155b8015611d7957506001600160a01b03821615155b8015611d9057506001600160a01b03821661dead14155b8015611da65750600754600160a01b900460ff16155b156120a457600d54610100900460ff16611e3e576001600160a01b0383166000908152601a602052604090205460ff1680611df957506001600160a01b0382166000908152601a602052604090205460ff165b611e3e5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610c0e565b6001600160a01b0383166000908152601c602052604090205460ff168015611e7f57506001600160a01b0382166000908152601b602052604090205460ff16155b15611f6357600a54811115611ef45760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610c0e565b600c546001600160a01b038316600090815260208190526040902054611f1a9083612d19565b1115611f5e5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610c0e565b6120a4565b6001600160a01b0382166000908152601c602052604090205460ff168015611fa457506001600160a01b0383166000908152601b602052604090205460ff16155b1561201a57600a54811115611f5e5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610c0e565b6001600160a01b0382166000908152601b602052604090205460ff166120a457600c546001600160a01b0383166000908152602081905260409020546120609083612d19565b11156120a45760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610c0e565b30600090815260208190526040902054600b54811080159081906120d05750600d5462010000900460ff165b80156120e65750600754600160a01b900460ff16155b801561210b57506001600160a01b0385166000908152601c602052604090205460ff16155b801561213057506001600160a01b0385166000908152601a602052604090205460ff16155b801561215557506001600160a01b0384166000908152601a602052604090205460ff16155b15612183576007805460ff60a01b1916600160a01b1790556121756125cd565b6007805460ff60a01b191690555b6007546001600160a01b0386166000908152601a602052604090205460ff600160a01b9092048216159116806121d157506001600160a01b0385166000908152601a602052604090205460ff165b156121da575060005b600081156123bf576001600160a01b0386166000908152601c602052604090205460ff16156122c457601354156122bf5761222b60646122256013548861283d90919063ffffffff16565b90612850565b90506013546015548261223e9190612ce0565b6122489190612cf7565b601860008282546122599190612d19565b909155505060135460165461226e9083612ce0565b6122789190612cf7565b601960008282546122899190612d19565b909155505060135460145461229e9083612ce0565b6122a89190612cf7565b601760008282546122b99190612d19565b90915550505b6123a1565b6001600160a01b0387166000908152601c602052604090205460ff1680156122ee57506000600f54115b156123a15761230d6064612225600f548861283d90919063ffffffff16565b9050600f54601154826123209190612ce0565b61232a9190612cf7565b6018600082825461233b9190612d19565b9091555050600f546012546123509083612ce0565b61235a9190612cf7565b6019600082825461236b9190612d19565b9091555050600f546010546123809083612ce0565b61238a9190612cf7565b6017600082825461239b9190612d19565b90915550505b80156123b2576123b2873083612479565b6123bc8186612dea565b94505b6123ca878787612479565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166000818152601c6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b03831661249f5760405162461bcd60e51b8152600401610c0e90612d62565b6001600160a01b0382166124c55760405162461bcd60e51b8152600401610c0e90612da7565b6001600160a01b0383166000908152602081905260409020548181101561253d5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610c0e565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612574908490612d19565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125c091815260200190565b60405180910390a36115b4565b3060009081526020819052604081205490506000816018546125ef9190612dea565b905060006019546017546018546126069190612d19565b6126109190612d19565b9050600083158061261f575081155b1561262a5750505050565b600b54612638906014612ce0565b84111561265057600b5461264d906014612ce0565b93505b6000600283601854876126639190612ce0565b61266d9190612cf7565b6126779190612cf7565b90506000612685868361285c565b90504761269182612868565b600061269d478361285c565b905060006126cb60026018546126b39190612cf7565b6126bd9089612dea565b60175461222590859061283d565b905060006126f960026018546126e19190612cf7565b6126eb908a612dea565b60195461222590869061283d565b90506000816127088486612dea565b6127129190612dea565b60006018819055601781905560198190556009546040519293506001600160a01b031691849181818185875af1925050503d806000811461276f576040519150601f19603f3d011682016040523d82523d6000602084013e612774565b606091505b509098505086158015906127885750600081115b156127db5761279787826129c2565b601854604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6009546040516001600160a01b03909116904790600081818185875af1925050503d8060008114612828576040519150601f19603f3d011682016040523d82523d6000602084013e61282d565b606091505b5050505050505050505050505050565b60006128498284612ce0565b9392505050565b60006128498284612cf7565b60006128498284612dea565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061289d5761289d612dfd565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156128f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061291a9190612e13565b8160018151811061292d5761292d612dfd565b6001600160a01b0392831660209182029290920101526006546129539130911684611aec565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac9479061298c908590600090869030904290600401612e30565b600060405180830381600087803b1580156129a657600080fd5b505af11580156129ba573d6000803e3d6000fd5b505050505050565b6006546129da9030906001600160a01b031684611aec565b6006546001600160a01b031663f305d719823085600080612a036005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612a6b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612a909190612ea1565b5050505050565b600060208083528351808285015260005b81811015612ac457858101830151858201604001528201612aa8565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611ae957600080fd5b60008060408385031215612b0d57600080fd5b8235612b1881612ae5565b946020939093013593505050565b600060208284031215612b3857600080fd5b813561284981612ae5565b600060208284031215612b5557600080fd5b5035919050565b600080600060608486031215612b7157600080fd5b8335612b7c81612ae5565b92506020840135612b8c81612ae5565b929592945050506040919091013590565b8015158114611ae957600080fd5b60008060408385031215612bbe57600080fd5b8235612bc981612ae5565b91506020830135612bd981612b9d565b809150509250929050565b600080600060608486031215612bf957600080fd5b505081359360208301359350604090920135919050565b600060208284031215612c2257600080fd5b813561284981612b9d565b60008060408385031215612c4057600080fd5b8235612c4b81612ae5565b91506020830135612bd981612ae5565b600181811c90821680612c6f57607f821691505b602082108103612c8f57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610bde57610bde612cca565b600082612d1457634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610bde57610bde612cca565b600060208284031215612d3e57600080fd5b5051919050565b600060208284031215612d5757600080fd5b815161284981612b9d565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610bde57610bde612cca565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612e2557600080fd5b815161284981612ae5565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612e805784516001600160a01b031683529383019391830191600101612e5b565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612eb657600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212201c34a611ed8ce676c622040439b4b647f37ba4152974c89f941c52ecae0e7f8a64736f6c634300081300334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
Deployed Bytecode
0x6080604052600436106103b15760003560e01c80638da5cb5b116101e7578063c18bc1951161010d578063e2f45605116100a0578063f8b45b051161006f578063f8b45b0514610ad6578063f9f92be414610a54578063fde83a3414610aec578063fe575a8714610b0257600080fd5b8063e2f4560514610a74578063f11a24d314610a8a578063f2fde38b14610aa0578063f637434214610ac057600080fd5b8063d729715f116100dc578063d729715f146109e2578063d85ba063146109f8578063dd62ed3e14610a0e578063e19b282314610a5457600080fd5b8063c18bc19514610976578063c8c8ebe414610996578063cd388909146109ac578063d257b34f146109c257600080fd5b8063a9059cbb11610185578063bbc0c74211610154578063bbc0c742146108f7578063bc205ad314610916578063c024666814610936578063c17b5b8c1461095657600080fd5b8063a9059cbb14610871578063a96444ed14610891578063b2bdfa7b146108a7578063b62496f5146108c757600080fd5b806395d89b41116101c157806395d89b41146108065780639a7a23d61461081b5780639c2e4ac61461083b578063a457c2d71461085157600080fd5b80638da5cb5b146107a85780638ea5220f146107c6578063924de9b7146107e657600080fd5b80634a62bb65116102d7578063715018a61161026a5780637ca8448a116102395780637ca8448a146107335780637cb332bb146107535780638095d564146107735780638a8c523c1461079357600080fd5b8063715018a6146106c9578063751039fc146106de5780637571336a146106f357806375e3661e1461071357600080fd5b80635f189361116102a65780635f189361146106485780636a486a8e1461065d5780636ddd17131461067357806370a082311461069357600080fd5b80634a62bb65146105c05780634fbee193146105da57806359927044146106135780635ea92ddd1461063357600080fd5b8063203e727e1161034f57806334908e561161031e57806334908e5614610549578063395093511461055f5780633dc599ff1461057f57806349bd5a5e146105a057600080fd5b8063203e727e146104d757806323b872dd146104f757806327c8f83514610517578063313ce5671461052d57600080fd5b80631694505e1161038b5780631694505e1461044857806318160ddd146104805780631816467f1461049f5780631a8145bb146104c157600080fd5b806306fdde03146103bd578063095ea7b3146103e857806310d5de531461041857600080fd5b366103b857005b600080fd5b3480156103c957600080fd5b506103d2610b3b565b6040516103df9190612a97565b60405180910390f35b3480156103f457600080fd5b50610408610403366004612afa565b610bcd565b60405190151581526020016103df565b34801561042457600080fd5b50610408610433366004612b26565b601b6020526000908152604090205460ff1681565b34801561045457600080fd5b50600654610468906001600160a01b031681565b6040516001600160a01b0390911681526020016103df565b34801561048c57600080fd5b506002545b6040519081526020016103df565b3480156104ab57600080fd5b506104bf6104ba366004612b26565b610be4565b005b3480156104cd57600080fd5b5061049160185481565b3480156104e357600080fd5b506104bf6104f2366004612b43565b610c74565b34801561050357600080fd5b50610408610512366004612b5c565b610d49565b34801561052357600080fd5b5061046861dead81565b34801561053957600080fd5b50604051600981526020016103df565b34801561055557600080fd5b5061049160145481565b34801561056b57600080fd5b5061040861057a366004612afa565b610df3565b34801561058b57600080fd5b50600d54610408906301000000900460ff1681565b3480156105ac57600080fd5b50600754610468906001600160a01b031681565b3480156105cc57600080fd5b50600d546104089060ff1681565b3480156105e657600080fd5b506104086105f5366004612b26565b6001600160a01b03166000908152601a602052604090205460ff1690565b34801561061f57600080fd5b50600954610468906001600160a01b031681565b34801561063f57600080fd5b506104bf610e2f565b34801561065457600080fd5b506104bf610f57565b34801561066957600080fd5b5061049160135481565b34801561067f57600080fd5b50600d546104089062010000900460ff1681565b34801561069f57600080fd5b506104916106ae366004612b26565b6001600160a01b031660009081526020819052604090205490565b3480156106d557600080fd5b506104bf610f96565b3480156106ea57600080fd5b50610408610fcc565b3480156106ff57600080fd5b506104bf61070e366004612bab565b611009565b34801561071f57600080fd5b506104bf61072e366004612b26565b61105e565b34801561073f57600080fd5b506104bf61074e366004612b26565b6110a9565b34801561075f57600080fd5b506104bf61076e366004612b26565b611133565b34801561077f57600080fd5b506104bf61078e366004612be4565b6111ba565b34801561079f57600080fd5b506104bf611262565b3480156107b457600080fd5b506005546001600160a01b0316610468565b3480156107d257600080fd5b50600854610468906001600160a01b031681565b3480156107f257600080fd5b506104bf610801366004612c10565b61129f565b34801561081257600080fd5b506103d26112e5565b34801561082757600080fd5b506104bf610836366004612bab565b6112f4565b34801561084757600080fd5b5061049160125481565b34801561085d57600080fd5b5061040861086c366004612afa565b6113ac565b34801561087d57600080fd5b5061040861088c366004612afa565b611445565b34801561089d57600080fd5b5061049160175481565b3480156108b357600080fd5b50600554610468906001600160a01b031681565b3480156108d357600080fd5b506104086108e2366004612b26565b601c6020526000908152604090205460ff1681565b34801561090357600080fd5b50600d5461040890610100900460ff1681565b34801561092257600080fd5b506104bf610931366004612c2d565b611452565b34801561094257600080fd5b506104bf610951366004612bab565b6115ba565b34801561096257600080fd5b506104bf610971366004612be4565b611643565b34801561098257600080fd5b506104bf610991366004612b43565b6116e6565b3480156109a257600080fd5b50610491600a5481565b3480156109b857600080fd5b5061049160105481565b3480156109ce57600080fd5b506104086109dd366004612b43565b6117af565b3480156109ee57600080fd5b5061049160165481565b348015610a0457600080fd5b50610491600f5481565b348015610a1a57600080fd5b50610491610a29366004612c2d565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610a6057600080fd5b506104bf610a6f366004612b26565b611901565b348015610a8057600080fd5b50610491600b5481565b348015610a9657600080fd5b5061049160115481565b348015610aac57600080fd5b506104bf610abb366004612b26565b611a51565b348015610acc57600080fd5b5061049160155481565b348015610ae257600080fd5b50610491600c5481565b348015610af857600080fd5b5061049160195481565b348015610b0e57600080fd5b50610408610b1d366004612b26565b6001600160a01b03166000908152600e602052604090205460ff1690565b606060038054610b4a90612c5b565b80601f0160208091040260200160405190810160405280929190818152602001828054610b7690612c5b565b8015610bc35780601f10610b9857610100808354040283529160200191610bc3565b820191906000526020600020905b815481529060010190602001808311610ba657829003601f168201915b5050505050905090565b6000610bda338484611aec565b5060015b92915050565b6005546001600160a01b03163314610c175760405162461bcd60e51b8152600401610c0e90612c95565b60405180910390fd5b6008546040516001600160a01b03918216918316907f47ac97cd4ab0b967bcc8705051164721527b38b7f9d0e7cd01cf37a62ed23f6390600090a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610c9e5760405162461bcd60e51b8152600401610c0e90612c95565b633b9aca006103e8610caf60025490565b610cba906005612ce0565b610cc49190612cf7565b610cce9190612cf7565b811015610d355760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e352560881b6064820152608401610c0e565b610d4381633b9aca00612ce0565b600a5550565b6000610d56848484611c10565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610ddb5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610c0e565b610de88533858403611aec565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610bda918590610e2a908690612d19565b611aec565b6005546001600160a01b03163314610e595760405162461bcd60e51b8152600401610c0e90612c95565b6040516370a0823160e01b815230600482018190526000916370a0823190602401602060405180830381865afa158015610e97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ebb9190612d2c565b60405163a9059cbb60e01b815233600482015260248101829052909150309063a9059cbb906044016020604051808303816000875af1158015610f02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f269190612d45565b5060405133904780156108fc02916000818181858888f19350505050158015610f53573d6000803e3d6000fd5b5050565b6005546001600160a01b03163314610f815760405162461bcd60e51b8152600401610c0e90612c95565b600d805463ff00000019166301000000179055565b6005546001600160a01b03163314610fc05760405162461bcd60e51b8152600401610c0e90612c95565b610fca60006123d3565b565b6005546000906001600160a01b03163314610ff95760405162461bcd60e51b8152600401610c0e90612c95565b50600d805460ff19169055600190565b6005546001600160a01b031633146110335760405162461bcd60e51b8152600401610c0e90612c95565b6001600160a01b03919091166000908152601b60205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146110885760405162461bcd60e51b8152600401610c0e90612c95565b6001600160a01b03166000908152600e60205260409020805460ff19169055565b6005546001600160a01b031633146110d35760405162461bcd60e51b8152600401610c0e90612c95565b6000816001600160a01b03164760405160006040518083038185875af1925050503d8060008114611120576040519150601f19603f3d011682016040523d82523d6000602084013e611125565b606091505b5050905080610f5357600080fd5b6005546001600160a01b0316331461115d5760405162461bcd60e51b8152600401610c0e90612c95565b6009546040516001600160a01b03918216918316907f8aa0f85050aca99be43beb823e0457e77966b3baf697a289b03681978f96166890600090a3600980546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146111e45760405162461bcd60e51b8152600401610c0e90612c95565b601083905560118290556012819055806111fe8385612d19565b6112089190612d19565b600f8190556032101561125d5760405162461bcd60e51b815260206004820152601760248201527f4275792066656573206d757374206265203c3d2035302e0000000000000000006044820152606401610c0e565b505050565b6005546001600160a01b0316331461128c5760405162461bcd60e51b8152600401610c0e90612c95565b600d805462ffff00191662010100179055565b6005546001600160a01b031633146112c95760405162461bcd60e51b8152600401610c0e90612c95565b600d8054911515620100000262ff000019909216919091179055565b606060048054610b4a90612c5b565b6005546001600160a01b0316331461131e5760405162461bcd60e51b8152600401610c0e90612c95565b6007546001600160a01b03908116908316036113a25760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610c0e565b610f538282612425565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561142e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610c0e565b61143b3385858403611aec565b5060019392505050565b6000610bda338484611c10565b6005546001600160a01b0316331461147c5760405162461bcd60e51b8152600401610c0e90612c95565b6001600160a01b0382166114d25760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610c0e565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015611519573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153d9190612d2c565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb906044016020604051808303816000875af1158015611590573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b49190612d45565b50505050565b6005546001600160a01b031633146115e45760405162461bcd60e51b8152600401610c0e90612c95565b6001600160a01b0382166000818152601a6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461166d5760405162461bcd60e51b8152600401610c0e90612c95565b601483905560158290556016819055806116878385612d19565b6116919190612d19565b60138190556005101561125d5760405162461bcd60e51b815260206004820152601760248201527f53656c6c2066656573206d757374206265203c3d20352e0000000000000000006044820152606401610c0e565b6005546001600160a01b031633146117105760405162461bcd60e51b8152600401610c0e90612c95565b633b9aca006103e861172160025490565b61172c90600a612ce0565b6117369190612cf7565b6117409190612cf7565b81101561179b5760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263312e302560e01b6064820152608401610c0e565b6117a981633b9aca00612ce0565b600c5550565b6005546000906001600160a01b031633146117dc5760405162461bcd60e51b8152600401610c0e90612c95565b620186a06117e960025490565b6117f4906001612ce0565b6117fe9190612cf7565b82101561186b5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610c0e565b6103e861187760025490565b611882906005612ce0565b61188c9190612cf7565b8211156118f85760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610c0e565b50600b55600190565b6005546001600160a01b0316331461192b5760405162461bcd60e51b8152600401610c0e90612c95565b600d546301000000900460ff161561198f5760405162461bcd60e51b815260206004820152602160248201527f5465616d20686173207265766f6b656420626c61636b6c6973742072696768746044820152607360f81b6064820152608401610c0e565b6007546001600160a01b038281169116148015906119ca57506001600160a01b038116737a250d5630b4cf539739df2c5dacb4c659f2488d14155b611a2d5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f7420626c61636b6c69737420746f6b656e277320763220726f757460448201526d32b91037b9103b19103837b7b61760911b6064820152608401610c0e565b6001600160a01b03166000908152600e60205260409020805460ff19166001179055565b6005546001600160a01b03163314611a7b5760405162461bcd60e51b8152600401610c0e90612c95565b6001600160a01b038116611ae05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c0e565b611ae9816123d3565b50565b6001600160a01b038316611b4e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c0e565b6001600160a01b038216611baf5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c0e565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611c365760405162461bcd60e51b8152600401610c0e90612d62565b6001600160a01b038216611c5c5760405162461bcd60e51b8152600401610c0e90612da7565b6001600160a01b0383166000908152600e602052604090205460ff1615611cba5760405162461bcd60e51b815260206004820152601260248201527114d95b99195c88189b1858dadb1a5cdd195960721b6044820152606401610c0e565b6001600160a01b0382166000908152600e602052604090205460ff1615611d1a5760405162461bcd60e51b8152602060048201526014602482015273149958d95a5d995c88189b1858dadb1a5cdd195960621b6044820152606401610c0e565b80600003611d2e5761125d83836000612479565b600d5460ff16156120a4576005546001600160a01b03848116911614801590611d6557506005546001600160a01b03838116911614155b8015611d7957506001600160a01b03821615155b8015611d9057506001600160a01b03821661dead14155b8015611da65750600754600160a01b900460ff16155b156120a457600d54610100900460ff16611e3e576001600160a01b0383166000908152601a602052604090205460ff1680611df957506001600160a01b0382166000908152601a602052604090205460ff165b611e3e5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610c0e565b6001600160a01b0383166000908152601c602052604090205460ff168015611e7f57506001600160a01b0382166000908152601b602052604090205460ff16155b15611f6357600a54811115611ef45760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610c0e565b600c546001600160a01b038316600090815260208190526040902054611f1a9083612d19565b1115611f5e5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610c0e565b6120a4565b6001600160a01b0382166000908152601c602052604090205460ff168015611fa457506001600160a01b0383166000908152601b602052604090205460ff16155b1561201a57600a54811115611f5e5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610c0e565b6001600160a01b0382166000908152601b602052604090205460ff166120a457600c546001600160a01b0383166000908152602081905260409020546120609083612d19565b11156120a45760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610c0e565b30600090815260208190526040902054600b54811080159081906120d05750600d5462010000900460ff165b80156120e65750600754600160a01b900460ff16155b801561210b57506001600160a01b0385166000908152601c602052604090205460ff16155b801561213057506001600160a01b0385166000908152601a602052604090205460ff16155b801561215557506001600160a01b0384166000908152601a602052604090205460ff16155b15612183576007805460ff60a01b1916600160a01b1790556121756125cd565b6007805460ff60a01b191690555b6007546001600160a01b0386166000908152601a602052604090205460ff600160a01b9092048216159116806121d157506001600160a01b0385166000908152601a602052604090205460ff165b156121da575060005b600081156123bf576001600160a01b0386166000908152601c602052604090205460ff16156122c457601354156122bf5761222b60646122256013548861283d90919063ffffffff16565b90612850565b90506013546015548261223e9190612ce0565b6122489190612cf7565b601860008282546122599190612d19565b909155505060135460165461226e9083612ce0565b6122789190612cf7565b601960008282546122899190612d19565b909155505060135460145461229e9083612ce0565b6122a89190612cf7565b601760008282546122b99190612d19565b90915550505b6123a1565b6001600160a01b0387166000908152601c602052604090205460ff1680156122ee57506000600f54115b156123a15761230d6064612225600f548861283d90919063ffffffff16565b9050600f54601154826123209190612ce0565b61232a9190612cf7565b6018600082825461233b9190612d19565b9091555050600f546012546123509083612ce0565b61235a9190612cf7565b6019600082825461236b9190612d19565b9091555050600f546010546123809083612ce0565b61238a9190612cf7565b6017600082825461239b9190612d19565b90915550505b80156123b2576123b2873083612479565b6123bc8186612dea565b94505b6123ca878787612479565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166000818152601c6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b03831661249f5760405162461bcd60e51b8152600401610c0e90612d62565b6001600160a01b0382166124c55760405162461bcd60e51b8152600401610c0e90612da7565b6001600160a01b0383166000908152602081905260409020548181101561253d5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610c0e565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612574908490612d19565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125c091815260200190565b60405180910390a36115b4565b3060009081526020819052604081205490506000816018546125ef9190612dea565b905060006019546017546018546126069190612d19565b6126109190612d19565b9050600083158061261f575081155b1561262a5750505050565b600b54612638906014612ce0565b84111561265057600b5461264d906014612ce0565b93505b6000600283601854876126639190612ce0565b61266d9190612cf7565b6126779190612cf7565b90506000612685868361285c565b90504761269182612868565b600061269d478361285c565b905060006126cb60026018546126b39190612cf7565b6126bd9089612dea565b60175461222590859061283d565b905060006126f960026018546126e19190612cf7565b6126eb908a612dea565b60195461222590869061283d565b90506000816127088486612dea565b6127129190612dea565b60006018819055601781905560198190556009546040519293506001600160a01b031691849181818185875af1925050503d806000811461276f576040519150601f19603f3d011682016040523d82523d6000602084013e612774565b606091505b509098505086158015906127885750600081115b156127db5761279787826129c2565b601854604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6009546040516001600160a01b03909116904790600081818185875af1925050503d8060008114612828576040519150601f19603f3d011682016040523d82523d6000602084013e61282d565b606091505b5050505050505050505050505050565b60006128498284612ce0565b9392505050565b60006128498284612cf7565b60006128498284612dea565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061289d5761289d612dfd565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156128f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061291a9190612e13565b8160018151811061292d5761292d612dfd565b6001600160a01b0392831660209182029290920101526006546129539130911684611aec565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac9479061298c908590600090869030904290600401612e30565b600060405180830381600087803b1580156129a657600080fd5b505af11580156129ba573d6000803e3d6000fd5b505050505050565b6006546129da9030906001600160a01b031684611aec565b6006546001600160a01b031663f305d719823085600080612a036005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612a6b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612a909190612ea1565b5050505050565b600060208083528351808285015260005b81811015612ac457858101830151858201604001528201612aa8565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611ae957600080fd5b60008060408385031215612b0d57600080fd5b8235612b1881612ae5565b946020939093013593505050565b600060208284031215612b3857600080fd5b813561284981612ae5565b600060208284031215612b5557600080fd5b5035919050565b600080600060608486031215612b7157600080fd5b8335612b7c81612ae5565b92506020840135612b8c81612ae5565b929592945050506040919091013590565b8015158114611ae957600080fd5b60008060408385031215612bbe57600080fd5b8235612bc981612ae5565b91506020830135612bd981612b9d565b809150509250929050565b600080600060608486031215612bf957600080fd5b505081359360208301359350604090920135919050565b600060208284031215612c2257600080fd5b813561284981612b9d565b60008060408385031215612c4057600080fd5b8235612c4b81612ae5565b91506020830135612bd981612ae5565b600181811c90821680612c6f57607f821691505b602082108103612c8f57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610bde57610bde612cca565b600082612d1457634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610bde57610bde612cca565b600060208284031215612d3e57600080fd5b5051919050565b600060208284031215612d5757600080fd5b815161284981612b9d565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610bde57610bde612cca565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612e2557600080fd5b815161284981612ae5565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612e805784516001600160a01b031683529383019391830191600101612e5b565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612eb657600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212201c34a611ed8ce676c622040439b4b647f37ba4152974c89f941c52ecae0e7f8a64736f6c63430008130033
Deployed Bytecode Sourcemap
15028:15825:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2908:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3807:169;;;;;;;;;;-1:-1:-1;3807:169:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;3807:169:0;1023:187:1;16109:63:0;;;;;;;;;;-1:-1:-1;16109:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15104:41;;;;;;;;;;-1:-1:-1;15104:41:0;;;;-1:-1:-1;;;;;15104:41:0;;;;;;-1:-1:-1;;;;;1658:32:1;;;1640:51;;1628:2;1613:18;15104:41:0;1467:230:1;3222:108:0;;;;;;;;;;-1:-1:-1;3310:12:0;;3222:108;;;1848:25:1;;;1836:2;1821:18;3222:108:0;1702:177:1;22090:182:0;;;;;;;;;;-1:-1:-1;22090:182:0;;;;;:::i;:::-;;:::i;:::-;;15975:33;;;;;;;;;;;;;;;;19651:273;;;;;;;;;;-1:-1:-1;19651:273:0;;;;;:::i;:::-;;:::i;3982:488::-;;;;;;;;;;-1:-1:-1;3982:488:0;;;;;:::i;:::-;;:::i;15187:53::-;;;;;;;;;;;;15233:6;15187:53;;3124:92;;;;;;;;;;-1:-1:-1;3124:92:0;;3207:1;2880:36:1;;2868:2;2853:18;3124:92:0;2738:184:1;15830:29:0;;;;;;;;;;;;;;;;4476:215;;;;;;;;;;-1:-1:-1;4476:215:0;;;;;:::i;:::-;;:::i;15569:38::-;;;;;;;;;;-1:-1:-1;15569:38:0;;;;;;;;;;;15152:28;;;;;;;;;;-1:-1:-1;15152:28:0;;;;-1:-1:-1;;;;;15152:28:0;;;15451:33;;;;;;;;;;-1:-1:-1;15451:33:0;;;;;;;;22445:126;;;;;;;;;;-1:-1:-1;22445:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;22535:28:0;22511:4;22535:28;;;:19;:28;;;;;;;;;22445:126;15306:25;;;;;;;;;;-1:-1:-1;15306:25:0;;;;-1:-1:-1;;;;;15306:25:0;;;29108:257;;;;;;;;;;;;;:::i;29867:90::-;;;;;;;;;;;;;:::i;15795:28::-;;;;;;;;;;;;;;;;15531:31;;;;;;;;;;-1:-1:-1;15531:31:0;;;;;;;;;;;3336:127;;;;;;;;;;-1:-1:-1;3336:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3437:18:0;3410:7;3437:18;;;;;;;;;;;;3336:127;1071:103;;;;;;;;;;;;;:::i;19019:121::-;;;;;;;;;;;;;:::i;20317:167::-;;;;;;;;;;-1:-1:-1;20317:167:0;;;;;:::i;:::-;;:::i;30752:98::-;;;;;;;;;;-1:-1:-1;30752:98:0;;;;;:::i;:::-;;:::i;29665:196::-;;;;;;;;;;-1:-1:-1;29665:196:0;;;;;:::i;:::-;;:::i;22278:161::-;;;;;;;;;;-1:-1:-1;22278:161:0;;;;;:::i;:::-;;:::i;20596:393::-;;;;;;;;;;-1:-1:-1;20596:393:0;;;;;:::i;:::-;;:::i;20197:112::-;;;;;;;;;;;;;:::i;852:87::-;;;;;;;;;;-1:-1:-1;925:6:0;;-1:-1:-1;;;;;925:6:0;852:87;;15275:24;;;;;;;;;;-1:-1:-1;15275:24:0;;;;-1:-1:-1;;;;;15275:24:0;;;20490:100;;;;;;;;;;-1:-1:-1;20490:100:0;;;;;:::i;:::-;;:::i;3014:104::-;;;;;;;;;;;;;:::i;21590:302::-;;;;;;;;;;-1:-1:-1;21590:302:0;;;;;:::i;:::-;;:::i;15763:25::-;;;;;;;;;;;;;;;;4697:411;;;;;;;;;;-1:-1:-1;4697:411:0;;;;;:::i;:::-;;:::i;3469:175::-;;;;;;;;;;-1:-1:-1;3469:175:0;;;;;:::i;:::-;;:::i;15937:31::-;;;;;;;;;;;;;;;;676:21;;;;;;;;;;-1:-1:-1;676:21:0;;;;-1:-1:-1;;;;;676:21:0;;;16179:57;;;;;;;;;;-1:-1:-1;16179:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15491:33;;;;;;;;;;-1:-1:-1;15491:33:0;;;;;;;;;;;29371:288;;;;;;;;;;-1:-1:-1;29371:288:0;;;;;:::i;:::-;;:::i;21402:182::-;;;;;;;;;;-1:-1:-1;21402:182:0;;;;;:::i;:::-;;:::i;20995:401::-;;;;;;;;;;-1:-1:-1;20995:401:0;;;;;:::i;:::-;;:::i;19930:255::-;;;;;;;;;;-1:-1:-1;19930:255:0;;;;;:::i;:::-;;:::i;15338:35::-;;;;;;;;;;;;;;;;15691:28;;;;;;;;;;;;;;;;19148:497;;;;;;;;;;-1:-1:-1;19148:497:0;;;;;:::i;:::-;;:::i;15904:26::-;;;;;;;;;;;;;;;;15657:27;;;;;;;;;;;;;;;;3650:151;;;;;;;;;;-1:-1:-1;3650:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;3766:18:0;;;3739:7;3766:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3650:151;30343:403;;;;;;;;;;-1:-1:-1;30343:403:0;;;;;:::i;:::-;;:::i;15380:33::-;;;;;;;;;;;;;;;;15726:30;;;;;;;;;;;;;;;;1180:201;;;;;;;;;;-1:-1:-1;1180:201:0;;;;;:::i;:::-;;:::i;15866:31::-;;;;;;;;;;;;;;;;15420:24;;;;;;;;;;;;;;;;16015:28;;;;;;;;;;;;;;;;22577:113;;;;;;;;;;-1:-1:-1;22577:113:0;;;;;:::i;:::-;-1:-1:-1;;;;;22662:20:0;22638:4;22662:20;;;:11;:20;;;;;;;;;22577:113;2908:100;2962:13;2995:5;2988:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2908:100;:::o;3807:169::-;3890:4;3907:39;502:10;3930:7;3939:6;3907:8;:39::i;:::-;-1:-1:-1;3964:4:0;3807:169;;;;;:::o;22090:182::-;925:6;;-1:-1:-1;;;;;925:6:0;502:10;985:23;977:68;;;;-1:-1:-1;;;977:68:0;;;;;;;:::i;:::-;;;;;;;;;22215:9:::1;::::0;22176:49:::1;::::0;-1:-1:-1;;;;;22215:9:0;;::::1;::::0;22176:49;::::1;::::0;::::1;::::0;22215:9:::1;::::0;22176:49:::1;22236:9;:28:::0;;-1:-1:-1;;;;;;22236:28:0::1;-1:-1:-1::0;;;;;22236:28:0;;;::::1;::::0;;;::::1;::::0;;22090:182::o;19651:273::-;925:6;;-1:-1:-1;;;;;925:6:0;502:10;985:23;977:68;;;;-1:-1:-1;;;977:68:0;;;;;;;:::i;:::-;19788:3:::1;19780:4;19759:13;3310:12:::0;;;3222:108;19759:13:::1;:17;::::0;19775:1:::1;19759:17;:::i;:::-;19758:26;;;;:::i;:::-;19757:34;;;;:::i;:::-;19747:6;:44;;19725:141;;;::::0;-1:-1:-1;;;19725:141:0;;5872:2:1;19725:141:0::1;::::0;::::1;5854:21:1::0;5911:2;5891:18;;;5884:30;5950:34;5930:18;;;5923:62;-1:-1:-1;;;6001:18:1;;;5994:45;6056:19;;19725:141:0::1;5670:411:1::0;19725:141:0::1;19900:16;:6:::0;19910:5:::1;19900:16;:::i;:::-;19877:20;:39:::0;-1:-1:-1;19651:273:0:o;3982:488::-;4122:4;4139:36;4149:6;4157:9;4168:6;4139:9;:36::i;:::-;-1:-1:-1;;;;;4213:19:0;;4186:24;4213:19;;;:11;:19;;;;;;;;502:10;4213:33;;;;;;;;4265:26;;;;4257:79;;;;-1:-1:-1;;;4257:79:0;;6288:2:1;4257:79:0;;;6270:21:1;6327:2;6307:18;;;6300:30;6366:34;6346:18;;;6339:62;-1:-1:-1;;;6417:18:1;;;6410:38;6465:19;;4257:79:0;6086:404:1;4257:79:0;4372:57;4381:6;502:10;4422:6;4403:16;:25;4372:8;:57::i;:::-;-1:-1:-1;4458:4:0;;3982:488;-1:-1:-1;;;;3982:488:0:o;4476:215::-;502:10;4564:4;4613:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4613:34:0;;;;;;;;;;4564:4;;4581:80;;4604:7;;4613:47;;4650:10;;4613:47;:::i;:::-;4581:8;:80::i;29108:257::-;925:6;;-1:-1:-1;;;;;925:6:0;502:10;985:23;977:68;;;;-1:-1:-1;;;977:68:0;;;;;;;:::i;:::-;29187:46:::1;::::0;-1:-1:-1;;;29187:46:0;;29202:4:::1;29187:46;::::0;::::1;1640:51:1::0;;;29169:15:0::1;::::0;29187:31:::1;::::0;1613:18:1;;29187:46:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29244:51;::::0;-1:-1:-1;;;29244:51:0;;29275:10:::1;29244:51;::::0;::::1;6988::1::0;7055:18;;;7048:34;;;29169:64:0;;-1:-1:-1;29259:4:0::1;::::0;29244:30:::1;::::0;6961:18:1;;29244:51:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;29306:51:0::1;::::0;29314:10:::1;::::0;29335:21:::1;29306:51:::0;::::1;;;::::0;::::1;::::0;;;29335:21;29314:10;29306:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;29158:207;29108:257::o:0;29867:90::-;925:6;;-1:-1:-1;;;;;925:6:0;502:10;985:23;977:68;;;;-1:-1:-1;;;977:68:0;;;;;;;:::i;:::-;29924:18:::1;:25:::0;;-1:-1:-1;;29924:25:0::1;::::0;::::1;::::0;;29867:90::o;1071:103::-;925:6;;-1:-1:-1;;;;;925:6:0;502:10;985:23;977:68;;;;-1:-1:-1;;;977:68:0;;;;;;;:::i;:::-;1136:30:::1;1163:1;1136:18;:30::i;:::-;1071:103::o:0;19019:121::-;925:6;;19071:4;;-1:-1:-1;;;;;925:6:0;502:10;985:23;977:68;;;;-1:-1:-1;;;977:68:0;;;;;;;:::i;:::-;-1:-1:-1;19088:14:0::1;:22:::0;;-1:-1:-1;;19088:22:0::1;::::0;;;19019:121;:::o;20317:167::-;925:6;;-1:-1:-1;;;;;925:6:0;502:10;985:23;977:68;;;;-1:-1:-1;;;977:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20430:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;20430:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20317:167::o;30752:98::-;925:6;;-1:-1:-1;;;;;925:6:0;502:10;985:23;977:68;;;;-1:-1:-1;;;977:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30816:18:0::1;30837:5;30816:18:::0;;;:11:::1;:18;::::0;;;;:26;;-1:-1:-1;;30816:26:0::1;::::0;;30752:98::o;29665:196::-;925:6;;-1:-1:-1;;;;;925:6:0;502:10;985:23;977:68;;;;-1:-1:-1;;;977:68:0;;;;;;;:::i;:::-;29738:12:::1;29756:6;-1:-1:-1::0;;;;;29756:11:0::1;29789:21;29756:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29737:89;;;29845:7;29837:16;;;::::0;::::1;22278:161:::0;925:6;;-1:-1:-1;;;;;925:6:0;502:10;985:23;977:68;;;;-1:-1:-1;;;977:68:0;;;;;;;:::i;:::-;22387:10:::1;::::0;22358:40:::1;::::0;-1:-1:-1;;;;;22387:10:0;;::::1;::::0;22358:40;::::1;::::0;::::1;::::0;22387:10:::1;::::0;22358:40:::1;22409:10;:22:::0;;-1:-1:-1;;;;;;22409:22:0::1;-1:-1:-1::0;;;;;22409:22:0;;;::::1;::::0;;;::::1;::::0;;22278:161::o;20596:393::-;925:6;;-1:-1:-1;;;;;925:6:0;502:10;985:23;977:68;;;;-1:-1:-1;;;977:68:0;;;;;;;:::i;:::-;20745:13:::1;:27:::0;;;20783:15:::1;:31:::0;;;20825:10:::1;:21:::0;;;20838:8;20872:31:::1;20801:13:::0;20761:11;20872:31:::1;:::i;:::-;:44;;;;:::i;:::-;20857:12;:59:::0;;;20951:2:::1;-1:-1:-1::0;20935:18:0::1;20927:54;;;::::0;-1:-1:-1;;;20927:54:0;;7755:2:1;20927:54:0::1;::::0;::::1;7737:21:1::0;7794:2;7774:18;;;7767:30;7833:25;7813:18;;;7806:53;7876:18;;20927:54:0::1;7553:347:1::0;20927:54:0::1;20596:393:::0;;;:::o;20197:112::-;925:6;;-1:-1:-1;;;;;925:6:0;502:10;985:23;977:68;;;;-1:-1:-1;;;977:68:0;;;;;;;:::i;:::-;20252:13:::1;:20:::0;;-1:-1:-1;;20283:18:0;;;;;20197:112::o;20490:100::-;925:6;;-1:-1:-1;;;;;925:6:0;502:10;985:23;977:68;;;;-1:-1:-1;;;977:68:0;;;;;;;:::i;:::-;20561:11:::1;:21:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;20561:21:0;;::::1;::::0;;;::::1;::::0;;20490:100::o;3014:104::-;3070:13;3103:7;3096:14;;;;;:::i;21590:302::-;925:6;;-1:-1:-1;;;;;925:6:0;502:10;985:23;977:68;;;;-1:-1:-1;;;977:68:0;;;;;;;:::i;:::-;21734:13:::1;::::0;-1:-1:-1;;;;;21734:13:0;;::::1;21726:21:::0;;::::1;::::0;21704:128:::1;;;::::0;-1:-1:-1;;;21704:128:0;;8107:2:1;21704:128:0::1;::::0;::::1;8089:21:1::0;8146:2;8126:18;;;8119:30;8185:34;8165:18;;;8158:62;8256:27;8236:18;;;8229:55;8301:19;;21704:128:0::1;7905:421:1::0;21704:128:0::1;21843:41;21872:4;21878:5;21843:28;:41::i;4697:411::-:0;502:10;4790:4;4834:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4834:34:0;;;;;;;;;;4887:35;;;;4879:85;;;;-1:-1:-1;;;4879:85:0;;8533:2:1;4879:85:0;;;8515:21:1;8572:2;8552:18;;;8545:30;8611:34;8591:18;;;8584:62;-1:-1:-1;;;8662:18:1;;;8655:35;8707:19;;4879:85:0;8331:401:1;4879:85:0;5000:67;502:10;5023:7;5051:15;5032:16;:34;5000:8;:67::i;:::-;-1:-1:-1;5096:4:0;;4697:411;-1:-1:-1;;;4697:411:0:o;3469:175::-;3555:4;3572:42;502:10;3596:9;3607:6;3572:9;:42::i;29371:288::-;925:6;;-1:-1:-1;;;;;925:6:0;502:10;985:23;977:68;;;;-1:-1:-1;;;977:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29466:20:0;::::1;29458:59;;;::::0;-1:-1:-1;;;29458:59:0;;8939:2:1;29458:59:0::1;::::0;::::1;8921:21:1::0;8978:2;8958:18;;;8951:30;9017:28;8997:18;;;8990:56;9063:18;;29458:59:0::1;8737:350:1::0;29458:59:0::1;29555:39;::::0;-1:-1:-1;;;29555:39:0;;29588:4:::1;29555:39;::::0;::::1;1640:51:1::0;29528:24:0::1;::::0;-1:-1:-1;;;;;29555:24:0;::::1;::::0;::::1;::::0;1613:18:1;;29555:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29605:46;::::0;-1:-1:-1;;;29605:46:0;;-1:-1:-1;;;;;7006:32:1;;;29605:46:0::1;::::0;::::1;6988:51:1::0;7055:18;;;7048:34;;;29528:66:0;;-1:-1:-1;29605:23:0;;::::1;::::0;::::1;::::0;6961:18:1;;29605:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29447:212;29371:288:::0;;:::o;21402:182::-;925:6;;-1:-1:-1;;;;;925:6:0;502:10;985:23;977:68;;;;-1:-1:-1;;;977:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21487:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;21487:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;21542:34;;1163:41:1;;;21542:34:0::1;::::0;1136:18:1;21542:34:0::1;;;;;;;21402:182:::0;;:::o;20995:401::-;925:6;;-1:-1:-1;;;;;925:6:0;502:10;985:23;977:68;;;;-1:-1:-1;;;977:68:0;;;;;;;:::i;:::-;21145:14:::1;:28:::0;;;21184:16:::1;:32:::0;;;21227:11:::1;:22:::0;;;21241:8;21276:33:::1;21203:13:::0;21162:11;21276:33:::1;:::i;:::-;:47;;;;:::i;:::-;21260:13;:63:::0;;;21359:1:::1;-1:-1:-1::0;21342:18:0::1;21334:54;;;::::0;-1:-1:-1;;;21334:54:0;;9294:2:1;21334:54:0::1;::::0;::::1;9276:21:1::0;9333:2;9313:18;;;9306:30;9372:25;9352:18;;;9345:53;9415:18;;21334:54:0::1;9092:347:1::0;19930:255:0;925:6;;-1:-1:-1;;;;;925:6:0;502:10;985:23;977:68;;;;-1:-1:-1;;;977:68:0;;;;;;;:::i;:::-;20071:3:::1;20063:4;20041:13;3310:12:::0;;;3222:108;20041:13:::1;:18;::::0;20057:2:::1;20041:18;:::i;:::-;20040:27;;;;:::i;:::-;20039:35;;;;:::i;:::-;20029:6;:45;;20007:131;;;::::0;-1:-1:-1;;;20007:131:0;;9646:2:1;20007:131:0::1;::::0;::::1;9628:21:1::0;9685:2;9665:18;;;9658:30;9724:34;9704:18;;;9697:62;-1:-1:-1;;;9775:18:1;;;9768:34;9819:19;;20007:131:0::1;9444:400:1::0;20007:131:0::1;20161:16;:6:::0;20171:5:::1;20161:16;:::i;:::-;20149:9;:28:::0;-1:-1:-1;19930:255:0:o;19148:497::-;925:6;;19256:4;;-1:-1:-1;;;;;925:6:0;502:10;985:23;977:68;;;;-1:-1:-1;;;977:68:0;;;;;;;:::i;:::-;19335:6:::1;19314:13;3310:12:::0;;;3222:108;19314:13:::1;:17;::::0;19330:1:::1;19314:17;:::i;:::-;19313:28;;;;:::i;:::-;19300:9;:41;;19278:144;;;::::0;-1:-1:-1;;;19278:144:0;;10051:2:1;19278:144:0::1;::::0;::::1;10033:21:1::0;10090:2;10070:18;;;10063:30;10129:34;10109:18;;;10102:62;-1:-1:-1;;;10180:18:1;;;10173:51;10241:19;;19278:144:0::1;9849:417:1::0;19278:144:0::1;19490:4;19469:13;3310:12:::0;;;3222:108;19469:13:::1;:17;::::0;19485:1:::1;19469:17;:::i;:::-;19468:26;;;;:::i;:::-;19455:9;:39;;19433:141;;;::::0;-1:-1:-1;;;19433:141:0;;10473:2:1;19433:141:0::1;::::0;::::1;10455:21:1::0;10512:2;10492:18;;;10485:30;10551:34;10531:18;;;10524:62;-1:-1:-1;;;10602:18:1;;;10595:50;10662:19;;19433:141:0::1;10271:416:1::0;19433:141:0::1;-1:-1:-1::0;19585:18:0::1;:30:::0;19633:4:::1;::::0;19148:497::o;30343:403::-;925:6;;-1:-1:-1;;;;;925:6:0;502:10;985:23;977:68;;;;-1:-1:-1;;;977:68:0;;;;;;;:::i;:::-;30431:18:::1;::::0;;;::::1;;;30430:19;30422:65;;;::::0;-1:-1:-1;;;30422:65:0;;10894:2:1;30422:65:0::1;::::0;::::1;10876:21:1::0;10933:2;10913:18;;;10906:30;10972:34;10952:18;;;10945:62;-1:-1:-1;;;11023:18:1;;;11016:31;11064:19;;30422:65:0::1;10692:397:1::0;30422:65:0::1;30541:13;::::0;-1:-1:-1;;;;;30520:35:0;;::::1;30541:13:::0;::::1;30520:35;::::0;::::1;::::0;:103:::1;;-1:-1:-1::0;;;;;;30559:64:0;::::1;30580:42;30559:64;;30520:103;30498:200;;;::::0;-1:-1:-1;;;30498:200:0;;11296:2:1;30498:200:0::1;::::0;::::1;11278:21:1::0;11335:2;11315:18;;;11308:30;11374:34;11354:18;;;11347:62;-1:-1:-1;;;11425:18:1;;;11418:44;11479:19;;30498:200:0::1;11094:410:1::0;30498:200:0::1;-1:-1:-1::0;;;;;30709:22:0::1;;::::0;;;:11:::1;:22;::::0;;;;:29;;-1:-1:-1;;30709:29:0::1;30734:4;30709:29;::::0;;30343:403::o;1180:201::-;925:6;;-1:-1:-1;;;;;925:6:0;502:10;985:23;977:68;;;;-1:-1:-1;;;977:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1269:22:0;::::1;1261:73;;;::::0;-1:-1:-1;;;1261:73:0;;11711:2:1;1261:73:0::1;::::0;::::1;11693:21:1::0;11750:2;11730:18;;;11723:30;11789:34;11769:18;;;11762:62;-1:-1:-1;;;11840:18:1;;;11833:36;11886:19;;1261:73:0::1;11509:402:1::0;1261:73:0::1;1345:28;1364:8;1345:18;:28::i;:::-;1180:201:::0;:::o;6833:378::-;-1:-1:-1;;;;;6969:19:0;;6961:68;;;;-1:-1:-1;;;6961:68:0;;12118:2:1;6961:68:0;;;12100:21:1;12157:2;12137:18;;;12130:30;12196:34;12176:18;;;12169:62;-1:-1:-1;;;12247:18:1;;;12240:34;12291:19;;6961:68:0;11916:400:1;6961:68:0;-1:-1:-1;;;;;7048:21:0;;7040:68;;;;-1:-1:-1;;;7040:68:0;;12523:2:1;7040:68:0;;;12505:21:1;12562:2;12542:18;;;12535:30;12601:34;12581:18;;;12574:62;-1:-1:-1;;;12652:18:1;;;12645:32;12694:19;;7040:68:0;12321:398:1;7040:68:0;-1:-1:-1;;;;;7119:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7171:32;;1848:25:1;;;7171:32:0;;1821:18:1;7171:32:0;;;;;;;6833:378;;;:::o;22696:3803::-;-1:-1:-1;;;;;22828:18:0;;22820:68;;;;-1:-1:-1;;;22820:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22907:16:0;;22899:64;;;;-1:-1:-1;;;22899:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22983:17:0;;;;;;:11;:17;;;;;;;;22982:18;22974:48;;;;-1:-1:-1;;;22974:48:0;;13736:2:1;22974:48:0;;;13718:21:1;13775:2;13755:18;;;13748:30;-1:-1:-1;;;13794:18:1;;;13787:48;13852:18;;22974:48:0;13534:342:1;22974:48:0;-1:-1:-1;;;;;23042:15:0;;;;;;:11;:15;;;;;;;;23041:16;23033:48;;;;-1:-1:-1;;;23033:48:0;;14083:2:1;23033:48:0;;;14065:21:1;14122:2;14102:18;;;14095:30;-1:-1:-1;;;14141:18:1;;;14134:50;14201:18;;23033:48:0;13881:344:1;23033:48:0;23096:6;23106:1;23096:11;23092:93;;23124:28;23140:4;23146:2;23150:1;23124:15;:28::i;23092:93::-;23199:14;;;;23195:1635;;;925:6;;-1:-1:-1;;;;;23252:15:0;;;925:6;;23252:15;;;;:49;;-1:-1:-1;925:6:0;;-1:-1:-1;;;;;23288:13:0;;;925:6;;23288:13;;23252:49;:86;;;;-1:-1:-1;;;;;;23322:16:0;;;;23252:86;:128;;;;-1:-1:-1;;;;;;23359:21:0;;23373:6;23359:21;;23252:128;:158;;;;-1:-1:-1;23402:8:0;;-1:-1:-1;;;23402:8:0;;;;23401:9;23252:158;23230:1589;;;23450:13;;;;;;;23445:223;;-1:-1:-1;;;;;23522:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;23551:23:0;;;;;;:19;:23;;;;;;;;23522:52;23488:160;;;;-1:-1:-1;;;23488:160:0;;14432:2:1;23488:160:0;;;14414:21:1;14471:2;14451:18;;;14444:30;-1:-1:-1;;;14490:18:1;;;14483:52;14552:18;;23488:160:0;14230:346:1;23488:160:0;-1:-1:-1;;;;;23712:31:0;;;;;;:25;:31;;;;;;;;:92;;;;-1:-1:-1;;;;;;23769:35:0;;;;;;:31;:35;;;;;;;;23768:36;23712:92;23686:1118;;;23891:20;;23881:6;:30;;23847:169;;;;-1:-1:-1;;;23847:169:0;;14783:2:1;23847:169:0;;;14765:21:1;14822:2;14802:18;;;14795:30;14861:34;14841:18;;;14834:62;-1:-1:-1;;;14912:18:1;;;14905:51;14973:19;;23847:169:0;14581:417:1;23847:169:0;24099:9;;-1:-1:-1;;;;;3437:18:0;;3410:7;3437:18;;;;;;;;;;;24073:22;;:6;:22;:::i;:::-;:35;;24039:140;;;;-1:-1:-1;;;24039:140:0;;15205:2:1;24039:140:0;;;15187:21:1;15244:2;15224:18;;;15217:30;-1:-1:-1;;;15263:18:1;;;15256:49;15322:18;;24039:140:0;15003:343:1;24039:140:0;23686:1118;;;-1:-1:-1;;;;;24248:29:0;;;;;;:25;:29;;;;;;;;:92;;;;-1:-1:-1;;;;;;24303:37:0;;;;;;:31;:37;;;;;;;;24302:38;24248:92;24222:582;;;24427:20;;24417:6;:30;;24383:170;;;;-1:-1:-1;;;24383:170:0;;15553:2:1;24383:170:0;;;15535:21:1;15592:2;15572:18;;;15565:30;15631:34;15611:18;;;15604:62;-1:-1:-1;;;15682:18:1;;;15675:52;15744:19;;24383:170:0;15351:418:1;24222:582:0;-1:-1:-1;;;;;24584:35:0;;;;;;:31;:35;;;;;;;;24579:225;;24704:9;;-1:-1:-1;;;;;3437:18:0;;3410:7;3437:18;;;;;;;;;;;24678:22;;:6;:22;:::i;:::-;:35;;24644:140;;;;-1:-1:-1;;;24644:140:0;;15205:2:1;24644:140:0;;;15187:21:1;15244:2;15224:18;;;15217:30;-1:-1:-1;;;15263:18:1;;;15256:49;15322:18;;24644:140:0;15003:343:1;24644:140:0;24889:4;24840:28;3437:18;;;;;;;;;;;24945;;24921:42;;;;;;;24992:35;;-1:-1:-1;25016:11:0;;;;;;;24992:35;:61;;;;-1:-1:-1;25045:8:0;;-1:-1:-1;;;25045:8:0;;;;25044:9;24992:61;:110;;;;-1:-1:-1;;;;;;25071:31:0;;;;;;:25;:31;;;;;;;;25070:32;24992:110;:153;;;;-1:-1:-1;;;;;;25120:25:0;;;;;;:19;:25;;;;;;;;25119:26;24992:153;:194;;;;-1:-1:-1;;;;;;25163:23:0;;;;;;:19;:23;;;;;;;;25162:24;24992:194;24974:322;;;25213:8;:15;;-1:-1:-1;;;;25213:15:0;-1:-1:-1;;;25213:15:0;;;25243:10;:8;:10::i;:::-;25268:8;:16;;-1:-1:-1;;;;25268:16:0;;;24974:322;25322:8;;-1:-1:-1;;;;;25345:25:0;;25306:12;25345:25;;;:19;:25;;;;;;25322:8;-1:-1:-1;;;25322:8:0;;;;;25321:9;;25345:25;;:52;;-1:-1:-1;;;;;;25374:23:0;;;;;;:19;:23;;;;;;;;25345:52;25341:100;;;-1:-1:-1;25424:5:0;25341:100;25451:12;25482:7;25478:970;;;-1:-1:-1;;;;;25510:29:0;;;;;;:25;:29;;;;;;;;25506:797;;;25564:13;;:17;25560:351;;25613:34;25643:3;25613:25;25624:13;;25613:6;:10;;:25;;;;:::i;:::-;:29;;:34::i;:::-;25606:41;;25720:13;;25700:16;;25693:4;:23;;;;:::i;:::-;25692:41;;;;:::i;:::-;25670:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;25796:13:0;;25781:11;;25774:18;;:4;:18;:::i;:::-;25773:36;;;;:::i;:::-;25756:13;;:53;;;;;;;:::i;:::-;;;;-1:-1:-1;;25878:13:0;;25860:14;;25853:21;;:4;:21;:::i;:::-;25852:39;;;;:::i;:::-;25832:16;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;25560:351:0;25506:797;;;-1:-1:-1;;;;;25949:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;25999:1;25984:12;;:16;25949:51;25945:358;;;26028:33;26057:3;26028:24;26039:12;;26028:6;:10;;:24;;;;:::i;:33::-;26021:40;;26129:12;;26110:15;;26103:4;:22;;;;:::i;:::-;26102:39;;;;:::i;:::-;26080:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;26199:12:0;;26185:10;;26178:17;;:4;:17;:::i;:::-;26177:34;;;;:::i;:::-;26160:13;;:51;;;;;;;:::i;:::-;;;;-1:-1:-1;;26275:12:0;;26258:13;;26251:20;;:4;:20;:::i;:::-;26250:37;;;;:::i;:::-;26230:16;;:57;;;;;;;:::i;:::-;;;;-1:-1:-1;;25945:358:0;26321:8;;26317:91;;26350:42;26366:4;26380;26387;26350:15;:42::i;:::-;26422:14;26432:4;26422:14;;:::i;:::-;;;25478:970;26458:33;26474:4;26480:2;26484:6;26458:15;:33::i;:::-;22809:3690;;;;22696:3803;;;:::o;1387:191::-;1480:6;;;-1:-1:-1;;;;;1497:17:0;;;-1:-1:-1;;;;;;1497:17:0;;;;;;;1530:40;;1480:6;;;1497:17;1480:6;;1530:40;;1461:16;;1530:40;1450:128;1387:191;:::o;21898:186::-;-1:-1:-1;;;;;21981:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;21981:39:0;;;;;;;;;;22036:40;;21981:39;;:31;22036:40;;;21898:186;;:::o;5114:725::-;-1:-1:-1;;;;;5254:20:0;;5246:70;;;;-1:-1:-1;;;5246:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5335:23:0;;5327:71;;;;-1:-1:-1;;;5327:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5491:17:0;;5467:21;5491:17;;;;;;;;;;;5527:23;;;;5519:74;;;;-1:-1:-1;;;5519:74:0;;16109:2:1;5519:74:0;;;16091:21:1;16148:2;16128:18;;;16121:30;16187:34;16167:18;;;16160:62;-1:-1:-1;;;16238:18:1;;;16231:36;16284:19;;5519:74:0;15907:402:1;5519:74:0;-1:-1:-1;;;;;5629:17:0;;;:9;:17;;;;;;;;;;;5649:22;;;5629:42;;5693:20;;;;;;;;:30;;5665:6;;5629:9;5693:30;;5665:6;;5693:30;:::i;:::-;;;;;;;;5756:9;-1:-1:-1;;;;;5739:35:0;5748:6;-1:-1:-1;;;;;5739:35:0;;5767:6;5739:35;;;;1848:25:1;;1836:2;1821:18;;1702:177;5739:35:0;;;;;;;;5785:46;20596:393;27351:1751;27434:4;27390:23;3437:18;;;;;;;;;;;27390:50;;27451:20;27495:15;27474:18;;:36;;;;:::i;:::-;27451:59;;27521:25;27615:13;;27583:16;;27549:18;;:50;;;;:::i;:::-;:79;;;;:::i;:::-;27521:107;-1:-1:-1;27639:12:0;27666:20;;;:46;;-1:-1:-1;27690:22:0;;27666:46;27662:85;;;27729:7;;;;27351:1751::o;27662:85::-;27779:18;;:23;;27800:2;27779:23;:::i;:::-;27761:15;:41;27757:115;;;27837:18;;:23;;27858:2;27837:23;:::i;:::-;27819:41;;27757:115;27882:23;27995:1;27962:17;27927:18;;27909:15;:36;;;;:::i;:::-;27908:71;;;;:::i;:::-;:88;;;;:::i;:::-;27882:114;-1:-1:-1;28007:26:0;28036:36;:15;27882:114;28036:19;:36::i;:::-;28007:65;-1:-1:-1;28111:21:0;28143:36;28007:65;28143:16;:36::i;:::-;28190:18;28211:44;:21;28237:17;28211:25;:44::i;:::-;28190:65;;28266:21;28290:82;28369:1;28348:18;;:22;;;;:::i;:::-;28327:44;;:17;:44;:::i;:::-;28305:16;;28290:32;;:10;;:14;:32::i;:82::-;28266:106;;28383:18;28404:79;28480:1;28459:18;;:22;;;;:::i;:::-;28438:44;;:17;:44;:::i;:::-;28419:13;;28404:29;;:10;;:14;:29::i;:79::-;28383:100;-1:-1:-1;28494:23:0;28383:100;28520:26;28533:13;28520:10;:26;:::i;:::-;:39;;;;:::i;:::-;28591:1;28570:18;:22;;;28603:16;:20;;;28634:13;:17;;;28684:10;;28676:47;;28494:65;;-1:-1:-1;;;;;;28684:10:0;;28708;;28676:47;28591:1;28676:47;28708:10;28684;28676:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28662:61:0;;-1:-1:-1;;28738:19:0;;;;;:42;;;28779:1;28761:15;:19;28738:42;28734:278;;;28797:46;28810:15;28827;28797:12;:46::i;:::-;28967:18;;28863:137;;;16516:25:1;;;16572:2;16557:18;;16550:34;;;16600:18;;;16593:34;;;;28863:137:0;;;;;;16504:2:1;28863:137:0;;;28734:278;29044:10;;29036:58;;-1:-1:-1;;;;;29044:10:0;;;;29068:21;;29036:58;;;;29068:21;29044:10;29036:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;27351:1751:0:o;8815:98::-;8873:7;8900:5;8904:1;8900;:5;:::i;:::-;8893:12;8815:98;-1:-1:-1;;;8815:98:0:o;8919:::-;8977:7;9004:5;9008:1;9004;:5;:::i;8711:98::-;8769:7;8796:5;8800:1;8796;:5;:::i;26505:472::-;26595:16;;;26609:1;26595:16;;;;;;;;26571:21;;26595:16;;;;;;;;;;-1:-1:-1;26595:16:0;26571:40;;26640:4;26622;26627:1;26622:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;26622:23:0;;;:7;;;;;;;;;;:23;;;;26666:15;;:22;;;-1:-1:-1;;;26666:22:0;;;;:15;;;;;:20;;:22;;;;;26622:7;;26666:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26656:4;26661:1;26656:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;26656:32:0;;;:7;;;;;;;;;:32;26731:15;;26699:62;;26716:4;;26731:15;26749:11;26699:8;:62::i;:::-;26772:15;;:197;;-1:-1:-1;;;26772:197:0;;-1:-1:-1;;;;;26772:15:0;;;;:66;;:197;;26853:11;;26772:15;;26896:4;;26923;;26943:15;;26772:197;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26560:417;26505:472;:::o;26983:362::-;27096:15;;27064:62;;27081:4;;-1:-1:-1;;;;;27096:15:0;27114:11;27064:8;:62::i;:::-;27137:15;;-1:-1:-1;;;;;27137:15:0;:31;27176:9;27209:4;27229:11;27137:15;;27289:7;925:6;;-1:-1:-1;;;;;925:6:0;;852:87;27289:7;27137:200;;;;;;-1:-1:-1;;;;;;27137:200:0;;;-1:-1:-1;;;;;18502:15:1;;;27137:200:0;;;18484:34:1;18534:18;;;18527:34;;;;18577:18;;;18570:34;;;;18620:18;;;18613:34;18684:15;;;18663:19;;;18656:44;27311:15:0;18716:19:1;;;18709:35;18418:19;;27137:200:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;26983:362;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:247::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;1382:9;1369:23;1401:31;1426:5;1401:31;:::i;1884:180::-;1943:6;1996:2;1984:9;1975:7;1971:23;1967:32;1964:52;;;2012:1;2009;2002:12;1964:52;-1:-1:-1;2035:23:1;;1884:180;-1:-1:-1;1884:180:1:o;2069:456::-;2146:6;2154;2162;2215:2;2203:9;2194:7;2190:23;2186:32;2183:52;;;2231:1;2228;2221:12;2183:52;2270:9;2257:23;2289:31;2314:5;2289:31;:::i;:::-;2339:5;-1:-1:-1;2396:2:1;2381:18;;2368:32;2409:33;2368:32;2409:33;:::i;:::-;2069:456;;2461:7;;-1:-1:-1;;;2515:2:1;2500:18;;;;2487:32;;2069:456::o;2927:118::-;3013:5;3006:13;2999:21;2992:5;2989:32;2979:60;;3035:1;3032;3025:12;3050:382;3115:6;3123;3176:2;3164:9;3155:7;3151:23;3147:32;3144:52;;;3192:1;3189;3182:12;3144:52;3231:9;3218:23;3250:31;3275:5;3250:31;:::i;:::-;3300:5;-1:-1:-1;3357:2:1;3342:18;;3329:32;3370:30;3329:32;3370:30;:::i;:::-;3419:7;3409:17;;;3050:382;;;;;:::o;3437:316::-;3514:6;3522;3530;3583:2;3571:9;3562:7;3558:23;3554:32;3551:52;;;3599:1;3596;3589:12;3551:52;-1:-1:-1;;3622:23:1;;;3692:2;3677:18;;3664:32;;-1:-1:-1;3743:2:1;3728:18;;;3715:32;;3437:316;-1:-1:-1;3437:316:1:o;3758:241::-;3814:6;3867:2;3855:9;3846:7;3842:23;3838:32;3835:52;;;3883:1;3880;3873:12;3835:52;3922:9;3909:23;3941:28;3963:5;3941:28;:::i;4004:388::-;4072:6;4080;4133:2;4121:9;4112:7;4108:23;4104:32;4101:52;;;4149:1;4146;4139:12;4101:52;4188:9;4175:23;4207:31;4232:5;4207:31;:::i;:::-;4257:5;-1:-1:-1;4314:2:1;4299:18;;4286:32;4327:33;4286:32;4327:33;:::i;4397:380::-;4476:1;4472:12;;;;4519;;;4540:61;;4594:4;4586:6;4582:17;4572:27;;4540:61;4647:2;4639:6;4636:14;4616:18;4613:38;4610:161;;4693:10;4688:3;4684:20;4681:1;4674:31;4728:4;4725:1;4718:15;4756:4;4753:1;4746:15;4610:161;;4397:380;;;:::o;4782:356::-;4984:2;4966:21;;;5003:18;;;4996:30;5062:34;5057:2;5042:18;;5035:62;5129:2;5114:18;;4782:356::o;5143:127::-;5204:10;5199:3;5195:20;5192:1;5185:31;5235:4;5232:1;5225:15;5259:4;5256:1;5249:15;5275:168;5348:9;;;5379;;5396:15;;;5390:22;;5376:37;5366:71;;5417:18;;:::i;5448:217::-;5488:1;5514;5504:132;;5558:10;5553:3;5549:20;5546:1;5539:31;5593:4;5590:1;5583:15;5621:4;5618:1;5611:15;5504:132;-1:-1:-1;5650:9:1;;5448:217::o;6495:125::-;6560:9;;;6581:10;;;6578:36;;;6594:18;;:::i;6625:184::-;6695:6;6748:2;6736:9;6727:7;6723:23;6719:32;6716:52;;;6764:1;6761;6754:12;6716:52;-1:-1:-1;6787:16:1;;6625:184;-1:-1:-1;6625:184:1:o;7093:245::-;7160:6;7213:2;7201:9;7192:7;7188:23;7184:32;7181:52;;;7229:1;7226;7219:12;7181:52;7261:9;7255:16;7280:28;7302:5;7280:28;:::i;12724:401::-;12926:2;12908:21;;;12965:2;12945:18;;;12938:30;13004:34;12999:2;12984:18;;12977:62;-1:-1:-1;;;13070:2:1;13055:18;;13048:35;13115:3;13100:19;;12724:401::o;13130:399::-;13332:2;13314:21;;;13371:2;13351:18;;;13344:30;13410:34;13405:2;13390:18;;13383:62;-1:-1:-1;;;13476:2:1;13461:18;;13454:33;13519:3;13504:19;;13130:399::o;15774:128::-;15841:9;;;15862:11;;;15859:37;;;15876:18;;:::i;16770:127::-;16831:10;16826:3;16822:20;16819:1;16812:31;16862:4;16859:1;16852:15;16886:4;16883:1;16876:15;16902:251;16972:6;17025:2;17013:9;17004:7;17000:23;16996:32;16993:52;;;17041:1;17038;17031:12;16993:52;17073:9;17067:16;17092:31;17117:5;17092:31;:::i;17158:980::-;17420:4;17468:3;17457:9;17453:19;17499:6;17488:9;17481:25;17525:2;17563:6;17558:2;17547:9;17543:18;17536:34;17606:3;17601:2;17590:9;17586:18;17579:31;17630:6;17665;17659:13;17696:6;17688;17681:22;17734:3;17723:9;17719:19;17712:26;;17773:2;17765:6;17761:15;17747:29;;17794:1;17804:195;17818:6;17815:1;17812:13;17804:195;;;17883:13;;-1:-1:-1;;;;;17879:39:1;17867:52;;17974:15;;;;17939:12;;;;17915:1;17833:9;17804:195;;;-1:-1:-1;;;;;;;18055:32:1;;;;18050:2;18035:18;;18028:60;-1:-1:-1;;;18119:3:1;18104:19;18097:35;18016:3;17158:980;-1:-1:-1;;;17158:980:1:o;18755:306::-;18843:6;18851;18859;18912:2;18900:9;18891:7;18887:23;18883:32;18880:52;;;18928:1;18925;18918:12;18880:52;18957:9;18951:16;18941:26;;19007:2;18996:9;18992:18;18986:25;18976:35;;19051:2;19040:9;19036:18;19030:25;19020:35;;18755:306;;;;;:::o
Swarm Source
ipfs://1c34a611ed8ce676c622040439b4b647f37ba4152974c89f941c52ecae0e7f8a
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.