Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 35 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 17027858 | 685 days ago | IN | 0 ETH | 0.00159613 | ||||
Approve | 17003344 | 689 days ago | IN | 0 ETH | 0.00100207 | ||||
Transfer | 16964226 | 694 days ago | IN | 0 ETH | 0.00192257 | ||||
Transfer | 16964222 | 694 days ago | IN | 0 ETH | 0.00224113 | ||||
Transfer | 16962380 | 695 days ago | IN | 0 ETH | 0.00170788 | ||||
Transfer | 16962376 | 695 days ago | IN | 0 ETH | 0.00172177 | ||||
Transfer | 16953792 | 696 days ago | IN | 0 ETH | 0.0013938 | ||||
Transfer | 16953531 | 696 days ago | IN | 0 ETH | 0.00155271 | ||||
Transfer | 16953518 | 696 days ago | IN | 0 ETH | 0.00148257 | ||||
Transfer | 16947142 | 697 days ago | IN | 0 ETH | 0.00172219 | ||||
Transfer | 16928124 | 699 days ago | IN | 0 ETH | 0.00209541 | ||||
Transfer | 16927844 | 699 days ago | IN | 0 ETH | 0.00246937 | ||||
Transfer | 16927449 | 699 days ago | IN | 0 ETH | 0.00191597 | ||||
Transfer | 16927446 | 699 days ago | IN | 0 ETH | 0.00196747 | ||||
Transfer | 16913552 | 701 days ago | IN | 0 ETH | 0.00143457 | ||||
Transfer | 16913498 | 701 days ago | IN | 0 ETH | 0.00137443 | ||||
Transfer | 16912550 | 702 days ago | IN | 0 ETH | 0.00114071 | ||||
Transfer | 16911374 | 702 days ago | IN | 0 ETH | 0.00109242 | ||||
Transfer | 16908178 | 702 days ago | IN | 0 ETH | 0.00100058 | ||||
Transfer | 16906639 | 702 days ago | IN | 0 ETH | 0.00155776 | ||||
Transfer | 16906292 | 702 days ago | IN | 0 ETH | 0.00168642 | ||||
Transfer | 16905746 | 703 days ago | IN | 0 ETH | 0.0019099 | ||||
Transfer | 16905058 | 703 days ago | IN | 0 ETH | 0.00145732 | ||||
Transfer | 16905049 | 703 days ago | IN | 0 ETH | 0.00167131 | ||||
Transfer | 16904948 | 703 days ago | IN | 0 ETH | 0.00179718 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
MoonRock
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-03-20 */ /************************** ███ ███ ██████ ██ ██ ████ ████ ██ ██ ██ ██ ██ ████ ██ ██████ ████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ****************************/ // SPDX-License-Identifier: MIT pragma solidity 0.8.19; 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; } } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 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 transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); 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 _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); } 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); } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() external virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface IDexRouter { function factory() external pure returns (address); function WETH() external pure returns (address); 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 IDexFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } contract MoonRock is ERC20, Ownable { uint256 public maxBuyAmount; uint256 public maxSellAmount; uint256 public maxWalletAmount; IDexRouter public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool private swapping; uint256 public swapTokensAtAmount; address public marketingAddress; bool public tradingActive = false; bool public swapEnabled = false; uint256 private buyTotalFees; uint256 public buyMarketingFee; uint256 public buyLiquidityFee; uint256 public buyBurnFee; uint256 private sellTotalFees; uint256 public sellMarketingFee; uint256 public sellLiquidityFee; uint256 public sellBurnFee; uint256 public tokensForMarketing; uint256 public tokensForLiquidity; uint256 public tokensForBurn; /******************/ //exlcude from fees and max transaction amount mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) public _isExcludedMaxTransactionAmount; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount mapping (address => bool) public automatedMarketMakerPairs; event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event EnabledTrading(); event ExcludeFromFees(address indexed account, bool isExcluded); event UpdatedMaxBuyAmount(uint256 newAmount); event UpdatedMaxSellAmount(uint256 newAmount); event UpdatedMaxWalletAmount(uint256 newAmount); event UpdatedMarketingAddress(address indexed newWallet); event MaxTransactionExclusion(address _address, bool excluded); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event TransferForeignToken(address token, uint256 amount); constructor() ERC20("MoonRock.finance", "MRF") { address newOwner = msg.sender; // can leave alone if owner is deployer. IDexRouter _uniswapV2Router = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); _excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IDexFactory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 totalSupply = 10000000000 * 1e18; maxBuyAmount = totalSupply * 100 / 100; maxSellAmount = totalSupply * 100 / 100; maxWalletAmount = totalSupply * 100 / 100; swapTokensAtAmount = totalSupply * 100 / 100000; // 0.1% swap amount buyMarketingFee = 4; buyLiquidityFee = 1; buyBurnFee = 1; buyTotalFees = buyMarketingFee + buyLiquidityFee; sellMarketingFee = 4; sellLiquidityFee = 1; sellBurnFee = 1; sellTotalFees = sellMarketingFee + sellLiquidityFee; _excludeFromMaxTransaction(newOwner, true); _excludeFromMaxTransaction(address(this), true); _excludeFromMaxTransaction(address(0xdead), true); excludeFromFees(newOwner, true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); marketingAddress = 0x6ca3A69ACC94e66E72a25f2d9507c9e1c7974638; _createInitialSupply(newOwner, totalSupply); transferOwnership(newOwner); } receive() external payable {} // once enabled, can never be turned off function enableTrading() external onlyOwner { require(!tradingActive, "Cannot reenable trading"); tradingActive = true; swapEnabled = true; emit EnabledTrading(); } function updateMaxBuyAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 25 / 10000)/1e18, "Cannot set maxBuy lower than 0.25%"); maxBuyAmount = newNum * (10**18); emit UpdatedMaxBuyAmount(maxBuyAmount); } function updateMaxSellAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 25 / 10000)/1e18, "Cannot set maxSell lower than 0.25%"); maxSellAmount = newNum * (10**18); emit UpdatedMaxSellAmount(maxSellAmount); } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 25 / 10000)/1e18, "Cannot set maxWallet lower than 0.25%"); maxWalletAmount = newNum * (10**18); emit UpdatedMaxWalletAmount(maxWalletAmount); } // change the minimum amount of tokens to sell from fees function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner { require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply."); require(newAmount <= totalSupply() * 3 / 100, "Swap amount cannot be higher than 3% total supply."); swapTokensAtAmount = newAmount * (10**18); } function _excludeFromMaxTransaction(address updAds, bool isExcluded) private { _isExcludedMaxTransactionAmount[updAds] = isExcluded; emit MaxTransactionExclusion(updAds, isExcluded); } function excludeFromMaxTransaction(address updAds, bool isEx) external onlyOwner { if(!isEx){ require(updAds != uniswapV2Pair, "Cannot remove uniswap pair from max txn"); } _isExcludedMaxTransactionAmount[updAds] = isEx; } function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; _excludeFromMaxTransaction(pair, value); emit SetAutomatedMarketMakerPair(pair, value); } function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _burnFee) external onlyOwner { buyMarketingFee = _marketingFee; buyLiquidityFee = _liquidityFee; buyBurnFee = _burnFee; buyTotalFees = buyMarketingFee + buyLiquidityFee; require((buyTotalFees + buyBurnFee) <= 6,"Total buy fees cannot be greater than 6%"); } function updateSellFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _burnFee) external onlyOwner { sellMarketingFee = _marketingFee; sellLiquidityFee = _liquidityFee; sellBurnFee = _burnFee; sellTotalFees = sellMarketingFee + sellLiquidityFee; require((sellTotalFees + sellBurnFee) <= 6,"Total sell fees cannot be greater than 6%"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function _transfer(address from, address to, uint256 amount) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "amount must be greater than 0"); if (from != owner() && to != owner() && to != address(0) && to != address(0xdead)){ if(!tradingActive){ require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active."); } //when buy if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxBuyAmount, "Buy transfer amount exceeds the max buy."); require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet"); } //when sell else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxSellAmount, "Sell transfer amount exceeds the max sell."); } else if (!_isExcludedMaxTransactionAmount[to] && !_isExcludedMaxTransactionAmount[from]){ require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet"); } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if(canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) { swapping = true; swapBack(); swapping = false; } bool takeFee = true; // if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if(takeFee){ // on sell if (automatedMarketMakerPairs[to] && sellTotalFees > 0){ fees = amount * sellTotalFees /100; tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees; tokensForMarketing += fees * sellMarketingFee / sellTotalFees; tokensForBurn += amount * sellBurnFee / 100; } // on buy else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount * buyTotalFees / 100; tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees; tokensForMarketing += fees * buyMarketingFee / buyTotalFees; tokensForBurn += amount * sellBurnFee / 100; } if(fees > 0){ super._transfer(from, address(this), fees); } super._transfer(from, address(0xdead), tokensForBurn); amount -= (fees + tokensForBurn); tokensForBurn = 0; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable address(owner()), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing; if(contractBalance == 0 || totalTokensToSwap == 0) {return;} if(contractBalance > swapTokensAtAmount * 10){ contractBalance = swapTokensAtAmount * 10; } bool success; // Halve the amount of liquidity tokens uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2; swapTokensForEth(contractBalance - liquidityTokens); uint256 ethBalance = address(this).balance; uint256 ethForLiquidity = ethBalance; uint256 ethForMarketing = ethBalance * tokensForMarketing / (totalTokensToSwap - (tokensForLiquidity/2)); ethForLiquidity -= ethForMarketing; tokensForLiquidity = 0; tokensForMarketing = 0; if(liquidityTokens > 0 && ethForLiquidity > 0){ addLiquidity(liquidityTokens, ethForLiquidity); } (success,) = address(marketingAddress).call{value: address(this).balance}(""); } function transferForeignToken(address _token, address _to) external onlyOwner returns (bool _sent) { require(_token != address(this), "Can't withdraw native tokens"); uint256 _contractBalance = IERC20(_token).balanceOf(address(this)); _sent = IERC20(_token).transfer(_to, _contractBalance); emit TransferForeignToken(_token, _contractBalance); } // withdraw ETH if stuck or someone sends to the address function withdrawStuckETH() external onlyOwner { bool success; (success,) = address(msg.sender).call{value: address(this).balance}(""); } function setMarketingAddress(address _marketingAddress) external onlyOwner { require(_marketingAddress != address(0), "_marketingAddress address cannot be 0"); marketingAddress = payable(_marketingAddress); emit UpdatedMarketingAddress(_marketingAddress); } }
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":[],"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":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedMarketingAddress","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":"_isExcludedMaxTransactionAmount","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":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","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":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","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":[{"internalType":"address","name":"_marketingAddress","type":"address"}],"name":"setMarketingAddress","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":"tokensForBurn","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","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":"_burnFee","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":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c0604052600b805461ffff60a01b191690553480156200001f57600080fd5b506040518060400160405280601081526020016f4d6f6f6e526f636b2e66696e616e636560801b8152506040518060400160405280600381526020016226a92360e91b8152508160039081620000769190620007d4565b506004620000858282620007d4565b50505060006200009a620003cc60201b60201c565b600580546001600160a01b0319166001600160a01b03831690811790915560405191925090600090600080516020620034da833981519152908290a35033737a250d5630b4cf539739df2c5dacb4c659f2488d620000fa816001620003d0565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000145573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200016b9190620008a0565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001df9190620008a0565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200022d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002539190620008a0565b6001600160a01b031660a08190526200026e90600162000433565b6b204fce5e3e250261100000006064620002898282620008e8565b62000295919062000908565b6006556064620002a68282620008e8565b620002b2919062000908565b6007556064620002c38282620008e8565b620002cf919062000908565b600855620186a0620002e3826064620008e8565b620002ef919062000908565b600a556004600d8190556001600e819055600f81905562000310916200092b565b600c556004601181905560016012819055601381905562000331916200092b565b60105562000341836001620003d0565b6200034e306001620003d0565b6200035d61dead6001620003d0565b6200036a8360016200049f565b620003773060016200049f565b6200038661dead60016200049f565b600b80546001600160a01b031916736ca3a69acc94e66e72a25f2d9507c9e1c7974638179055620003b883826200054d565b620003c38362000632565b50505062000941565b3390565b6001600160a01b038216600081815260186020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6001600160a01b0382166000908152601960205260409020805460ff1916821515179055620004638282620003d0565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6005546001600160a01b03163314620004ee5760405162461bcd60e51b81526020600482018190526024820152600080516020620034ba83398151915260448201526064015b60405180910390fd5b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620005a55760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620004e5565b8060026000828254620005b991906200092b565b90915550506001600160a01b03821660009081526020819052604081208054839290620005e89084906200092b565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b031633146200067d5760405162461bcd60e51b81526020600482018190526024820152600080516020620034ba8339815191526044820152606401620004e5565b6001600160a01b038116620006e45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620004e5565b6005546040516001600160a01b03808416921690600080516020620034da83398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200075a57607f821691505b6020821081036200077b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620007cf57600081815260208120601f850160051c81016020861015620007aa5750805b601f850160051c820191505b81811015620007cb57828155600101620007b6565b5050505b505050565b81516001600160401b03811115620007f057620007f06200072f565b620008088162000801845462000745565b8462000781565b602080601f831160018114620008405760008415620008275750858301515b600019600386901b1c1916600185901b178555620007cb565b600085815260208120601f198616915b82811015620008715788860151825594840194600190910190840162000850565b5085821015620008905787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620008b357600080fd5b81516001600160a01b0381168114620008cb57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417620009025762000902620008d2565b92915050565b6000826200092657634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620009025762000902620008d2565b60805160a051612b22620009986000396000818161046001528181610bbd01526110bd01526000818161033501528181612458015281816125110152818161254d015281816125c701526125ee0152612b226000f3fe60806040526004361061028c5760003560e01c80638da5cb5b1161015a578063c0246668116100c1578063e2f456051161007a578063e2f45605146107f1578063e71dc3f514610807578063f11a24d31461081d578063f2fde38b14610833578063f5648a4f14610853578063f63743421461086857600080fd5b8063c02466681461070b578063c17b5b8c1461072b578063c18bc1951461074b578063d257b34f1461076b578063dc3f0d0f1461078b578063dd62ed3e146107ab57600080fd5b8063a5ece94111610113578063a5ece9411461064e578063a9059cbb1461066e578063aa4bde281461068e578063adb873bd146106a4578063b62496f5146106ba578063bbc0c742146106ea57600080fd5b80638da5cb5b146105a5578063906e9dd0146105c357806392136913146105e357806395d89b41146105f95780639a7a23d61461060e578063a457c2d71461062e57600080fd5b806339509351116101fe5780637571336a116101b75780637571336a146105045780637bce5a04146105245780638095d5641461053a5780638366e79a1461055a57806388e765ff1461057a5780638a8c523c1461059057600080fd5b8063395093511461042e57806349bd5a5e1461044e57806366d602ae146104825780636ddd17131461049857806370a08231146104b9578063715018a6146104ef57600080fd5b80631a8145bb116102505780631a8145bb1461038e5780631d777856146103a45780631f3fed8f146103ba57806323b872dd146103d05780632be32b61146103f0578063313ce5671461041257600080fd5b806306fdde0314610298578063095ea7b3146102c357806310d5de53146102f35780631694505e1461032357806318160ddd1461036f57600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b506102ad61087e565b6040516102ba91906126c7565b60405180910390f35b3480156102cf57600080fd5b506102e36102de36600461272d565b610910565b60405190151581526020016102ba565b3480156102ff57600080fd5b506102e361030e366004612759565b60186020526000908152604090205460ff1681565b34801561032f57600080fd5b506103577f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102ba565b34801561037b57600080fd5b506002545b6040519081526020016102ba565b34801561039a57600080fd5b5061038060155481565b3480156103b057600080fd5b5061038060165481565b3480156103c657600080fd5b5061038060145481565b3480156103dc57600080fd5b506102e36103eb36600461277d565b610927565b3480156103fc57600080fd5b5061041061040b3660046127be565b6109d6565b005b34801561041e57600080fd5b50604051601281526020016102ba565b34801561043a57600080fd5b506102e361044936600461272d565b610adc565b34801561045a57600080fd5b506103577f000000000000000000000000000000000000000000000000000000000000000081565b34801561048e57600080fd5b5061038060075481565b3480156104a457600080fd5b50600b546102e390600160a81b900460ff1681565b3480156104c557600080fd5b506103806104d4366004612759565b6001600160a01b031660009081526020819052604090205490565b3480156104fb57600080fd5b50610410610b18565b34801561051057600080fd5b5061041061051f3660046127e5565b610b8c565b34801561053057600080fd5b50610380600d5481565b34801561054657600080fd5b5061041061055536600461281e565b610c77565b34801561056657600080fd5b506102e361057536600461284a565b610d33565b34801561058657600080fd5b5061038060065481565b34801561059c57600080fd5b50610410610ee6565b3480156105b157600080fd5b506005546001600160a01b0316610357565b3480156105cf57600080fd5b506104106105de366004612759565b610faa565b3480156105ef57600080fd5b5061038060115481565b34801561060557600080fd5b506102ad611082565b34801561061a57600080fd5b506104106106293660046127e5565b611091565b34801561063a57600080fd5b506102e361064936600461272d565b611170565b34801561065a57600080fd5b50600b54610357906001600160a01b031681565b34801561067a57600080fd5b506102e361068936600461272d565b611209565b34801561069a57600080fd5b5061038060085481565b3480156106b057600080fd5b5061038060135481565b3480156106c657600080fd5b506102e36106d5366004612759565b60196020526000908152604090205460ff1681565b3480156106f657600080fd5b50600b546102e390600160a01b900460ff1681565b34801561071757600080fd5b506104106107263660046127e5565b611216565b34801561073757600080fd5b5061041061074636600461281e565b61129f565b34801561075757600080fd5b506104106107663660046127be565b611357565b34801561077757600080fd5b506104106107863660046127be565b611459565b34801561079757600080fd5b506104106107a63660046127be565b6115b4565b3480156107b757600080fd5b506103806107c636600461284a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156107fd57600080fd5b50610380600a5481565b34801561081357600080fd5b50610380600f5481565b34801561082957600080fd5b50610380600e5481565b34801561083f57600080fd5b5061041061084e366004612759565b6116b4565b34801561085f57600080fd5b5061041061179f565b34801561087457600080fd5b5061038060125481565b60606003805461088d90612878565b80601f01602080910402602001604051908101604052809291908181526020018280546108b990612878565b80156109065780601f106108db57610100808354040283529160200191610906565b820191906000526020600020905b8154815290600101906020018083116108e957829003601f168201915b5050505050905090565b600061091d338484611816565b5060015b92915050565b600061093484848461193a565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156109be5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6109cb8533858403611816565b506001949350505050565b6005546001600160a01b03163314610a005760405162461bcd60e51b81526004016109b5906128b2565b670de0b6b3a7640000612710610a1560025490565b610a209060196128fd565b610a2a9190612914565b610a349190612914565b811015610a8e5760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420736574206d6178427579206c6f776572207468616e20302e32604482015261352560f01b60648201526084016109b5565b610aa081670de0b6b3a76400006128fd565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161091d918590610b13908690612936565b611816565b6005546001600160a01b03163314610b425760405162461bcd60e51b81526004016109b5906128b2565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610bb65760405162461bcd60e51b81526004016109b5906128b2565b80610c4c577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610c4c5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b60648201526084016109b5565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610ca15760405162461bcd60e51b81526004016109b5906128b2565b600d839055600e829055600f819055610cba8284612936565b600c819055600f54600691610ccf9190612936565b1115610d2e5760405162461bcd60e51b815260206004820152602860248201527f546f74616c2062757920666565732063616e6e6f742062652067726561746572604482015267207468616e20362560c01b60648201526084016109b5565b505050565b6005546000906001600160a01b03163314610d605760405162461bcd60e51b81526004016109b5906128b2565b306001600160a01b03841603610db85760405162461bcd60e51b815260206004820152601c60248201527f43616e2774207769746864726177206e617469766520746f6b656e730000000060448201526064016109b5565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa158015610dff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e239190612949565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af1158015610e76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9a9190612962565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b6005546001600160a01b03163314610f105760405162461bcd60e51b81526004016109b5906128b2565b600b54600160a01b900460ff1615610f6a5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e6700000000000000000060448201526064016109b5565b600b805461ffff60a01b191661010160a01b1790556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb790600090a1565b6005546001600160a01b03163314610fd45760405162461bcd60e51b81526004016109b5906128b2565b6001600160a01b0381166110385760405162461bcd60e51b815260206004820152602560248201527f5f6d61726b6574696e674164647265737320616464726573732063616e6e6f74604482015264020626520360dc1b60648201526084016109b5565b600b80546001600160a01b0319166001600160a01b0383169081179091556040517fd1e7d6a3390dd5008bd1c57798817b9f806e4c417264e7d3d67e42e784dc24a990600090a250565b60606004805461088d90612878565b6005546001600160a01b031633146110bb5760405162461bcd60e51b81526004016109b5906128b2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036111625760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016109b5565b61116c828261207a565b5050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156111f25760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109b5565b6111ff3385858403611816565b5060019392505050565b600061091d33848461193a565b6005546001600160a01b031633146112405760405162461bcd60e51b81526004016109b5906128b2565b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146112c95760405162461bcd60e51b81526004016109b5906128b2565b6011839055601282905560138190556112e28284612936565b60108190556013546006916112f79190612936565b1115610d2e5760405162461bcd60e51b815260206004820152602960248201527f546f74616c2073656c6c20666565732063616e6e6f742062652067726561746560448201526872207468616e20362560b81b60648201526084016109b5565b6005546001600160a01b031633146113815760405162461bcd60e51b81526004016109b5906128b2565b670de0b6b3a764000061271061139660025490565b6113a19060196128fd565b6113ab9190612914565b6113b59190612914565b8110156114125760405162461bcd60e51b815260206004820152602560248201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015264302e32352560d81b60648201526084016109b5565b61142481670de0b6b3a76400006128fd565b60088190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc90602001610ad1565b6005546001600160a01b031633146114835760405162461bcd60e51b81526004016109b5906128b2565b620186a061149060025490565b61149b9060016128fd565b6114a59190612914565b8110156115125760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b60648201526084016109b5565b606461151d60025490565b6115289060036128fd565b6115329190612914565b81111561159c5760405162461bcd60e51b815260206004820152603260248201527f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160448201527137101992903a37ba30b61039bab838363c9760711b60648201526084016109b5565b6115ae81670de0b6b3a76400006128fd565b600a5550565b6005546001600160a01b031633146115de5760405162461bcd60e51b81526004016109b5906128b2565b670de0b6b3a76400006127106115f360025490565b6115fe9060196128fd565b6116089190612914565b6116129190612914565b81101561166d5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f7420736574206d617853656c6c206c6f776572207468616e20302e60448201526232352560e81b60648201526084016109b5565b61167f81670de0b6b3a76400006128fd565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610ad1565b6005546001600160a01b031633146116de5760405162461bcd60e51b81526004016109b5906128b2565b6001600160a01b0381166117435760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109b5565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146117c95760405162461bcd60e51b81526004016109b5906128b2565b604051600090339047908381818185875af1925050503d806000811461180b576040519150601f19603f3d011682016040523d82523d6000602084013e611810565b606091505b50505050565b6001600160a01b0383166118785760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109b5565b6001600160a01b0382166118d95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109b5565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166119605760405162461bcd60e51b81526004016109b59061297f565b6001600160a01b0382166119865760405162461bcd60e51b81526004016109b5906129c4565b600081116119d65760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e203000000060448201526064016109b5565b6005546001600160a01b03848116911614801590611a0257506005546001600160a01b03838116911614155b8015611a1657506001600160a01b03821615155b8015611a2d57506001600160a01b03821661dead14155b15611d4557600b54600160a01b900460ff16611ac7576001600160a01b03831660009081526017602052604090205460ff1680611a8257506001600160a01b03821660009081526017602052604090205460ff165b611ac75760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016109b5565b6001600160a01b03831660009081526019602052604090205460ff168015611b0857506001600160a01b03821660009081526018602052604090205460ff16155b15611be457600654811115611b705760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b60648201526084016109b5565b6008546001600160a01b038316600090815260208190526040902054611b969083612936565b1115611bdf5760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b60448201526064016109b5565b611d45565b6001600160a01b03821660009081526019602052604090205460ff168015611c2557506001600160a01b03831660009081526018602052604090205460ff16155b15611c8f57600754811115611bdf5760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b60648201526084016109b5565b6001600160a01b03821660009081526018602052604090205460ff16158015611cd157506001600160a01b03831660009081526018602052604090205460ff16155b15611d45576008546001600160a01b038316600090815260208190526040902054611cfc9083612936565b1115611d455760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b60448201526064016109b5565b30600090815260208190526040902054600a5481108015908190611d725750600b54600160a81b900460ff165b8015611d81575060095460ff16155b8015611da657506001600160a01b03851660009081526019602052604090205460ff16155b8015611dcb57506001600160a01b03851660009081526017602052604090205460ff16155b8015611df057506001600160a01b03841660009081526017602052604090205460ff16155b15611e15576009805460ff19166001179055611e0a6120e4565b6009805460ff191690555b6001600160a01b03851660009081526017602052604090205460019060ff1680611e5757506001600160a01b03851660009081526017602052604090205460ff165b15611e60575060005b60008115612066576001600160a01b03861660009081526019602052604090205460ff168015611e9257506000601054115b15611f4a57606460105486611ea791906128fd565b611eb19190612914565b905060105460125482611ec491906128fd565b611ece9190612914565b60156000828254611edf9190612936565b9091555050601054601154611ef490836128fd565b611efe9190612914565b60146000828254611f0f9190612936565b9091555050601354606490611f2490876128fd565b611f2e9190612914565b60166000828254611f3f9190612936565b909155506120279050565b6001600160a01b03871660009081526019602052604090205460ff168015611f7457506000600c54115b15612027576064600c5486611f8991906128fd565b611f939190612914565b9050600c54600e5482611fa691906128fd565b611fb09190612914565b60156000828254611fc19190612936565b9091555050600c54600d54611fd690836128fd565b611fe09190612914565b60146000828254611ff19190612936565b909155505060135460649061200690876128fd565b6120109190612914565b601660008282546120219190612936565b90915550505b801561203857612038873083612249565b6120478761dead601654612249565b6016546120549082612936565b61205e9086612a07565b600060165594505b612071878787612249565b50505050505050565b6001600160a01b0382166000908152601960205260409020805460ff19168215151790556120a8828261239e565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b30600090815260208190526040812054905060006014546015546121089190612936565b9050811580612115575080155b1561211e575050565b600a805461212b916128fd565b82111561214257600a805461213f916128fd565b91505b6000806002836015548661215691906128fd565b6121609190612914565b61216a9190612914565b905061217e6121798286612a07565b612401565b6015544790819060009061219490600290612914565b61219e9087612a07565b6014546121ab90856128fd565b6121b59190612914565b90506121c18183612a07565b60006015819055601455915083158015906121dc5750600082115b156121eb576121eb84836125c1565b600b546040516001600160a01b03909116904790600081818185875af1925050503d8060008114612238576040519150601f19603f3d011682016040523d82523d6000602084013e61223d565b606091505b50505050505050505050565b6001600160a01b03831661226f5760405162461bcd60e51b81526004016109b59061297f565b6001600160a01b0382166122955760405162461bcd60e51b81526004016109b5906129c4565b6001600160a01b0383166000908152602081905260409020548181101561230d5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109b5565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612344908490612936565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161239091815260200190565b60405180910390a350505050565b6001600160a01b038216600081815260186020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061243657612436612a1a565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d89190612a30565b816001815181106124eb576124eb612a1a565b60200260200101906001600160a01b031690816001600160a01b031681525050612536307f000000000000000000000000000000000000000000000000000000000000000084611816565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac9479061258b908590600090869030904290600401612a4d565b600060405180830381600087803b1580156125a557600080fd5b505af11580156125b9573d6000803e3d6000fd5b505050505050565b6125ec307f000000000000000000000000000000000000000000000000000000000000000084611816565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d7198230856000806126336005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af115801561269b573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126c09190612abe565b5050505050565b600060208083528351808285015260005b818110156126f4578581018301518582016040015282016126d8565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461272a57600080fd5b50565b6000806040838503121561274057600080fd5b823561274b81612715565b946020939093013593505050565b60006020828403121561276b57600080fd5b813561277681612715565b9392505050565b60008060006060848603121561279257600080fd5b833561279d81612715565b925060208401356127ad81612715565b929592945050506040919091013590565b6000602082840312156127d057600080fd5b5035919050565b801515811461272a57600080fd5b600080604083850312156127f857600080fd5b823561280381612715565b91506020830135612813816127d7565b809150509250929050565b60008060006060848603121561283357600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561285d57600080fd5b823561286881612715565b9150602083013561281381612715565b600181811c9082168061288c57607f821691505b6020821081036128ac57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610921576109216128e7565b60008261293157634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610921576109216128e7565b60006020828403121561295b57600080fd5b5051919050565b60006020828403121561297457600080fd5b8151612776816127d7565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610921576109216128e7565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612a4257600080fd5b815161277681612715565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612a9d5784516001600160a01b031683529383019391830191600101612a78565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612ad357600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212207115c90ff705c9df90da9afaf27a708ce7e5c0429abd2abcb4eb8bdf7e1a7c4564736f6c634300081300334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
Deployed Bytecode
0x60806040526004361061028c5760003560e01c80638da5cb5b1161015a578063c0246668116100c1578063e2f456051161007a578063e2f45605146107f1578063e71dc3f514610807578063f11a24d31461081d578063f2fde38b14610833578063f5648a4f14610853578063f63743421461086857600080fd5b8063c02466681461070b578063c17b5b8c1461072b578063c18bc1951461074b578063d257b34f1461076b578063dc3f0d0f1461078b578063dd62ed3e146107ab57600080fd5b8063a5ece94111610113578063a5ece9411461064e578063a9059cbb1461066e578063aa4bde281461068e578063adb873bd146106a4578063b62496f5146106ba578063bbc0c742146106ea57600080fd5b80638da5cb5b146105a5578063906e9dd0146105c357806392136913146105e357806395d89b41146105f95780639a7a23d61461060e578063a457c2d71461062e57600080fd5b806339509351116101fe5780637571336a116101b75780637571336a146105045780637bce5a04146105245780638095d5641461053a5780638366e79a1461055a57806388e765ff1461057a5780638a8c523c1461059057600080fd5b8063395093511461042e57806349bd5a5e1461044e57806366d602ae146104825780636ddd17131461049857806370a08231146104b9578063715018a6146104ef57600080fd5b80631a8145bb116102505780631a8145bb1461038e5780631d777856146103a45780631f3fed8f146103ba57806323b872dd146103d05780632be32b61146103f0578063313ce5671461041257600080fd5b806306fdde0314610298578063095ea7b3146102c357806310d5de53146102f35780631694505e1461032357806318160ddd1461036f57600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b506102ad61087e565b6040516102ba91906126c7565b60405180910390f35b3480156102cf57600080fd5b506102e36102de36600461272d565b610910565b60405190151581526020016102ba565b3480156102ff57600080fd5b506102e361030e366004612759565b60186020526000908152604090205460ff1681565b34801561032f57600080fd5b506103577f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016102ba565b34801561037b57600080fd5b506002545b6040519081526020016102ba565b34801561039a57600080fd5b5061038060155481565b3480156103b057600080fd5b5061038060165481565b3480156103c657600080fd5b5061038060145481565b3480156103dc57600080fd5b506102e36103eb36600461277d565b610927565b3480156103fc57600080fd5b5061041061040b3660046127be565b6109d6565b005b34801561041e57600080fd5b50604051601281526020016102ba565b34801561043a57600080fd5b506102e361044936600461272d565b610adc565b34801561045a57600080fd5b506103577f000000000000000000000000201c907aea9cf6ba0a063c1b741780ecb782949081565b34801561048e57600080fd5b5061038060075481565b3480156104a457600080fd5b50600b546102e390600160a81b900460ff1681565b3480156104c557600080fd5b506103806104d4366004612759565b6001600160a01b031660009081526020819052604090205490565b3480156104fb57600080fd5b50610410610b18565b34801561051057600080fd5b5061041061051f3660046127e5565b610b8c565b34801561053057600080fd5b50610380600d5481565b34801561054657600080fd5b5061041061055536600461281e565b610c77565b34801561056657600080fd5b506102e361057536600461284a565b610d33565b34801561058657600080fd5b5061038060065481565b34801561059c57600080fd5b50610410610ee6565b3480156105b157600080fd5b506005546001600160a01b0316610357565b3480156105cf57600080fd5b506104106105de366004612759565b610faa565b3480156105ef57600080fd5b5061038060115481565b34801561060557600080fd5b506102ad611082565b34801561061a57600080fd5b506104106106293660046127e5565b611091565b34801561063a57600080fd5b506102e361064936600461272d565b611170565b34801561065a57600080fd5b50600b54610357906001600160a01b031681565b34801561067a57600080fd5b506102e361068936600461272d565b611209565b34801561069a57600080fd5b5061038060085481565b3480156106b057600080fd5b5061038060135481565b3480156106c657600080fd5b506102e36106d5366004612759565b60196020526000908152604090205460ff1681565b3480156106f657600080fd5b50600b546102e390600160a01b900460ff1681565b34801561071757600080fd5b506104106107263660046127e5565b611216565b34801561073757600080fd5b5061041061074636600461281e565b61129f565b34801561075757600080fd5b506104106107663660046127be565b611357565b34801561077757600080fd5b506104106107863660046127be565b611459565b34801561079757600080fd5b506104106107a63660046127be565b6115b4565b3480156107b757600080fd5b506103806107c636600461284a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156107fd57600080fd5b50610380600a5481565b34801561081357600080fd5b50610380600f5481565b34801561082957600080fd5b50610380600e5481565b34801561083f57600080fd5b5061041061084e366004612759565b6116b4565b34801561085f57600080fd5b5061041061179f565b34801561087457600080fd5b5061038060125481565b60606003805461088d90612878565b80601f01602080910402602001604051908101604052809291908181526020018280546108b990612878565b80156109065780601f106108db57610100808354040283529160200191610906565b820191906000526020600020905b8154815290600101906020018083116108e957829003601f168201915b5050505050905090565b600061091d338484611816565b5060015b92915050565b600061093484848461193a565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156109be5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6109cb8533858403611816565b506001949350505050565b6005546001600160a01b03163314610a005760405162461bcd60e51b81526004016109b5906128b2565b670de0b6b3a7640000612710610a1560025490565b610a209060196128fd565b610a2a9190612914565b610a349190612914565b811015610a8e5760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420736574206d6178427579206c6f776572207468616e20302e32604482015261352560f01b60648201526084016109b5565b610aa081670de0b6b3a76400006128fd565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161091d918590610b13908690612936565b611816565b6005546001600160a01b03163314610b425760405162461bcd60e51b81526004016109b5906128b2565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610bb65760405162461bcd60e51b81526004016109b5906128b2565b80610c4c577f000000000000000000000000201c907aea9cf6ba0a063c1b741780ecb78294906001600160a01b0316826001600160a01b031603610c4c5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b60648201526084016109b5565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610ca15760405162461bcd60e51b81526004016109b5906128b2565b600d839055600e829055600f819055610cba8284612936565b600c819055600f54600691610ccf9190612936565b1115610d2e5760405162461bcd60e51b815260206004820152602860248201527f546f74616c2062757920666565732063616e6e6f742062652067726561746572604482015267207468616e20362560c01b60648201526084016109b5565b505050565b6005546000906001600160a01b03163314610d605760405162461bcd60e51b81526004016109b5906128b2565b306001600160a01b03841603610db85760405162461bcd60e51b815260206004820152601c60248201527f43616e2774207769746864726177206e617469766520746f6b656e730000000060448201526064016109b5565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa158015610dff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e239190612949565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af1158015610e76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9a9190612962565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b6005546001600160a01b03163314610f105760405162461bcd60e51b81526004016109b5906128b2565b600b54600160a01b900460ff1615610f6a5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e6700000000000000000060448201526064016109b5565b600b805461ffff60a01b191661010160a01b1790556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb790600090a1565b6005546001600160a01b03163314610fd45760405162461bcd60e51b81526004016109b5906128b2565b6001600160a01b0381166110385760405162461bcd60e51b815260206004820152602560248201527f5f6d61726b6574696e674164647265737320616464726573732063616e6e6f74604482015264020626520360dc1b60648201526084016109b5565b600b80546001600160a01b0319166001600160a01b0383169081179091556040517fd1e7d6a3390dd5008bd1c57798817b9f806e4c417264e7d3d67e42e784dc24a990600090a250565b60606004805461088d90612878565b6005546001600160a01b031633146110bb5760405162461bcd60e51b81526004016109b5906128b2565b7f000000000000000000000000201c907aea9cf6ba0a063c1b741780ecb78294906001600160a01b0316826001600160a01b0316036111625760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016109b5565b61116c828261207a565b5050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156111f25760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109b5565b6111ff3385858403611816565b5060019392505050565b600061091d33848461193a565b6005546001600160a01b031633146112405760405162461bcd60e51b81526004016109b5906128b2565b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146112c95760405162461bcd60e51b81526004016109b5906128b2565b6011839055601282905560138190556112e28284612936565b60108190556013546006916112f79190612936565b1115610d2e5760405162461bcd60e51b815260206004820152602960248201527f546f74616c2073656c6c20666565732063616e6e6f742062652067726561746560448201526872207468616e20362560b81b60648201526084016109b5565b6005546001600160a01b031633146113815760405162461bcd60e51b81526004016109b5906128b2565b670de0b6b3a764000061271061139660025490565b6113a19060196128fd565b6113ab9190612914565b6113b59190612914565b8110156114125760405162461bcd60e51b815260206004820152602560248201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015264302e32352560d81b60648201526084016109b5565b61142481670de0b6b3a76400006128fd565b60088190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc90602001610ad1565b6005546001600160a01b031633146114835760405162461bcd60e51b81526004016109b5906128b2565b620186a061149060025490565b61149b9060016128fd565b6114a59190612914565b8110156115125760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b60648201526084016109b5565b606461151d60025490565b6115289060036128fd565b6115329190612914565b81111561159c5760405162461bcd60e51b815260206004820152603260248201527f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160448201527137101992903a37ba30b61039bab838363c9760711b60648201526084016109b5565b6115ae81670de0b6b3a76400006128fd565b600a5550565b6005546001600160a01b031633146115de5760405162461bcd60e51b81526004016109b5906128b2565b670de0b6b3a76400006127106115f360025490565b6115fe9060196128fd565b6116089190612914565b6116129190612914565b81101561166d5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f7420736574206d617853656c6c206c6f776572207468616e20302e60448201526232352560e81b60648201526084016109b5565b61167f81670de0b6b3a76400006128fd565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610ad1565b6005546001600160a01b031633146116de5760405162461bcd60e51b81526004016109b5906128b2565b6001600160a01b0381166117435760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109b5565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146117c95760405162461bcd60e51b81526004016109b5906128b2565b604051600090339047908381818185875af1925050503d806000811461180b576040519150601f19603f3d011682016040523d82523d6000602084013e611810565b606091505b50505050565b6001600160a01b0383166118785760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109b5565b6001600160a01b0382166118d95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109b5565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166119605760405162461bcd60e51b81526004016109b59061297f565b6001600160a01b0382166119865760405162461bcd60e51b81526004016109b5906129c4565b600081116119d65760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e203000000060448201526064016109b5565b6005546001600160a01b03848116911614801590611a0257506005546001600160a01b03838116911614155b8015611a1657506001600160a01b03821615155b8015611a2d57506001600160a01b03821661dead14155b15611d4557600b54600160a01b900460ff16611ac7576001600160a01b03831660009081526017602052604090205460ff1680611a8257506001600160a01b03821660009081526017602052604090205460ff165b611ac75760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016109b5565b6001600160a01b03831660009081526019602052604090205460ff168015611b0857506001600160a01b03821660009081526018602052604090205460ff16155b15611be457600654811115611b705760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b60648201526084016109b5565b6008546001600160a01b038316600090815260208190526040902054611b969083612936565b1115611bdf5760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b60448201526064016109b5565b611d45565b6001600160a01b03821660009081526019602052604090205460ff168015611c2557506001600160a01b03831660009081526018602052604090205460ff16155b15611c8f57600754811115611bdf5760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b60648201526084016109b5565b6001600160a01b03821660009081526018602052604090205460ff16158015611cd157506001600160a01b03831660009081526018602052604090205460ff16155b15611d45576008546001600160a01b038316600090815260208190526040902054611cfc9083612936565b1115611d455760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b60448201526064016109b5565b30600090815260208190526040902054600a5481108015908190611d725750600b54600160a81b900460ff165b8015611d81575060095460ff16155b8015611da657506001600160a01b03851660009081526019602052604090205460ff16155b8015611dcb57506001600160a01b03851660009081526017602052604090205460ff16155b8015611df057506001600160a01b03841660009081526017602052604090205460ff16155b15611e15576009805460ff19166001179055611e0a6120e4565b6009805460ff191690555b6001600160a01b03851660009081526017602052604090205460019060ff1680611e5757506001600160a01b03851660009081526017602052604090205460ff165b15611e60575060005b60008115612066576001600160a01b03861660009081526019602052604090205460ff168015611e9257506000601054115b15611f4a57606460105486611ea791906128fd565b611eb19190612914565b905060105460125482611ec491906128fd565b611ece9190612914565b60156000828254611edf9190612936565b9091555050601054601154611ef490836128fd565b611efe9190612914565b60146000828254611f0f9190612936565b9091555050601354606490611f2490876128fd565b611f2e9190612914565b60166000828254611f3f9190612936565b909155506120279050565b6001600160a01b03871660009081526019602052604090205460ff168015611f7457506000600c54115b15612027576064600c5486611f8991906128fd565b611f939190612914565b9050600c54600e5482611fa691906128fd565b611fb09190612914565b60156000828254611fc19190612936565b9091555050600c54600d54611fd690836128fd565b611fe09190612914565b60146000828254611ff19190612936565b909155505060135460649061200690876128fd565b6120109190612914565b601660008282546120219190612936565b90915550505b801561203857612038873083612249565b6120478761dead601654612249565b6016546120549082612936565b61205e9086612a07565b600060165594505b612071878787612249565b50505050505050565b6001600160a01b0382166000908152601960205260409020805460ff19168215151790556120a8828261239e565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b30600090815260208190526040812054905060006014546015546121089190612936565b9050811580612115575080155b1561211e575050565b600a805461212b916128fd565b82111561214257600a805461213f916128fd565b91505b6000806002836015548661215691906128fd565b6121609190612914565b61216a9190612914565b905061217e6121798286612a07565b612401565b6015544790819060009061219490600290612914565b61219e9087612a07565b6014546121ab90856128fd565b6121b59190612914565b90506121c18183612a07565b60006015819055601455915083158015906121dc5750600082115b156121eb576121eb84836125c1565b600b546040516001600160a01b03909116904790600081818185875af1925050503d8060008114612238576040519150601f19603f3d011682016040523d82523d6000602084013e61223d565b606091505b50505050505050505050565b6001600160a01b03831661226f5760405162461bcd60e51b81526004016109b59061297f565b6001600160a01b0382166122955760405162461bcd60e51b81526004016109b5906129c4565b6001600160a01b0383166000908152602081905260409020548181101561230d5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109b5565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612344908490612936565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161239091815260200190565b60405180910390a350505050565b6001600160a01b038216600081815260186020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061243657612436612a1a565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d89190612a30565b816001815181106124eb576124eb612a1a565b60200260200101906001600160a01b031690816001600160a01b031681525050612536307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611816565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac9479061258b908590600090869030904290600401612a4d565b600060405180830381600087803b1580156125a557600080fd5b505af11580156125b9573d6000803e3d6000fd5b505050505050565b6125ec307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611816565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d7198230856000806126336005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af115801561269b573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126c09190612abe565b5050505050565b600060208083528351808285015260005b818110156126f4578581018301518582016040015282016126d8565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461272a57600080fd5b50565b6000806040838503121561274057600080fd5b823561274b81612715565b946020939093013593505050565b60006020828403121561276b57600080fd5b813561277681612715565b9392505050565b60008060006060848603121561279257600080fd5b833561279d81612715565b925060208401356127ad81612715565b929592945050506040919091013590565b6000602082840312156127d057600080fd5b5035919050565b801515811461272a57600080fd5b600080604083850312156127f857600080fd5b823561280381612715565b91506020830135612813816127d7565b809150509250929050565b60008060006060848603121561283357600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561285d57600080fd5b823561286881612715565b9150602083013561281381612715565b600181811c9082168061288c57607f821691505b6020821081036128ac57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610921576109216128e7565b60008261293157634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610921576109216128e7565b60006020828403121561295b57600080fd5b5051919050565b60006020828403121561297457600080fd5b8151612776816127d7565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610921576109216128e7565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612a4257600080fd5b815161277681612715565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612a9d5784516001600160a01b031683529383019391830191600101612a78565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612ad357600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212207115c90ff705c9df90da9afaf27a708ce7e5c0429abd2abcb4eb8bdf7e1a7c4564736f6c63430008130033
Deployed Bytecode Sourcemap
9678:13851:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4316:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5230:169;;;;;;;;;;-1:-1:-1;5230:169:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;5230:169:0;1023:187:1;10689:64:0;;;;;;;;;;-1:-1:-1;10689:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9831:43;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1649:32:1;;;1631:51;;1619:2;1604:18;9831:43:0;1467:221:1;4637:108:0;;;;;;;;;;-1:-1:-1;4725:12:0;;4637:108;;;1839:25:1;;;1827:2;1812:18;4637:108:0;1693:177:1;10466:33:0;;;;;;;;;;;;;;;;10506:28;;;;;;;;;;;;;;;;10426:33;;;;;;;;;;;;;;;;5407:492;;;;;;;;;;-1:-1:-1;5407:492:0;;;;;:::i;:::-;;:::i;13625:264::-;;;;;;;;;;-1:-1:-1;13625:264:0;;;;;:::i;:::-;;:::i;:::-;;4536:93;;;;;;;;;;-1:-1:-1;4536:93:0;;4619:2;2663:36:1;;2651:2;2636:18;4536:93:0;2521:184:1;5907:215:0;;;;;;;;;;-1:-1:-1;5907:215:0;;;;;:::i;:::-;;:::i;9881:38::-;;;;;;;;;;;;;;;9757:28;;;;;;;;;;;;;;;;10082:31;;;;;;;;;;-1:-1:-1;10082:31:0;;;;-1:-1:-1;;;10082:31:0;;;;;;4753:127;;;;;;;;;;-1:-1:-1;4753:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;4854:18:0;4827:7;4854:18;;;;;;;;;;;;4753:127;8397:150;;;;;;;;;;;;;:::i;15114:267::-;;;;;;;;;;-1:-1:-1;15114:267:0;;;;;:::i;:::-;;:::i;10167:30::-;;;;;;;;;;;;;;;;15899:384;;;;;;;;;;-1:-1:-1;15899:384:0;;;;;:::i;:::-;;:::i;22611:386::-;;;;;;;;;;-1:-1:-1;22611:386:0;;;;;:::i;:::-;;:::i;9723:27::-;;;;;;;;;;;;;;;;13403:205;;;;;;;;;;;;;:::i;8183:79::-;;;;;;;;;;-1:-1:-1;8248:6:0;;-1:-1:-1;;;;;8248:6:0;8183:79;;23235:289;;;;;;;;;;-1:-1:-1;23235:289:0;;;;;:::i;:::-;;:::i;10313:31::-;;;;;;;;;;;;;;;;4424:104;;;;;;;;;;;;;:::i;15389:246::-;;;;;;;;;;-1:-1:-1;15389:246:0;;;;;:::i;:::-;;:::i;6130:413::-;;;;;;;;;;-1:-1:-1;6130:413:0;;;;;:::i;:::-;;:::i;9998:31::-;;;;;;;;;;-1:-1:-1;9998:31:0;;;;-1:-1:-1;;;;;9998:31:0;;;4888:175;;;;;;;;;;-1:-1:-1;4888:175:0;;;;;:::i;:::-;;:::i;9792:30::-;;;;;;;;;;;;;;;;10389:26;;;;;;;;;;;;;;;;10913:58;;;;;;;;;;-1:-1:-1;10913:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10042:33;;;;;;;;;;-1:-1:-1;10042:33:0;;;;-1:-1:-1;;;10042:33:0;;;;;;16693:182;;;;;;;;;;-1:-1:-1;16693:182:0;;;;;:::i;:::-;;:::i;16291:394::-;;;;;;;;;;-1:-1:-1;16291:394:0;;;;;:::i;:::-;;:::i;14178:279::-;;;;;;;;;;-1:-1:-1;14178:279:0;;;;;:::i;:::-;;:::i;14527:356::-;;;;;;;;;;-1:-1:-1;14527:356:0;;;;;:::i;:::-;;:::i;13901:269::-;;;;;;;;;;-1:-1:-1;13901:269:0;;;;;:::i;:::-;;:::i;5071:151::-;;;;;;;;;;-1:-1:-1;5071:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;5187:18:0;;;5160:7;5187:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5071:151;9956:33;;;;;;;;;;;;;;;;10241:25;;;;;;;;;;;;;;;;10204:30;;;;;;;;;;;;;;;;8555:244;;;;;;;;;;-1:-1:-1;8555:244:0;;;;;:::i;:::-;;:::i;23067:160::-;;;;;;;;;;;;;:::i;10351:31::-;;;;;;;;;;;;;;;;4316:100;4370:13;4403:5;4396:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4316:100;:::o;5230:169::-;5313:4;5330:39;663:10;5353:7;5362:6;5330:8;:39::i;:::-;-1:-1:-1;5387:4:0;5230:169;;;;;:::o;5407:492::-;5547:4;5564:36;5574:6;5582:9;5593:6;5564:9;:36::i;:::-;-1:-1:-1;;;;;5640:19:0;;5613:24;5640:19;;;:11;:19;;;;;;;;663:10;5640:33;;;;;;;;5692:26;;;;5684:79;;;;-1:-1:-1;;;5684:79:0;;4729:2:1;5684:79:0;;;4711:21:1;4768:2;4748:18;;;4741:30;4807:34;4787:18;;;4780:62;-1:-1:-1;;;4858:18:1;;;4851:38;4906:19;;5684:79:0;;;;;;;;;5799:57;5808:6;663:10;5849:6;5830:16;:25;5799:8;:57::i;:::-;-1:-1:-1;5887:4:0;;5407:492;-1:-1:-1;;;;5407:492:0:o;13625:264::-;8310:6;;-1:-1:-1;;;;;8310:6:0;663:10;8310:22;8302:67;;;;-1:-1:-1;;;8302:67:0;;;;;;;:::i;:::-;13746:4:::1;13739:5;13718:13;4725:12:::0;;;4637:108;13718:13:::1;:18;::::0;13734:2:::1;13718:18;:::i;:::-;:26;;;;:::i;:::-;13717:33;;;;:::i;:::-;13707:6;:43;;13699:90;;;::::0;-1:-1:-1;;;13699:90:0;;6026:2:1;13699:90:0::1;::::0;::::1;6008:21:1::0;6065:2;6045:18;;;6038:30;6104:34;6084:18;;;6077:62;-1:-1:-1;;;6155:18:1;;;6148:32;6197:19;;13699:90:0::1;5824:398:1::0;13699:90:0::1;13815:17;:6:::0;13825::::1;13815:17;:::i;:::-;13800:12;:32:::0;;;13848:33:::1;::::0;1839:25:1;;;13848:33:0::1;::::0;1827:2:1;1812:18;13848:33:0::1;;;;;;;;13625:264:::0;:::o;5907:215::-;663:10;5995:4;6044:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6044:34:0;;;;;;;;;;5995:4;;6012:80;;6035:7;;6044:47;;6081:10;;6044:47;:::i;:::-;6012:8;:80::i;8397:150::-;8310:6;;-1:-1:-1;;;;;8310:6:0;663:10;8310:22;8302:67;;;;-1:-1:-1;;;8302:67:0;;;;;;;:::i;:::-;8490:6:::1;::::0;8469:40:::1;::::0;8506:1:::1;::::0;-1:-1:-1;;;;;8490:6:0::1;::::0;8469:40:::1;::::0;8506:1;;8469:40:::1;8520:6;:19:::0;;-1:-1:-1;;;;;;8520:19:0::1;::::0;;8397:150::o;15114:267::-;8310:6;;-1:-1:-1;;;;;8310:6:0;663:10;8310:22;8302:67;;;;-1:-1:-1;;;8302:67:0;;;;;;;:::i;:::-;15210:4:::1;15206:111;;15248:13;-1:-1:-1::0;;;;;15238:23:0::1;:6;-1:-1:-1::0;;;;;15238:23:0::1;::::0;15230:75:::1;;;::::0;-1:-1:-1;;;15230:75:0;;6559:2:1;15230:75:0::1;::::0;::::1;6541:21:1::0;6598:2;6578:18;;;6571:30;6637:34;6617:18;;;6610:62;-1:-1:-1;;;6688:18:1;;;6681:37;6735:19;;15230:75:0::1;6357:403:1::0;15230:75:0::1;-1:-1:-1::0;;;;;15327:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;15327:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15114:267::o;15899:384::-;8310:6;;-1:-1:-1;;;;;8310:6:0;663:10;8310:22;8302:67;;;;-1:-1:-1;;;8302:67:0;;;;;;;:::i;:::-;16016:15:::1;:31:::0;;;16058:15:::1;:31:::0;;;16100:10:::1;:21:::0;;;16147:33:::1;16076:13:::0;16034;16147:33:::1;:::i;:::-;16132:12;:48:::0;;;16215:10:::1;::::0;16230:1:::1;::::0;16200:25:::1;::::0;16215:10;16200:25:::1;:::i;:::-;16199:32;;16191:84;;;::::0;-1:-1:-1;;;16191:84:0;;6967:2:1;16191:84:0::1;::::0;::::1;6949:21:1::0;7006:2;6986:18;;;6979:30;7045:34;7025:18;;;7018:62;-1:-1:-1;;;7096:18:1;;;7089:38;7144:19;;16191:84:0::1;6765:404:1::0;16191:84:0::1;15899:384:::0;;;:::o;22611:386::-;8310:6;;22698:10;;-1:-1:-1;;;;;8310:6:0;663:10;8310:22;8302:67;;;;-1:-1:-1;;;8302:67:0;;;;;;;:::i;:::-;22747:4:::1;-1:-1:-1::0;;;;;22729:23:0;::::1;::::0;22721:64:::1;;;::::0;-1:-1:-1;;;22721:64:0;;7376:2:1;22721:64:0::1;::::0;::::1;7358:21:1::0;7415:2;7395:18;;;7388:30;7454;7434:18;;;7427:58;7502:18;;22721:64:0::1;7174:352:1::0;22721:64:0::1;22823:39;::::0;-1:-1:-1;;;22823:39:0;;22856:4:::1;22823:39;::::0;::::1;1631:51:1::0;22796:24:0::1;::::0;-1:-1:-1;;;;;22823:24:0;::::1;::::0;::::1;::::0;1604:18:1;;22823:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22881:46;::::0;-1:-1:-1;;;22881:46:0;;-1:-1:-1;;;;;7912:32:1;;;22881:46:0::1;::::0;::::1;7894:51:1::0;7961:18;;;7954:34;;;22796:66:0;;-1:-1:-1;22881:23:0;;::::1;::::0;::::1;::::0;7867:18:1;;22881:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22943;::::0;;-1:-1:-1;;;;;7912:32:1;;7894:51;;7976:2;7961:18;;7954:34;;;22873:54:0;;-1:-1:-1;22943:46:0::1;::::0;7867:18:1;22943:46:0::1;;;;;;;22710:287;22611:386:::0;;;;:::o;13403:205::-;8310:6;;-1:-1:-1;;;;;8310:6:0;663:10;8310:22;8302:67;;;;-1:-1:-1;;;8302:67:0;;;;;;;:::i;:::-;13467:13:::1;::::0;-1:-1:-1;;;13467:13:0;::::1;;;13466:14;13458:50;;;::::0;-1:-1:-1;;;13458:50:0;;8451:2:1;13458:50:0::1;::::0;::::1;8433:21:1::0;8490:2;8470:18;;;8463:30;8529:25;8509:18;;;8502:53;8572:18;;13458:50:0::1;8249:347:1::0;13458:50:0::1;13519:13;:20:::0;;-1:-1:-1;;;;13550:18:0;-1:-1:-1;;;13550:18:0;;;13584:16:::1;::::0;::::1;::::0;-1:-1:-1;;13584:16:0::1;13403:205::o:0;23235:289::-;8310:6;;-1:-1:-1;;;;;8310:6:0;663:10;8310:22;8302:67;;;;-1:-1:-1;;;8302:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23329:31:0;::::1;23321:81;;;::::0;-1:-1:-1;;;23321:81:0;;8803:2:1;23321:81:0::1;::::0;::::1;8785:21:1::0;8842:2;8822:18;;;8815:30;8881:34;8861:18;;;8854:62;-1:-1:-1;;;8932:18:1;;;8925:35;8977:19;;23321:81:0::1;8601:401:1::0;23321:81:0::1;23413:16;:45:::0;;-1:-1:-1;;;;;;23413:45:0::1;-1:-1:-1::0;;;;;23413:45:0;::::1;::::0;;::::1;::::0;;;23474:42:::1;::::0;::::1;::::0;-1:-1:-1;;23474:42:0::1;23235:289:::0;:::o;4424:104::-;4480:13;4513:7;4506:14;;;;;:::i;15389:246::-;8310:6;;-1:-1:-1;;;;;8310:6:0;663:10;8310:22;8302:67;;;;-1:-1:-1;;;8302:67:0;;;;;;;:::i;:::-;15498:13:::1;-1:-1:-1::0;;;;;15490:21:0::1;:4;-1:-1:-1::0;;;;;15490:21:0::1;::::0;15482:91:::1;;;::::0;-1:-1:-1;;;15482:91:0;;9209:2:1;15482:91:0::1;::::0;::::1;9191:21:1::0;9248:2;9228:18;;;9221:30;9287:34;9267:18;;;9260:62;9358:27;9338:18;;;9331:55;9403:19;;15482:91:0::1;9007:421:1::0;15482:91:0::1;15586:41;15615:4;15621:5;15586:28;:41::i;:::-;15389:246:::0;;:::o;6130:413::-;663:10;6223:4;6267:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6267:34:0;;;;;;;;;;6320:35;;;;6312:85;;;;-1:-1:-1;;;6312:85:0;;9635:2:1;6312:85:0;;;9617:21:1;9674:2;9654:18;;;9647:30;9713:34;9693:18;;;9686:62;-1:-1:-1;;;9764:18:1;;;9757:35;9809:19;;6312:85:0;9433:401:1;6312:85:0;6433:67;663:10;6456:7;6484:15;6465:16;:34;6433:8;:67::i;:::-;-1:-1:-1;6531:4:0;;6130:413;-1:-1:-1;;;6130:413:0:o;4888:175::-;4974:4;4991:42;663:10;5015:9;5026:6;4991:9;:42::i;16693:182::-;8310:6;;-1:-1:-1;;;;;8310:6:0;663:10;8310:22;8302:67;;;;-1:-1:-1;;;8302:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16778:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;16778:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;16833:34;;1163:41:1;;;16833:34:0::1;::::0;1136:18:1;16833:34:0::1;;;;;;;16693:182:::0;;:::o;16291:394::-;8310:6;;-1:-1:-1;;;;;8310:6:0;663:10;8310:22;8302:67;;;;-1:-1:-1;;;8302:67:0;;;;;;;:::i;:::-;16409:16:::1;:32:::0;;;16452:16:::1;:32:::0;;;16495:11:::1;:22:::0;;;16544:35:::1;16471:13:::0;16428;16544:35:::1;:::i;:::-;16528:13;:51:::0;;;16615:11:::1;::::0;16631:1:::1;::::0;16599:27:::1;::::0;16615:11;16599:27:::1;:::i;:::-;16598:34;;16590:87;;;::::0;-1:-1:-1;;;16590:87:0;;10041:2:1;16590:87:0::1;::::0;::::1;10023:21:1::0;10080:2;10060:18;;;10053:30;10119:34;10099:18;;;10092:62;-1:-1:-1;;;10170:18:1;;;10163:39;10219:19;;16590:87:0::1;9839:405:1::0;14178:279:0;8310:6;;-1:-1:-1;;;;;8310:6:0;663:10;8310:22;8302:67;;;;-1:-1:-1;;;8302:67:0;;;;;;;:::i;:::-;14302:4:::1;14295:5;14274:13;4725:12:::0;;;4637:108;14274:13:::1;:18;::::0;14290:2:::1;14274:18;:::i;:::-;:26;;;;:::i;:::-;14273:33;;;;:::i;:::-;14263:6;:43;;14255:93;;;::::0;-1:-1:-1;;;14255:93:0;;10451:2:1;14255:93:0::1;::::0;::::1;10433:21:1::0;10490:2;10470:18;;;10463:30;10529:34;10509:18;;;10502:62;-1:-1:-1;;;10580:18:1;;;10573:35;10625:19;;14255:93:0::1;10249:401:1::0;14255:93:0::1;14377:17;:6:::0;14387::::1;14377:17;:::i;:::-;14359:15;:35:::0;;;14410:39:::1;::::0;1839:25:1;;;14410:39:0::1;::::0;1827:2:1;1812:18;14410:39:0::1;1693:177:1::0;14527:356:0;8310:6;;-1:-1:-1;;;;;8310:6:0;663:10;8310:22;8302:67;;;;-1:-1:-1;;;8302:67:0;;;;;;;:::i;:::-;14651:6:::1;14631:13;4725:12:::0;;;4637:108;14631:13:::1;:17;::::0;14647:1:::1;14631:17;:::i;:::-;:26;;;;:::i;:::-;14618:9;:39;;14610:105;;;::::0;-1:-1:-1;;;14610:105:0;;10857:2:1;14610:105:0::1;::::0;::::1;10839:21:1::0;10896:2;10876:18;;;10869:30;10935:34;10915:18;;;10908:62;-1:-1:-1;;;10986:18:1;;;10979:51;11047:19;;14610:105:0::1;10655:417:1::0;14610:105:0::1;14767:3;14747:13;4725:12:::0;;;4637:108;14747:13:::1;:17;::::0;14763:1:::1;14747:17;:::i;:::-;:23;;;;:::i;:::-;14734:9;:36;;14726:99;;;::::0;-1:-1:-1;;;14726:99:0;;11279:2:1;14726:99:0::1;::::0;::::1;11261:21:1::0;11318:2;11298:18;;;11291:30;11357:34;11337:18;;;11330:62;-1:-1:-1;;;11408:18:1;;;11401:48;11466:19;;14726:99:0::1;11077:414:1::0;14726:99:0::1;14856:20;:9:::0;14869:6:::1;14856:20;:::i;:::-;14835:18;:41:::0;-1:-1:-1;14527:356:0:o;13901:269::-;8310:6;;-1:-1:-1;;;;;8310:6:0;663:10;8310:22;8302:67;;;;-1:-1:-1;;;8302:67:0;;;;;;;:::i;:::-;14023:4:::1;14016:5;13995:13;4725:12:::0;;;4637:108;13995:13:::1;:18;::::0;14011:2:::1;13995:18;:::i;:::-;:26;;;;:::i;:::-;13994:33;;;;:::i;:::-;13984:6;:43;;13976:91;;;::::0;-1:-1:-1;;;13976:91:0;;11698:2:1;13976:91:0::1;::::0;::::1;11680:21:1::0;11737:2;11717:18;;;11710:30;11776:34;11756:18;;;11749:62;-1:-1:-1;;;11827:18:1;;;11820:33;11870:19;;13976:91:0::1;11496:399:1::0;13976:91:0::1;14094:17;:6:::0;14104::::1;14094:17;:::i;:::-;14078:13;:33:::0;;;14127:35:::1;::::0;1839:25:1;;;14127:35:0::1;::::0;1827:2:1;1812:18;14127:35:0::1;1693:177:1::0;8555:244:0;8310:6;;-1:-1:-1;;;;;8310:6:0;663:10;8310:22;8302:67;;;;-1:-1:-1;;;8302:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8644:22:0;::::1;8636:73;;;::::0;-1:-1:-1;;;8636:73:0;;12102:2:1;8636:73:0::1;::::0;::::1;12084:21:1::0;12141:2;12121:18;;;12114:30;12180:34;12160:18;;;12153:62;-1:-1:-1;;;12231:18:1;;;12224:36;12277:19;;8636:73:0::1;11900:402:1::0;8636:73:0::1;8746:6;::::0;8725:38:::1;::::0;-1:-1:-1;;;;;8725:38:0;;::::1;::::0;8746:6:::1;::::0;8725:38:::1;::::0;8746:6:::1;::::0;8725:38:::1;8774:6;:17:::0;;-1:-1:-1;;;;;;8774:17:0::1;-1:-1:-1::0;;;;;8774:17:0;;;::::1;::::0;;;::::1;::::0;;8555:244::o;23067:160::-;8310:6;;-1:-1:-1;;;;;8310:6:0;663:10;8310:22;8302:67;;;;-1:-1:-1;;;8302:67:0;;;;;;;:::i;:::-;23161:58:::1;::::0;23125:12:::1;::::0;23169:10:::1;::::0;23193:21:::1;::::0;23125:12;23161:58;23125:12;23161:58;23193:21;23169:10;23161:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;23067:160:0:o;7472:380::-;-1:-1:-1;;;;;7608:19:0;;7600:68;;;;-1:-1:-1;;;7600:68:0;;12719:2:1;7600:68:0;;;12701:21:1;12758:2;12738:18;;;12731:30;12797:34;12777:18;;;12770:62;-1:-1:-1;;;12848:18:1;;;12841:34;12892:19;;7600:68:0;12517:400:1;7600:68:0;-1:-1:-1;;;;;7687:21:0;;7679:68;;;;-1:-1:-1;;;7679:68:0;;13124:2:1;7679:68:0;;;13106:21:1;13163:2;13143:18;;;13136:30;13202:34;13182:18;;;13175:62;-1:-1:-1;;;13253:18:1;;;13246:32;13295:19;;7679:68:0;12922:398:1;7679:68:0;-1:-1:-1;;;;;7760:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7812:32;;1839:25:1;;;7812:32:0;;1812:18:1;7812:32:0;;;;;;;7472:380;;;:::o;16883:3360::-;-1:-1:-1;;;;;16983:18:0;;16975:68;;;;-1:-1:-1;;;16975:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17062:16:0;;17054:64;;;;-1:-1:-1;;;17054:64:0;;;;;;;:::i;:::-;17146:1;17137:6;:10;17129:52;;;;-1:-1:-1;;;17129:52:0;;14337:2:1;17129:52:0;;;14319:21:1;14376:2;14356:18;;;14349:30;14415:31;14395:18;;;14388:59;14464:18;;17129:52:0;14135:353:1;17129:52:0;8248:6;;-1:-1:-1;;;;;17227:15:0;;;8248:6;;17227:15;;;;:32;;-1:-1:-1;8248:6:0;;-1:-1:-1;;;;;17246:13:0;;;8248:6;;17246:13;;17227:32;:52;;;;-1:-1:-1;;;;;;17263:16:0;;;;17227:52;:77;;;;-1:-1:-1;;;;;;17283:21:0;;17297:6;17283:21;;17227:77;17223:1127;;;17328:13;;-1:-1:-1;;;17328:13:0;;;;17324:148;;-1:-1:-1;;;;;17373:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;17402:23:0;;;;;;:19;:23;;;;;;;;17373:52;17365:87;;;;-1:-1:-1;;;17365:87:0;;14695:2:1;17365:87:0;;;14677:21:1;14734:2;14714:18;;;14707:30;-1:-1:-1;;;14753:18:1;;;14746:52;14815:18;;17365:87:0;14493:346:1;17365:87:0;-1:-1:-1;;;;;17552:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;17588:35:0;;;;;;:31;:35;;;;;;;;17587:36;17552:71;17548:787;;;17670:12;;17660:6;:22;;17652:75;;;;-1:-1:-1;;;17652:75:0;;15046:2:1;17652:75:0;;;15028:21:1;15085:2;15065:18;;;15058:30;15124:34;15104:18;;;15097:62;-1:-1:-1;;;15175:18:1;;;15168:38;15223:19;;17652:75:0;14844:404:1;17652:75:0;17788:15;;-1:-1:-1;;;;;4854:18:0;;4827:7;4854:18;;;;;;;;;;;17762:22;;:6;:22;:::i;:::-;:41;;17754:78;;;;-1:-1:-1;;;17754:78:0;;15455:2:1;17754:78:0;;;15437:21:1;15494:2;15474:18;;;15467:30;-1:-1:-1;;;15513:18:1;;;15506:54;15577:18;;17754:78:0;15253:348:1;17754:78:0;17548:787;;;-1:-1:-1;;;;;17909:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;17943:37:0;;;;;;:31;:37;;;;;;;;17942:38;17909:71;17905:430;;;18027:13;;18017:6;:23;;18009:78;;;;-1:-1:-1;;;18009:78:0;;15808:2:1;18009:78:0;;;15790:21:1;15847:2;15827:18;;;15820:30;15886:34;15866:18;;;15859:62;-1:-1:-1;;;15937:18:1;;;15930:40;15987:19;;18009:78:0;15606:406:1;17905:430:0;-1:-1:-1;;;;;18136:35:0;;;;;;:31;:35;;;;;;;;18135:36;:78;;;;-1:-1:-1;;;;;;18176:37:0;;;;;;:31;:37;;;;;;;;18175:38;18135:78;18131:204;;;18271:15;;-1:-1:-1;;;;;4854:18:0;;4827:7;4854:18;;;;;;;;;;;18245:22;;:6;:22;:::i;:::-;:41;;18237:78;;;;-1:-1:-1;;;18237:78:0;;15455:2:1;18237:78:0;;;15437:21:1;15494:2;15474:18;;;15467:30;-1:-1:-1;;;15513:18:1;;;15506:54;15577:18;;18237:78:0;15253:348:1;18237:78:0;18421:4;18372:28;4854:18;;;;;;;;;;;18487;;18463:42;;;;;;;18521:22;;-1:-1:-1;18532:11:0;;-1:-1:-1;;;18532:11:0;;;;18521:22;:35;;;;-1:-1:-1;18548:8:0;;;;18547:9;18521:35;:71;;;;-1:-1:-1;;;;;;18561:31:0;;;;;;:25;:31;;;;;;;;18560:32;18521:71;:101;;;;-1:-1:-1;;;;;;18597:25:0;;;;;;:19;:25;;;;;;;;18596:26;18521:101;:129;;;;-1:-1:-1;;;;;;18627:23:0;;;;;;:19;:23;;;;;;;;18626:24;18521:129;18518:236;;;18667:8;:15;;-1:-1:-1;;18667:15:0;18678:4;18667:15;;;18699:10;:8;:10::i;:::-;18726:8;:16;;-1:-1:-1;;18726:16:0;;;18518:236;-1:-1:-1;;;;;18884:25:0;;18766:12;18884:25;;;:19;:25;;;;;;18781:4;;18884:25;;;:52;;-1:-1:-1;;;;;;18913:23:0;;;;;;:19;:23;;;;;;;;18884:52;18881:99;;;-1:-1:-1;18963:5:0;18881:99;19000:12;19104:7;19101:1077;;;-1:-1:-1;;;;;19170:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;19219:1;19203:13;;:17;19170:50;19166:727;;;19271:3;19256:13;;19247:6;:22;;;;:::i;:::-;:27;;;;:::i;:::-;19240:34;;19341:13;;19322:16;;19315:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;19293:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;19421:13:0;;19402:16;;19395:23;;:4;:23;:::i;:::-;:39;;;;:::i;:::-;19373:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;19479:11:0;;19493:3;;19470:20;;:6;:20;:::i;:::-;:26;;;;:::i;:::-;19453:13;;:43;;;;;;;:::i;:::-;;;;-1:-1:-1;19166:727:0;;-1:-1:-1;19166:727:0;;-1:-1:-1;;;;;19559:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;19609:1;19594:12;;:16;19559:51;19556:337;;;19659:3;19644:12;;19635:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;19628:34;;19725:12;;19707:15;;19700:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;19678:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;19803:12:0;;19785:15;;19778:22;;:4;:22;:::i;:::-;:37;;;;:::i;:::-;19756:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;19860:11:0;;19874:3;;19851:20;;:6;:20;:::i;:::-;:26;;;;:::i;:::-;19834:13;;:43;;;;;;;:::i;:::-;;;;-1:-1:-1;;19556:337:0;19924:8;;19921:94;;19957:42;19973:4;19987;19994;19957:15;:42::i;:::-;20033:53;20049:4;20063:6;20072:13;;20033:15;:53::i;:::-;20120:13;;20113:20;;:4;:20;:::i;:::-;20102:32;;;;:::i;:::-;20165:1;20149:13;:17;20102:32;-1:-1:-1;19101:1077:0;20202:33;20218:4;20224:2;20228:6;20202:15;:33::i;:::-;16962:3281;;;;16883:3360;;;:::o;15643:248::-;-1:-1:-1;;;;;15726:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;15726:39:0;;;;;;;15786;15726:31;:39;15786:26;:39::i;:::-;15843:40;;;;;;-1:-1:-1;;;;;15843:40:0;;;;;;;;15643:248;;:::o;21384:1219::-;21467:4;21423:23;4854:18;;;;;;;;;;;21423:50;;21484:25;21533:18;;21512;;:39;;;;:::i;:::-;21484:67;-1:-1:-1;21575:20:0;;;:46;;-1:-1:-1;21599:22:0;;21575:46;21572:60;;;21624:7;;21384:1219::o;21572:60::-;21665:18;;;:23;;;:::i;:::-;21647:15;:41;21644:113;;;21722:18;;;:23;;;:::i;:::-;21704:41;;21644:113;21769:12;21851:23;21936:1;21916:17;21895:18;;21877:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;21851:86;-1:-1:-1;21958:51:0;21975:33;21851:86;21975:15;:33;:::i;:::-;21958:16;:51::i;:::-;22215:18;;22052:21;;;;22031:18;;22215:20;;22234:1;;22215:20;:::i;:::-;22194:42;;:17;:42;:::i;:::-;22172:18;;22159:31;;:10;:31;:::i;:::-;:78;;;;:::i;:::-;22133:104;-1:-1:-1;22250:34:0;22133:104;22250:34;;:::i;:::-;22330:1;22309:18;:22;;;22342:18;:22;22250:34;-1:-1:-1;22390:19:0;;;;;:42;;;22431:1;22413:15;:19;22390:42;22387:119;;;22448:46;22461:15;22478;22448:12;:46::i;:::-;22539:16;;22531:64;;-1:-1:-1;;;;;22539:16:0;;;;22569:21;;22531:64;;;;22569:21;22539:16;22531:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;21384:1219:0:o;6551:614::-;-1:-1:-1;;;;;6691:20:0;;6683:70;;;;-1:-1:-1;;;6683:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6772:23:0;;6764:71;;;;-1:-1:-1;;;6764:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6872:17:0;;6848:21;6872:17;;;;;;;;;;;6908:23;;;;6900:74;;;;-1:-1:-1;;;6900:74:0;;16352:2:1;6900:74:0;;;16334:21:1;16391:2;16371:18;;;16364:30;16430:34;16410:18;;;16403:62;-1:-1:-1;;;16481:18:1;;;16474:36;16527:19;;6900:74:0;16150:402:1;6900:74:0;-1:-1:-1;;;;;7010:17:0;;;:9;:17;;;;;;;;;;;7030:22;;;7010:42;;7074:20;;;;;;;;:30;;7046:6;;7010:9;7074:30;;7046:6;;7074:30;:::i;:::-;;;;;;;;7139:9;-1:-1:-1;;;;;7122:35:0;7131:6;-1:-1:-1;;;;;7122:35:0;;7150:6;7122:35;;;;1839:25:1;;1827:2;1812:18;;1693:177;7122:35:0;;;;;;;;6672:493;6551:614;;;:::o;14895:207::-;-1:-1:-1;;;;;14983:39:0;;;;;;:31;:39;;;;;;;;;:52;;-1:-1:-1;;14983:52:0;;;;;;;;;;15051:43;;16725:51:1;;;16792:18;;;16785:50;15051:43:0;;16698:18:1;15051:43:0;;;;;;;14895:207;;:::o;20251:591::-;20403:16;;;20417:1;20403:16;;;;;;;;20379:21;;20403:16;;;;;;;;;;-1:-1:-1;20403:16:0;20379:40;;20448:4;20430;20435:1;20430:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;20430:23:0;;;-1:-1:-1;;;;;20430:23:0;;;;;20474:15;-1:-1:-1;;;;;20474:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20464:4;20469:1;20464:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;20464:32:0;;;-1:-1:-1;;;;;20464:32:0;;;;;20509:62;20526:4;20541:15;20559:11;20509:8;:62::i;:::-;20610:224;;-1:-1:-1;;;20610:224:0;;-1:-1:-1;;;;;20610:15:0;:66;;;;:224;;20691:11;;20717:1;;20761:4;;20788;;20808:15;;20610:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20306:536;20251:591;:::o;20854:522::-;21002:62;21019:4;21034:15;21052:11;21002:8;:62::i;:::-;21107:15;-1:-1:-1;;;;;21107:31:0;;21146:9;21179:4;21199:11;21225:1;21268;21319:7;8248:6;;-1:-1:-1;;;;;8248:6:0;;8183:79;21319:7;21107:261;;;;;;-1:-1:-1;;;;;;21107:261:0;;;-1:-1:-1;;;;;18710:15:1;;;21107:261:0;;;18692:34:1;18742:18;;;18735:34;;;;18785:18;;;18778:34;;;;18828:18;;;18821:34;18892:15;;;18871:19;;;18864:44;21342:15:0;18924:19:1;;;18917:35;18626:19;;21107:261:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20854:522;;:::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;1215:247::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;1382:9;1369:23;1401:31;1426:5;1401:31;:::i;:::-;1451:5;1215:247;-1:-1:-1;;;1215:247:1:o;1875:456::-;1952:6;1960;1968;2021:2;2009:9;2000:7;1996:23;1992:32;1989:52;;;2037:1;2034;2027:12;1989:52;2076:9;2063:23;2095:31;2120:5;2095:31;:::i;:::-;2145:5;-1:-1:-1;2202:2:1;2187:18;;2174:32;2215:33;2174:32;2215:33;:::i;:::-;1875:456;;2267:7;;-1:-1:-1;;;2321:2:1;2306:18;;;;2293:32;;1875:456::o;2336:180::-;2395:6;2448:2;2436:9;2427:7;2423:23;2419:32;2416:52;;;2464:1;2461;2454:12;2416:52;-1:-1:-1;2487:23:1;;2336:180;-1:-1:-1;2336:180:1:o;2918:118::-;3004:5;2997:13;2990:21;2983:5;2980:32;2970:60;;3026:1;3023;3016:12;3041:382;3106:6;3114;3167:2;3155:9;3146:7;3142:23;3138:32;3135:52;;;3183:1;3180;3173:12;3135:52;3222:9;3209:23;3241:31;3266:5;3241:31;:::i;:::-;3291:5;-1:-1:-1;3348:2:1;3333:18;;3320:32;3361:30;3320:32;3361:30;:::i;:::-;3410:7;3400:17;;;3041:382;;;;;:::o;3428:316::-;3505:6;3513;3521;3574:2;3562:9;3553:7;3549:23;3545:32;3542:52;;;3590:1;3587;3580:12;3542:52;-1:-1:-1;;3613:23:1;;;3683:2;3668:18;;3655:32;;-1:-1:-1;3734:2:1;3719:18;;;3706:32;;3428:316;-1:-1:-1;3428:316:1:o;3749:388::-;3817:6;3825;3878:2;3866:9;3857:7;3853:23;3849:32;3846:52;;;3894:1;3891;3884:12;3846:52;3933:9;3920:23;3952:31;3977:5;3952:31;:::i;:::-;4002:5;-1:-1:-1;4059:2:1;4044:18;;4031:32;4072:33;4031:32;4072:33;:::i;4142:380::-;4221:1;4217:12;;;;4264;;;4285:61;;4339:4;4331:6;4327:17;4317:27;;4285:61;4392:2;4384:6;4381:14;4361:18;4358:38;4355:161;;4438:10;4433:3;4429:20;4426:1;4419:31;4473:4;4470:1;4463:15;4501:4;4498:1;4491:15;4355:161;;4142:380;;;:::o;4936:356::-;5138:2;5120:21;;;5157:18;;;5150:30;5216:34;5211:2;5196:18;;5189:62;5283:2;5268:18;;4936:356::o;5297:127::-;5358:10;5353:3;5349:20;5346:1;5339:31;5389:4;5386:1;5379:15;5413:4;5410:1;5403:15;5429:168;5502:9;;;5533;;5550:15;;;5544:22;;5530:37;5520:71;;5571:18;;:::i;5602:217::-;5642:1;5668;5658:132;;5712:10;5707:3;5703:20;5700:1;5693:31;5747:4;5744:1;5737:15;5775:4;5772:1;5765:15;5658:132;-1:-1:-1;5804:9:1;;5602:217::o;6227:125::-;6292:9;;;6313:10;;;6310:36;;;6326:18;;:::i;7531:184::-;7601:6;7654:2;7642:9;7633:7;7629:23;7625:32;7622:52;;;7670:1;7667;7660:12;7622:52;-1:-1:-1;7693:16:1;;7531:184;-1:-1:-1;7531:184:1:o;7999:245::-;8066:6;8119:2;8107:9;8098:7;8094:23;8090:32;8087:52;;;8135:1;8132;8125:12;8087:52;8167:9;8161:16;8186:28;8208:5;8186:28;:::i;13325:401::-;13527:2;13509:21;;;13566:2;13546:18;;;13539:30;13605:34;13600:2;13585:18;;13578:62;-1:-1:-1;;;13671:2:1;13656:18;;13649:35;13716:3;13701:19;;13325:401::o;13731:399::-;13933:2;13915:21;;;13972:2;13952:18;;;13945:30;14011:34;14006:2;13991:18;;13984:62;-1:-1:-1;;;14077:2:1;14062:18;;14055:33;14120:3;14105:19;;13731:399::o;16017:128::-;16084:9;;;16105:11;;;16102:37;;;16119:18;;:::i;16978:127::-;17039:10;17034:3;17030:20;17027:1;17020:31;17070:4;17067:1;17060:15;17094:4;17091:1;17084:15;17110:251;17180:6;17233:2;17221:9;17212:7;17208:23;17204:32;17201:52;;;17249:1;17246;17239:12;17201:52;17281:9;17275:16;17300:31;17325:5;17300:31;:::i;17366:980::-;17628:4;17676:3;17665:9;17661:19;17707:6;17696:9;17689:25;17733:2;17771:6;17766:2;17755:9;17751:18;17744:34;17814:3;17809:2;17798:9;17794:18;17787:31;17838:6;17873;17867:13;17904:6;17896;17889:22;17942:3;17931:9;17927:19;17920:26;;17981:2;17973:6;17969:15;17955:29;;18002:1;18012:195;18026:6;18023:1;18020:13;18012:195;;;18091:13;;-1:-1:-1;;;;;18087:39:1;18075:52;;18182:15;;;;18147:12;;;;18123:1;18041:9;18012:195;;;-1:-1:-1;;;;;;;18263:32:1;;;;18258:2;18243:18;;18236:60;-1:-1:-1;;;18327:3:1;18312:19;18305:35;18224:3;17366:980;-1:-1:-1;;;17366:980:1:o;18963:306::-;19051:6;19059;19067;19120:2;19108:9;19099:7;19095:23;19091:32;19088:52;;;19136:1;19133;19126:12;19088:52;19165:9;19159:16;19149:26;;19215:2;19204:9;19200:18;19194:25;19184:35;;19259:2;19248:9;19244:18;19238:25;19228:35;;18963:306;;;;;:::o
Swarm Source
ipfs://7115c90ff705c9df90da9afaf27a708ce7e5c0429abd2abcb4eb8bdf7e1a7c45
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.