Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 7 from a total of 7 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 16079322 | 707 days ago | IN | 0 ETH | 0.00148354 | ||||
Transfer | 16078420 | 707 days ago | IN | 0 ETH | 0.00275101 | ||||
Update Swap Toke... | 16078364 | 707 days ago | IN | 0 ETH | 0.00032207 | ||||
Approve | 16078358 | 707 days ago | IN | 0 ETH | 0.00055861 | ||||
Approve | 16078294 | 707 days ago | IN | 0 ETH | 0.00072862 | ||||
Approve | 16078218 | 707 days ago | IN | 0 ETH | 0.00048655 | ||||
0x60806040 | 16078155 | 707 days ago | IN | 0 ETH | 0.05221742 |
Latest 8 internal transactions
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
16078420 | 707 days ago | 0.00008242 ETH | ||||
16078420 | 707 days ago | 0.00008242 ETH | ||||
16078420 | 707 days ago | 0.00019564 ETH | ||||
16078420 | 707 days ago | 0.0003605 ETH | ||||
16078394 | 707 days ago | 0.00013299 ETH | ||||
16078394 | 707 days ago | 0.00013299 ETH | ||||
16078394 | 707 days ago | 0.00029753 ETH | ||||
16078394 | 707 days ago | 0.00056352 ETH |
Loading...
Loading
Contract Name:
Test
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-11-29 */ // SPDX-License-Identifier: MIT /* Smartcontract author: @TonyBoyDeFi Project contract on Ethereum blockchain */ pragma solidity 0.8.17; 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 IUniswapV3Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV3Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { using SafeMath for uint256; 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); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } function _createInitialSupply(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds your balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } 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; } } // Uniswap & Pancakeswap Router interface IUniswapV3Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV3Router02 is IUniswapV3Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract Test is ERC20, Ownable { using SafeMath for uint256; IUniswapV3Router02 public uniswapV3Router; address public uniswapV3Pair; bool private swapping; address public marketingWallet; address public expensesWallet; uint256 public percentForMarketing = 50; bool public buyBackEnabled = true; uint256 public swapTokensAtAmount; uint256 private liquidityActiveBlock = 0; uint256 private tradingActiveBlock = 0; bool public tradingActive = true; bool public swapEnabled = true; address private presaleAddress; address private presaleRouterAddress; uint256 public feeDivisor = 100; uint256 public totalSellFees; uint256 public marketingSellFee; uint256 public expensesSellFee; uint256 public totalBuyFees; uint256 public marketingBuyFee; uint256 public expensesBuyFee; uint256 private tokensForMarketing; uint256 private tokensForExpenses; mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) public automatedMarketMakerPairs; event ExcludeFromFees(address indexed account, bool isExcluded); event ExcludeMultipleAccountsFromFees(address[] accounts, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet); event expensesWalletUpdated(address indexed newWallet, address indexed oldWallet); constructor() ERC20("test", "tst"){ address newOwner = address(0x6Ad3855Fb29303a7c3B6a00D55422cad817119D7); // Total Supply minted once during deployment and never minted again | Set number in tokens uint256 totalSupply = 500000000 * (10**18); // Tokens for SwapAndLiquify and automated BuyBack | Set number in tokens swapTokensAtAmount = 500 * (10**18); // Contracts Sell fees marketingSellFee = 3; expensesSellFee = 4; totalSellFees = marketingSellFee + expensesSellFee; // Contracts Buy fees marketingBuyFee = 2; expensesBuyFee = 2; totalBuyFees = marketingBuyFee + expensesBuyFee; // Project Marketing Wallet | Updateable at a later point if necessary marketingWallet = address(0x94E709272FA55BB86e61C1Ec829Ba04f61128578); // Project Expenses Wallet | Updateable at a later point if necessary expensesWallet = address(0xbCCA432372F1967B75B2acFCB2bfCe8F3C5EF629); // Router settings for Binance Smart Chain: // Pancakeswap testnet: 0xD99D1c33F9fC3444f8101754aBC46c52416550D1 // Pancakeswap mainnet: 0x10ED43C718714eb63d5aA57B78B54704E256024E // Router settings for Ethereum: // Uniswap V3 mainnet: 0xE592427A0AEce92De3Edee1F18E0157C05861564 // Uniswap V2 testnet: 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D // Uniswap V2 mainnet: 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D IUniswapV3Router02 _uniswapV3Router = IUniswapV3Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); address _uniswapV3Pair = IUniswapV3Factory(_uniswapV3Router.factory()) .createPair(address(this), _uniswapV3Router.WETH()); uniswapV3Router = _uniswapV3Router; uniswapV3Pair = _uniswapV3Pair; _setAutomatedMarketMakerPair(_uniswapV3Pair, true); excludeFromFees(newOwner, true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); _createInitialSupply(address(newOwner), totalSupply); transferOwnership(newOwner); } receive() external payable { } // Change SwapAndLiquidy token swap amounts | Set number in exact tokens function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool){ swapTokensAtAmount = newAmount * (10**18); return true; } // Exclude a wallet from all fees | Only for presale addresses, presale router and the deployer of the contract function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } // Exclude multiple wallets from all fees | Only for presale addresses, presale router and the deployer of the contract function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) external onlyOwner { for(uint256 i = 0; i < accounts.length; i++) { _isExcludedFromFees[accounts[i]] = excluded; } emit ExcludeMultipleAccountsFromFees(accounts, excluded); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require(pair != uniswapV3Pair, "The UniSwap pair cannot be removed from AutomatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } // Set a new project marketing wallet | Wallet name can be changed to whatever suites the best function updateMarketingWallet(address newMarketingWallet) external onlyOwner { require(newMarketingWallet != address(0), "cannot set to 0 address"); excludeFromFees(newMarketingWallet, true); emit marketingWalletUpdated(newMarketingWallet, marketingWallet); marketingWallet = newMarketingWallet; } // Set a new expenses wallet | Wallet name can be changed to whatever suites the best function updateExpensesWallet(address newWallet) external onlyOwner { require(newWallet != address(0), "cannot set to 0 address"); excludeFromFees(newWallet, true); emit expensesWalletUpdated(newWallet, expensesWallet); expensesWallet = newWallet; } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if(amount == 0) { super._transfer(from, to, 0); return; } if(!tradingActive || tradingActiveBlock + 2 >= block.number){ require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is always active after deployment"); } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; if(takeFee){ // Assets selling process if (automatedMarketMakerPairs[to] && totalSellFees > 0){ fees = amount.mul(totalSellFees).div(feeDivisor); tokensForMarketing += fees * marketingSellFee / totalSellFees; tokensForExpenses += fees * expensesSellFee / totalSellFees; } // Assets buying process else if(automatedMarketMakerPairs[from] && totalBuyFees > 0) { fees = amount.mul(totalBuyFees).div(feeDivisor); tokensForMarketing += fees * marketingBuyFee / totalBuyFees; tokensForExpenses += fees * expensesBuyFee / totalBuyFees; } if(fees > 0){ super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapEthForNativeToken(uint256 ethAmount) private { if(ethAmount > 0){ address[] memory path = new address[](2); path[0] = uniswapV3Router.WETH(); path[1] = address(this); uniswapV3Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ethAmount}( 0, path, address(marketingWallet), block.timestamp ); } } function swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV3Router.WETH(); _approve(address(this), address(uniswapV3Router), tokenAmount); uniswapV3Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { _approve(address(this), address(uniswapV3Router), tokenAmount); uniswapV3Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, 0, address(0xdead), block.timestamp ); } // Automated buyback to fight sell pressure function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForMarketing + tokensForExpenses; if(contractBalance == 0 || totalTokensToSwap == 0) {return;} bool success; uint256 initialETHBalance = address(this).balance; swapTokensForEth(contractBalance); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap); uint256 ethForExpenses= ethBalance.mul(tokensForExpenses).div(totalTokensToSwap); (success,) = address(expensesWallet).call{value: ethForExpenses}(""); if(buyBackEnabled){ (success,) = address(marketingWallet).call{value: ethForMarketing * percentForMarketing / 100}("Automated BuyBack completed"); swapEthForNativeToken(address(this).balance); } else { (success,) = address(marketingWallet).call{value: address(this).balance}("Success"); } } // Recovery functions for stuck native balances and accidentally sent ERC20 tokens // Function to recover stuck ETH from the contract address. Only callable by the owner function recoverContractETH() external onlyOwner { (bool success,) = address(msg.sender).call{value: address(this).balance}("Stuck ETH balance from contract address recovered"); require(success, "Failed. Either caller is not the owner or address is not the contract address"); } // Function to recover stuck or accidentaly sent ERC20 tokens from the contract function recoverERC20Token(address tokenAddress, uint256 tokens) external onlyOwner returns (bool success){ return ERC20(tokenAddress).transfer(msg.sender, tokens); } //Function for automated buyback settings. Set in percentages for example: 50% = 50% to buyback and 50% to marketing wallet function marketingBuyBackSettings(bool _buyBackEnabled, uint256 _percentForMarketing) external onlyOwner { require(_percentForMarketing <= 100, "Must be set below 100%"); percentForMarketing = _percentForMarketing; buyBackEnabled = _buyBackEnabled; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"accounts","type":"address[]"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeMultipleAccountsFromFees","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":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"expensesWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"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":"buyBackEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"expensesBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"expensesSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"expensesWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDivisor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_buyBackEnabled","type":"bool"},{"internalType":"uint256","name":"_percentForMarketing","type":"uint256"}],"name":"marketingBuyBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"percentForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"recoverContractETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"recoverERC20Token","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBuyFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV3Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV3Router","outputs":[{"internalType":"contract IUniswapV3Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateExpensesWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526032600a55600b805460ff191660011790556000600d819055600e55600f805461010161ffff1990911617905560646011553480156200004357600080fd5b50604051806040016040528060048152602001631d195cdd60e21b815250604051806040016040528060038152602001621d1cdd60ea1b81525081600390816200008e9190620007a0565b5060046200009d8282620007a0565b5050506000620000b26200038c60201b60201c565b600580546001600160a01b0319166001600160a01b0383169081179091556040519192509060009060008051602062002ce1833981519152908290a350681b1ae4d6e2ef500000600c556003601381905560046014819055736ad3855fb29303a7c3b6a00d55422cad817119d7916b019d971e4fe8401e740000009162000139916200086c565b6012556002601681905560178190556200015490806200086c565b601555600880546001600160a01b03199081167394e709272fa55bb86e61c1ec829ba04f61128578179091556009805490911673bcca432372f1967b75b2acfcb2bfce8f3c5ef6291790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d91600091839163c45a01559160048083019260209291908290030181865afa158015620001f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021b91906200088e565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000269573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200028f91906200088e565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030391906200088e565b600680546001600160a01b038086166001600160a01b031992831617909255600780549284169290911691909117905590506200034281600162000390565b6200034f846001620003e4565b6200035c306001620003e4565b6200036b61dead6001620003e4565b62000377848462000492565b62000382846200058e565b50505050620008b9565b3390565b6001600160a01b0382166000818152601b6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620004335760405162461bcd60e51b8152602060048201819052602482015260008051602062002cc183398151915260448201526064015b60405180910390fd5b6001600160a01b0382166000818152601a6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620004ea5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016200042a565b62000506816002546200069060201b6200114a1790919060201c565b6002556001600160a01b03821660009081526020818152604090912054620005399183906200114a62000690821b17901c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6005546001600160a01b03163314620005d95760405162461bcd60e51b8152602060048201819052602482015260008051602062002cc183398151915260448201526064016200042a565b6001600160a01b038116620006405760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016200042a565b6005546040516001600160a01b0380841692169060008051602062002ce183398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b505050565b6000806200069f83856200086c565b905083811015620006f35760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016200042a565b90505b92915050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200072757607f821691505b6020821081036200074857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200068b57600081815260208120601f850160051c81016020861015620007775750805b601f850160051c820191505b81811015620007985782815560010162000783565b505050505050565b81516001600160401b03811115620007bc57620007bc620006fc565b620007d481620007cd845462000712565b846200074e565b602080601f8311600181146200080c5760008415620007f35750858301515b600019600386901b1c1916600185901b17855562000798565b600085815260208120601f198616915b828110156200083d578886015182559484019460019091019084016200081c565b50858210156200085c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80820180821115620006f657634e487b7160e01b600052601160045260246000fd5b600060208284031215620008a157600080fd5b81516001600160a01b0381168114620006f357600080fd5b6123f880620008c96000396000f3fe60806040526004361061024a5760003560e01c806395d89b4111610139578063c0246668116100b6578063d69f2f821161007a578063d69f2f82146106b9578063dd62ed3e146106cf578063e2f4560514610715578063e7f444b31461072b578063f2fde38b14610741578063ff2581971461076157600080fd5b8063c02466681461062d578063c492f0461461064d578063ce1df33f1461066d578063d0a3981414610683578063d257b34f1461069957600080fd5b8063a9059cbb116100fd578063a9059cbb1461058d578063aacebbe3146105ad578063b62496f5146105cd578063b9e93700146105fd578063bbc0c7421461061357600080fd5b806395d89b411461050c578063984f02d3146105215780639a36f932146105375780639a7a23d61461054d578063a457c2d71461056d57600080fd5b80636598d2d1116101c757806375f0a8741161018b57806375f0a874146104795780638519517a1461049957806388522998146104ae5780638da5cb5b146104ce5780639439ff28146104ec57600080fd5b80636598d2d1146103d757806368078952146103f95780636ddd17131461040f57806370a082311461042e578063715018a61461046457600080fd5b8063313ce5671161020e578063313ce5671461032857806333f5b15f1461034457806339509351146103645780634fbee193146103845780636053a0e3146103bd57600080fd5b806306fdde0314610256578063095ea7b31461028157806318160ddd146102b157806323b872dd146102d05780632c76d7a6146102f057600080fd5b3661025157005b600080fd5b34801561026257600080fd5b5061026b610781565b6040516102789190611e4d565b60405180910390f35b34801561028d57600080fd5b506102a161029c366004611eb0565b610813565b6040519015158152602001610278565b3480156102bd57600080fd5b506002545b604051908152602001610278565b3480156102dc57600080fd5b506102a16102eb366004611edc565b61082a565b3480156102fc57600080fd5b50600654610310906001600160a01b031681565b6040516001600160a01b039091168152602001610278565b34801561033457600080fd5b5060405160128152602001610278565b34801561035057600080fd5b506102a161035f366004611eb0565b610893565b34801561037057600080fd5b506102a161037f366004611eb0565b610941565b34801561039057600080fd5b506102a161039f366004611f1d565b6001600160a01b03166000908152601a602052604090205460ff1690565b3480156103c957600080fd5b50600b546102a19060ff1681565b3480156103e357600080fd5b506103f76103f2366004611f48565b610977565b005b34801561040557600080fd5b506102c260165481565b34801561041b57600080fd5b50600f546102a190610100900460ff1681565b34801561043a57600080fd5b506102c2610449366004611f1d565b6001600160a01b031660009081526020819052604090205490565b34801561047057600080fd5b506103f7610a01565b34801561048557600080fd5b50600854610310906001600160a01b031681565b3480156104a557600080fd5b506103f7610a75565b3480156104ba57600080fd5b50600754610310906001600160a01b031681565b3480156104da57600080fd5b506005546001600160a01b0316610310565b3480156104f857600080fd5b506103f7610507366004611f1d565b610bbb565b34801561051857600080fd5b5061026b610c9d565b34801561052d57600080fd5b506102c2600a5481565b34801561054357600080fd5b506102c260115481565b34801561055957600080fd5b506103f7610568366004611f66565b610cac565b34801561057957600080fd5b506102a1610588366004611eb0565b610d72565b34801561059957600080fd5b506102a16105a8366004611eb0565b610dc1565b3480156105b957600080fd5b506103f76105c8366004611f1d565b610dce565b3480156105d957600080fd5b506102a16105e8366004611f1d565b601b6020526000908152604090205460ff1681565b34801561060957600080fd5b506102c260155481565b34801561061f57600080fd5b50600f546102a19060ff1681565b34801561063957600080fd5b506103f7610648366004611f66565b610eb0565b34801561065957600080fd5b506103f7610668366004611f9f565b610f39565b34801561067957600080fd5b506102c260175481565b34801561068f57600080fd5b506102c260125481565b3480156106a557600080fd5b506102a16106b4366004612025565b611015565b3480156106c557600080fd5b506102c260145481565b3480156106db57600080fd5b506102c26106ea36600461203e565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561072157600080fd5b506102c2600c5481565b34801561073757600080fd5b506102c260135481565b34801561074d57600080fd5b506103f761075c366004611f1d565b61105f565b34801561076d57600080fd5b50600954610310906001600160a01b031681565b6060600380546107909061206c565b80601f01602080910402602001604051908101604052809291908181526020018280546107bc9061206c565b80156108095780601f106107de57610100808354040283529160200191610809565b820191906000526020600020905b8154815290600101906020018083116107ec57829003601f168201915b5050505050905090565b60006108203384846111a9565b5060015b92915050565b60006108378484846112ce565b610889843361088485604051806060016040528060288152602001612376602891396001600160a01b038a16600090815260016020908152604080832033845290915290205491906116cb565b6111a9565b5060019392505050565b6005546000906001600160a01b031633146108c95760405162461bcd60e51b81526004016108c0906120a6565b60405180910390fd5b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015610916573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093a91906120db565b9392505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610820918590610884908661114a565b6005546001600160a01b031633146109a15760405162461bcd60e51b81526004016108c0906120a6565b60648111156109eb5760405162461bcd60e51b81526020600482015260166024820152754d757374206265207365742062656c6f77203130302560501b60448201526064016108c0565b600a55600b805460ff1916911515919091179055565b6005546001600160a01b03163314610a2b5760405162461bcd60e51b81526004016108c0906120a6565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610a9f5760405162461bcd60e51b81526004016108c0906120a6565b6040517f537475636b204554482062616c616e63652066726f6d20636f6e7472616374208152701859191c995cdcc81c9958dbdd995c9959607a1b60208201526000903390479060310160006040518083038185875af1925050503d8060008114610b26576040519150601f19603f3d011682016040523d82523d6000602084013e610b2b565b606091505b5050905080610bb85760405162461bcd60e51b815260206004820152604d60248201527f4661696c65642e204569746865722063616c6c6572206973206e6f742074686560448201527f206f776e6572206f722061646472657373206973206e6f742074686520636f6e60648201526c7472616374206164647265737360981b608482015260a4016108c0565b50565b6005546001600160a01b03163314610be55760405162461bcd60e51b81526004016108c0906120a6565b6001600160a01b038116610c355760405162461bcd60e51b815260206004820152601760248201527663616e6e6f742073657420746f2030206164647265737360481b60448201526064016108c0565b610c40816001610eb0565b6009546040516001600160a01b03918216918316907f2609b19f26860a94a545927956c443b3a282ac05c8a55d161424777a0fa61e2090600090a3600980546001600160a01b0319166001600160a01b0392909216919091179055565b6060600480546107909061206c565b6005546001600160a01b03163314610cd65760405162461bcd60e51b81526004016108c0906120a6565b6007546001600160a01b0390811690831603610d645760405162461bcd60e51b815260206004820152604160248201527f54686520556e695377617020706169722063616e6e6f742062652072656d6f7660448201527f65642066726f6d204175746f6d617465644d61726b65744d616b6572506169726064820152607360f81b608482015260a4016108c0565b610d6e8282611705565b5050565b600061082033846108848560405180606001604052806025815260200161239e602591393360009081526001602090815260408083206001600160a01b038d16845290915290205491906116cb565b60006108203384846112ce565b6005546001600160a01b03163314610df85760405162461bcd60e51b81526004016108c0906120a6565b6001600160a01b038116610e485760405162461bcd60e51b815260206004820152601760248201527663616e6e6f742073657420746f2030206164647265737360481b60448201526064016108c0565b610e53816001610eb0565b6008546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567490600090a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610eda5760405162461bcd60e51b81526004016108c0906120a6565b6001600160a01b0382166000818152601a6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610f635760405162461bcd60e51b81526004016108c0906120a6565b60005b82811015610fd45781601a6000868685818110610f8557610f856120f8565b9050602002016020810190610f9a9190611f1d565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610fcc81612124565b915050610f66565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b358383836040516110089392919061213d565b60405180910390a1505050565b6005546000906001600160a01b031633146110425760405162461bcd60e51b81526004016108c0906120a6565b61105482670de0b6b3a7640000612196565b600c55506001919050565b6005546001600160a01b031633146110895760405162461bcd60e51b81526004016108c0906120a6565b6001600160a01b0381166110ee5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108c0565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b60008061115783856121ad565b90508381101561093a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016108c0565b6001600160a01b03831661120b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108c0565b6001600160a01b03821661126c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108c0565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166112f45760405162461bcd60e51b81526004016108c0906121c0565b6001600160a01b03821661131a5760405162461bcd60e51b81526004016108c090612205565b806000036113335761132e83836000611759565b505050565b600f5460ff161580611353575043600e54600261135091906121ad565b10155b156113f5576001600160a01b0383166000908152601a602052604090205460ff168061139757506001600160a01b0382166000908152601a602052604090205460ff165b6113f55760405162461bcd60e51b815260206004820152602960248201527f54726164696e6720697320616c77617973206163746976652061667465722064604482015268195c1b1bde5b595b9d60ba1b60648201526084016108c0565b30600090815260208190526040902054600c54811080159081906114205750600f54610100900460ff165b80156114365750600754600160a01b900460ff16155b801561145b57506001600160a01b0385166000908152601b602052604090205460ff16155b801561148057506001600160a01b0385166000908152601a602052604090205460ff16155b80156114a557506001600160a01b0384166000908152601a602052604090205460ff16155b156114d3576007805460ff60a01b1916600160a01b1790556114c5611862565b6007805460ff60a01b191690555b6007546001600160a01b0386166000908152601a602052604090205460ff600160a01b90920482161591168061152157506001600160a01b0385166000908152601a602052604090205460ff165b1561152a575060005b600081156116b7576001600160a01b0386166000908152601b602052604090205460ff16801561155c57506000601254115b156115eb5761158260115461157c60125488611a6b90919063ffffffff16565b90611aed565b9050601254601354826115959190612196565b61159f9190612248565b601860008282546115b091906121ad565b90915550506012546014546115c59083612196565b6115cf9190612248565b601960008282546115e091906121ad565b909155506116999050565b6001600160a01b0387166000908152601b602052604090205460ff16801561161557506000601554115b156116995761163560115461157c60155488611a6b90919063ffffffff16565b9050601554601654826116489190612196565b6116529190612248565b6018600082825461166391906121ad565b90915550506015546017546116789083612196565b6116829190612248565b6019600082825461169391906121ad565b90915550505b80156116aa576116aa873083611759565b6116b4818661226a565b94505b6116c2878787611759565b50505050505050565b600081848411156116ef5760405162461bcd60e51b81526004016108c09190611e4d565b5060006116fc848661226a565b95945050505050565b6001600160a01b0382166000818152601b6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b03831661177f5760405162461bcd60e51b81526004016108c0906121c0565b6001600160a01b0382166117a55760405162461bcd60e51b81526004016108c090612205565b6117e281604051806060016040528060268152602001612350602691396001600160a01b03861660009081526020819052604090205491906116cb565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611811908261114a565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016112c1565b306000908152602081905260408120549050600060195460185461188691906121ad565b9050811580611893575080155b1561189c575050565b6000476118a884611b2f565b60006118b44783611c89565b905060006118d18561157c60185485611a6b90919063ffffffff16565b905060006118ee8661157c60195486611a6b90919063ffffffff16565b6009546040519192506001600160a01b0316908290600081818185875af1925050503d806000811461193c576040519150601f19603f3d011682016040523d82523d6000602084013e611941565b606091505b5050600b5490955060ff16156119f957600854600a546001600160a01b03909116906064906119709085612196565b61197a9190612248565b6040517f4175746f6d61746564204275794261636b20636f6d706c6574656400000000008152601b0160006040518083038185875af1925050503d80600081146119e0576040519150601f19603f3d011682016040523d82523d6000602084013e6119e5565b606091505b5050809550506119f447611ccb565b6116c2565b600854604051665375636365737360c81b81526001600160a01b0390911690479060070160006040518083038185875af1925050503d8060008114611a5a576040519150601f19603f3d011682016040523d82523d6000602084013e611a5f565b606091505b50505050505050505050565b600082600003611a7d57506000610824565b6000611a898385612196565b905082611a968583612248565b1461093a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016108c0565b600061093a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e1f565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611b6457611b646120f8565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611bbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be1919061227d565b81600181518110611bf457611bf46120f8565b6001600160a01b039283166020918202929092010152600654611c1a91309116846111a9565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611c539085906000908690309042906004016122de565b600060405180830381600087803b158015611c6d57600080fd5b505af1158015611c81573d6000803e3d6000fd5b505050505050565b600061093a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506116cb565b8015610bb8576040805160028082526060820183526000926020830190803683375050600654604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015611d3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d5f919061227d565b81600081518110611d7257611d726120f8565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611da657611da66120f8565b6001600160a01b03928316602091820292909201015260065460085460405163b6f9de9560e01b81529183169263b6f9de95928692611df292600092889290911690429060040161231a565b6000604051808303818588803b158015611e0b57600080fd5b505af11580156116c2573d6000803e3d6000fd5b60008183611e405760405162461bcd60e51b81526004016108c09190611e4d565b5060006116fc8486612248565b600060208083528351808285015260005b81811015611e7a57858101830151858201604001528201611e5e565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610bb857600080fd5b60008060408385031215611ec357600080fd5b8235611ece81611e9b565b946020939093013593505050565b600080600060608486031215611ef157600080fd5b8335611efc81611e9b565b92506020840135611f0c81611e9b565b929592945050506040919091013590565b600060208284031215611f2f57600080fd5b813561093a81611e9b565b8015158114610bb857600080fd5b60008060408385031215611f5b57600080fd5b8235611ece81611f3a565b60008060408385031215611f7957600080fd5b8235611f8481611e9b565b91506020830135611f9481611f3a565b809150509250929050565b600080600060408486031215611fb457600080fd5b833567ffffffffffffffff80821115611fcc57600080fd5b818601915086601f830112611fe057600080fd5b813581811115611fef57600080fd5b8760208260051b850101111561200457600080fd5b6020928301955093505084013561201a81611f3a565b809150509250925092565b60006020828403121561203757600080fd5b5035919050565b6000806040838503121561205157600080fd5b823561205c81611e9b565b91506020830135611f9481611e9b565b600181811c9082168061208057607f821691505b6020821081036120a057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156120ed57600080fd5b815161093a81611f3a565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016121365761213661210e565b5060010190565b6040808252810183905260008460608301825b8681101561218057823561216381611e9b565b6001600160a01b0316825260209283019290910190600101612150565b5080925050508215156020830152949350505050565b80820281158282048414176108245761082461210e565b808201808211156108245761082461210e565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60008261226557634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156108245761082461210e565b60006020828403121561228f57600080fd5b815161093a81611e9b565b600081518084526020808501945080840160005b838110156122d35781516001600160a01b0316875295820195908201906001016122ae565b509495945050505050565b85815284602082015260a0604082015260006122fd60a083018661229a565b6001600160a01b0394909416606083015250608001529392505050565b848152608060208201526000612333608083018661229a565b6001600160a01b0394909416604083015250606001529291505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ee86d9d211e5318152166ad1b725edadeeebb6cf19f29824a132cea7e8eedc5964736f6c634300081100334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
Deployed Bytecode
0x60806040526004361061024a5760003560e01c806395d89b4111610139578063c0246668116100b6578063d69f2f821161007a578063d69f2f82146106b9578063dd62ed3e146106cf578063e2f4560514610715578063e7f444b31461072b578063f2fde38b14610741578063ff2581971461076157600080fd5b8063c02466681461062d578063c492f0461461064d578063ce1df33f1461066d578063d0a3981414610683578063d257b34f1461069957600080fd5b8063a9059cbb116100fd578063a9059cbb1461058d578063aacebbe3146105ad578063b62496f5146105cd578063b9e93700146105fd578063bbc0c7421461061357600080fd5b806395d89b411461050c578063984f02d3146105215780639a36f932146105375780639a7a23d61461054d578063a457c2d71461056d57600080fd5b80636598d2d1116101c757806375f0a8741161018b57806375f0a874146104795780638519517a1461049957806388522998146104ae5780638da5cb5b146104ce5780639439ff28146104ec57600080fd5b80636598d2d1146103d757806368078952146103f95780636ddd17131461040f57806370a082311461042e578063715018a61461046457600080fd5b8063313ce5671161020e578063313ce5671461032857806333f5b15f1461034457806339509351146103645780634fbee193146103845780636053a0e3146103bd57600080fd5b806306fdde0314610256578063095ea7b31461028157806318160ddd146102b157806323b872dd146102d05780632c76d7a6146102f057600080fd5b3661025157005b600080fd5b34801561026257600080fd5b5061026b610781565b6040516102789190611e4d565b60405180910390f35b34801561028d57600080fd5b506102a161029c366004611eb0565b610813565b6040519015158152602001610278565b3480156102bd57600080fd5b506002545b604051908152602001610278565b3480156102dc57600080fd5b506102a16102eb366004611edc565b61082a565b3480156102fc57600080fd5b50600654610310906001600160a01b031681565b6040516001600160a01b039091168152602001610278565b34801561033457600080fd5b5060405160128152602001610278565b34801561035057600080fd5b506102a161035f366004611eb0565b610893565b34801561037057600080fd5b506102a161037f366004611eb0565b610941565b34801561039057600080fd5b506102a161039f366004611f1d565b6001600160a01b03166000908152601a602052604090205460ff1690565b3480156103c957600080fd5b50600b546102a19060ff1681565b3480156103e357600080fd5b506103f76103f2366004611f48565b610977565b005b34801561040557600080fd5b506102c260165481565b34801561041b57600080fd5b50600f546102a190610100900460ff1681565b34801561043a57600080fd5b506102c2610449366004611f1d565b6001600160a01b031660009081526020819052604090205490565b34801561047057600080fd5b506103f7610a01565b34801561048557600080fd5b50600854610310906001600160a01b031681565b3480156104a557600080fd5b506103f7610a75565b3480156104ba57600080fd5b50600754610310906001600160a01b031681565b3480156104da57600080fd5b506005546001600160a01b0316610310565b3480156104f857600080fd5b506103f7610507366004611f1d565b610bbb565b34801561051857600080fd5b5061026b610c9d565b34801561052d57600080fd5b506102c2600a5481565b34801561054357600080fd5b506102c260115481565b34801561055957600080fd5b506103f7610568366004611f66565b610cac565b34801561057957600080fd5b506102a1610588366004611eb0565b610d72565b34801561059957600080fd5b506102a16105a8366004611eb0565b610dc1565b3480156105b957600080fd5b506103f76105c8366004611f1d565b610dce565b3480156105d957600080fd5b506102a16105e8366004611f1d565b601b6020526000908152604090205460ff1681565b34801561060957600080fd5b506102c260155481565b34801561061f57600080fd5b50600f546102a19060ff1681565b34801561063957600080fd5b506103f7610648366004611f66565b610eb0565b34801561065957600080fd5b506103f7610668366004611f9f565b610f39565b34801561067957600080fd5b506102c260175481565b34801561068f57600080fd5b506102c260125481565b3480156106a557600080fd5b506102a16106b4366004612025565b611015565b3480156106c557600080fd5b506102c260145481565b3480156106db57600080fd5b506102c26106ea36600461203e565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561072157600080fd5b506102c2600c5481565b34801561073757600080fd5b506102c260135481565b34801561074d57600080fd5b506103f761075c366004611f1d565b61105f565b34801561076d57600080fd5b50600954610310906001600160a01b031681565b6060600380546107909061206c565b80601f01602080910402602001604051908101604052809291908181526020018280546107bc9061206c565b80156108095780601f106107de57610100808354040283529160200191610809565b820191906000526020600020905b8154815290600101906020018083116107ec57829003601f168201915b5050505050905090565b60006108203384846111a9565b5060015b92915050565b60006108378484846112ce565b610889843361088485604051806060016040528060288152602001612376602891396001600160a01b038a16600090815260016020908152604080832033845290915290205491906116cb565b6111a9565b5060019392505050565b6005546000906001600160a01b031633146108c95760405162461bcd60e51b81526004016108c0906120a6565b60405180910390fd5b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015610916573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093a91906120db565b9392505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610820918590610884908661114a565b6005546001600160a01b031633146109a15760405162461bcd60e51b81526004016108c0906120a6565b60648111156109eb5760405162461bcd60e51b81526020600482015260166024820152754d757374206265207365742062656c6f77203130302560501b60448201526064016108c0565b600a55600b805460ff1916911515919091179055565b6005546001600160a01b03163314610a2b5760405162461bcd60e51b81526004016108c0906120a6565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610a9f5760405162461bcd60e51b81526004016108c0906120a6565b6040517f537475636b204554482062616c616e63652066726f6d20636f6e7472616374208152701859191c995cdcc81c9958dbdd995c9959607a1b60208201526000903390479060310160006040518083038185875af1925050503d8060008114610b26576040519150601f19603f3d011682016040523d82523d6000602084013e610b2b565b606091505b5050905080610bb85760405162461bcd60e51b815260206004820152604d60248201527f4661696c65642e204569746865722063616c6c6572206973206e6f742074686560448201527f206f776e6572206f722061646472657373206973206e6f742074686520636f6e60648201526c7472616374206164647265737360981b608482015260a4016108c0565b50565b6005546001600160a01b03163314610be55760405162461bcd60e51b81526004016108c0906120a6565b6001600160a01b038116610c355760405162461bcd60e51b815260206004820152601760248201527663616e6e6f742073657420746f2030206164647265737360481b60448201526064016108c0565b610c40816001610eb0565b6009546040516001600160a01b03918216918316907f2609b19f26860a94a545927956c443b3a282ac05c8a55d161424777a0fa61e2090600090a3600980546001600160a01b0319166001600160a01b0392909216919091179055565b6060600480546107909061206c565b6005546001600160a01b03163314610cd65760405162461bcd60e51b81526004016108c0906120a6565b6007546001600160a01b0390811690831603610d645760405162461bcd60e51b815260206004820152604160248201527f54686520556e695377617020706169722063616e6e6f742062652072656d6f7660448201527f65642066726f6d204175746f6d617465644d61726b65744d616b6572506169726064820152607360f81b608482015260a4016108c0565b610d6e8282611705565b5050565b600061082033846108848560405180606001604052806025815260200161239e602591393360009081526001602090815260408083206001600160a01b038d16845290915290205491906116cb565b60006108203384846112ce565b6005546001600160a01b03163314610df85760405162461bcd60e51b81526004016108c0906120a6565b6001600160a01b038116610e485760405162461bcd60e51b815260206004820152601760248201527663616e6e6f742073657420746f2030206164647265737360481b60448201526064016108c0565b610e53816001610eb0565b6008546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567490600090a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610eda5760405162461bcd60e51b81526004016108c0906120a6565b6001600160a01b0382166000818152601a6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610f635760405162461bcd60e51b81526004016108c0906120a6565b60005b82811015610fd45781601a6000868685818110610f8557610f856120f8565b9050602002016020810190610f9a9190611f1d565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610fcc81612124565b915050610f66565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b358383836040516110089392919061213d565b60405180910390a1505050565b6005546000906001600160a01b031633146110425760405162461bcd60e51b81526004016108c0906120a6565b61105482670de0b6b3a7640000612196565b600c55506001919050565b6005546001600160a01b031633146110895760405162461bcd60e51b81526004016108c0906120a6565b6001600160a01b0381166110ee5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108c0565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b60008061115783856121ad565b90508381101561093a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016108c0565b6001600160a01b03831661120b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108c0565b6001600160a01b03821661126c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108c0565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166112f45760405162461bcd60e51b81526004016108c0906121c0565b6001600160a01b03821661131a5760405162461bcd60e51b81526004016108c090612205565b806000036113335761132e83836000611759565b505050565b600f5460ff161580611353575043600e54600261135091906121ad565b10155b156113f5576001600160a01b0383166000908152601a602052604090205460ff168061139757506001600160a01b0382166000908152601a602052604090205460ff165b6113f55760405162461bcd60e51b815260206004820152602960248201527f54726164696e6720697320616c77617973206163746976652061667465722064604482015268195c1b1bde5b595b9d60ba1b60648201526084016108c0565b30600090815260208190526040902054600c54811080159081906114205750600f54610100900460ff165b80156114365750600754600160a01b900460ff16155b801561145b57506001600160a01b0385166000908152601b602052604090205460ff16155b801561148057506001600160a01b0385166000908152601a602052604090205460ff16155b80156114a557506001600160a01b0384166000908152601a602052604090205460ff16155b156114d3576007805460ff60a01b1916600160a01b1790556114c5611862565b6007805460ff60a01b191690555b6007546001600160a01b0386166000908152601a602052604090205460ff600160a01b90920482161591168061152157506001600160a01b0385166000908152601a602052604090205460ff165b1561152a575060005b600081156116b7576001600160a01b0386166000908152601b602052604090205460ff16801561155c57506000601254115b156115eb5761158260115461157c60125488611a6b90919063ffffffff16565b90611aed565b9050601254601354826115959190612196565b61159f9190612248565b601860008282546115b091906121ad565b90915550506012546014546115c59083612196565b6115cf9190612248565b601960008282546115e091906121ad565b909155506116999050565b6001600160a01b0387166000908152601b602052604090205460ff16801561161557506000601554115b156116995761163560115461157c60155488611a6b90919063ffffffff16565b9050601554601654826116489190612196565b6116529190612248565b6018600082825461166391906121ad565b90915550506015546017546116789083612196565b6116829190612248565b6019600082825461169391906121ad565b90915550505b80156116aa576116aa873083611759565b6116b4818661226a565b94505b6116c2878787611759565b50505050505050565b600081848411156116ef5760405162461bcd60e51b81526004016108c09190611e4d565b5060006116fc848661226a565b95945050505050565b6001600160a01b0382166000818152601b6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b03831661177f5760405162461bcd60e51b81526004016108c0906121c0565b6001600160a01b0382166117a55760405162461bcd60e51b81526004016108c090612205565b6117e281604051806060016040528060268152602001612350602691396001600160a01b03861660009081526020819052604090205491906116cb565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611811908261114a565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016112c1565b306000908152602081905260408120549050600060195460185461188691906121ad565b9050811580611893575080155b1561189c575050565b6000476118a884611b2f565b60006118b44783611c89565b905060006118d18561157c60185485611a6b90919063ffffffff16565b905060006118ee8661157c60195486611a6b90919063ffffffff16565b6009546040519192506001600160a01b0316908290600081818185875af1925050503d806000811461193c576040519150601f19603f3d011682016040523d82523d6000602084013e611941565b606091505b5050600b5490955060ff16156119f957600854600a546001600160a01b03909116906064906119709085612196565b61197a9190612248565b6040517f4175746f6d61746564204275794261636b20636f6d706c6574656400000000008152601b0160006040518083038185875af1925050503d80600081146119e0576040519150601f19603f3d011682016040523d82523d6000602084013e6119e5565b606091505b5050809550506119f447611ccb565b6116c2565b600854604051665375636365737360c81b81526001600160a01b0390911690479060070160006040518083038185875af1925050503d8060008114611a5a576040519150601f19603f3d011682016040523d82523d6000602084013e611a5f565b606091505b50505050505050505050565b600082600003611a7d57506000610824565b6000611a898385612196565b905082611a968583612248565b1461093a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016108c0565b600061093a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e1f565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611b6457611b646120f8565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611bbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be1919061227d565b81600181518110611bf457611bf46120f8565b6001600160a01b039283166020918202929092010152600654611c1a91309116846111a9565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611c539085906000908690309042906004016122de565b600060405180830381600087803b158015611c6d57600080fd5b505af1158015611c81573d6000803e3d6000fd5b505050505050565b600061093a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506116cb565b8015610bb8576040805160028082526060820183526000926020830190803683375050600654604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015611d3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d5f919061227d565b81600081518110611d7257611d726120f8565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611da657611da66120f8565b6001600160a01b03928316602091820292909201015260065460085460405163b6f9de9560e01b81529183169263b6f9de95928692611df292600092889290911690429060040161231a565b6000604051808303818588803b158015611e0b57600080fd5b505af11580156116c2573d6000803e3d6000fd5b60008183611e405760405162461bcd60e51b81526004016108c09190611e4d565b5060006116fc8486612248565b600060208083528351808285015260005b81811015611e7a57858101830151858201604001528201611e5e565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610bb857600080fd5b60008060408385031215611ec357600080fd5b8235611ece81611e9b565b946020939093013593505050565b600080600060608486031215611ef157600080fd5b8335611efc81611e9b565b92506020840135611f0c81611e9b565b929592945050506040919091013590565b600060208284031215611f2f57600080fd5b813561093a81611e9b565b8015158114610bb857600080fd5b60008060408385031215611f5b57600080fd5b8235611ece81611f3a565b60008060408385031215611f7957600080fd5b8235611f8481611e9b565b91506020830135611f9481611f3a565b809150509250929050565b600080600060408486031215611fb457600080fd5b833567ffffffffffffffff80821115611fcc57600080fd5b818601915086601f830112611fe057600080fd5b813581811115611fef57600080fd5b8760208260051b850101111561200457600080fd5b6020928301955093505084013561201a81611f3a565b809150509250925092565b60006020828403121561203757600080fd5b5035919050565b6000806040838503121561205157600080fd5b823561205c81611e9b565b91506020830135611f9481611e9b565b600181811c9082168061208057607f821691505b6020821081036120a057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156120ed57600080fd5b815161093a81611f3a565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016121365761213661210e565b5060010190565b6040808252810183905260008460608301825b8681101561218057823561216381611e9b565b6001600160a01b0316825260209283019290910190600101612150565b5080925050508215156020830152949350505050565b80820281158282048414176108245761082461210e565b808201808211156108245761082461210e565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60008261226557634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156108245761082461210e565b60006020828403121561228f57600080fd5b815161093a81611e9b565b600081518084526020808501945080840160005b838110156122d35781516001600160a01b0316875295820195908201906001016122ae565b509495945050505050565b85815284602082015260a0604082015260006122fd60a083018661229a565b6001600160a01b0394909416606083015250608001529392505050565b848152608060208201526000612333608083018661229a565b6001600160a01b0394909416604083015250606001529291505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ee86d9d211e5318152166ad1b725edadeeebb6cf19f29824a132cea7e8eedc5964736f6c63430008110033
Deployed Bytecode Sourcemap
16112:12043:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4908:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5822:169;;;;;;;;;;-1:-1:-1;5822:169:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;5822:169:0;1023:187:1;5229:108:0;;;;;;;;;;-1:-1:-1;5317:12:0;;5229:108;;;1361:25:1;;;1349:2;1334:18;5229:108:0;1215:177:1;5999:355:0;;;;;;;;;;-1:-1:-1;5999:355:0;;;;;:::i;:::-;;:::i;16186:41::-;;;;;;;;;;-1:-1:-1;16186:41:0;;;;-1:-1:-1;;;;;16186:41:0;;;;;;-1:-1:-1;;;;;2049:32:1;;;2031:51;;2019:2;2004:18;16186:41:0;1858:230:1;5128:93:0;;;;;;;;;;-1:-1:-1;5128:93:0;;5211:2;2235:36:1;;2223:2;2208:18;5128:93:0;2093:184:1;27557:176:0;;;;;;;;;;-1:-1:-1;27557:176:0;;;;;:::i;:::-;;:::i;6362:218::-;;;;;;;;;;-1:-1:-1;6362:218:0;;;;;:::i;:::-;;:::i;22175:125::-;;;;;;;;;;-1:-1:-1;22175:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;22264:28:0;22240:4;22264:28;;;:19;:28;;;;;;;;;22175:125;16420:33;;;;;;;;;;-1:-1:-1;16420:33:0;;;;;;;;27870:282;;;;;;;;;;-1:-1:-1;27870:282:0;;;;;:::i;:::-;;:::i;:::-;;16944:30;;;;;;;;;;;;;;;;16637;;;;;;;;;;-1:-1:-1;16637:30:0;;;;;;;;;;;5345:127;;;;;;;;;;-1:-1:-1;5345:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;5446:18:0;5419:7;5446:18;;;;;;;;;;;;5345:127;10805:150;;;;;;;;;;;;;:::i;16299:30::-;;;;;;;;;;-1:-1:-1;16299:30:0;;;;-1:-1:-1;;;;;16299:30:0;;;27163:301;;;;;;;;;;;;;:::i;16234:28::-;;;;;;;;;;-1:-1:-1;16234:28:0;;;;-1:-1:-1;;;;;16234:28:0;;;10591:79;;;;;;;;;;-1:-1:-1;10656:6:0;;-1:-1:-1;;;;;10656:6:0;10591:79;;21877:290;;;;;;;;;;-1:-1:-1;21877:290:0;;;;;:::i;:::-;;:::i;5016:104::-;;;;;;;;;;;;;:::i;16374:39::-;;;;;;;;;;;;;;;;16758:31;;;;;;;;;;;;;;;;20887:250;;;;;;;;;;-1:-1:-1;20887:250:0;;;;;:::i;:::-;;:::i;6588:269::-;;;;;;;;;;-1:-1:-1;6588:269:0;;;;;:::i;:::-;;:::i;5480:175::-;;;;;;;;;;-1:-1:-1;5480:175:0;;;;;:::i;:::-;;:::i;21439:339::-;;;;;;;;;;-1:-1:-1;21439:339:0;;;;;:::i;:::-;;:::i;17164:58::-;;;;;;;;;;-1:-1:-1;17164:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16910:27;;;;;;;;;;;;;;;;16598:32;;;;;;;;;;-1:-1:-1;16598:32:0;;;;;;;;20256:184;;;;;;;;;;-1:-1:-1;20256:184:0;;;;;:::i;:::-;;:::i;20573:306::-;;;;;;;;;;-1:-1:-1;20573:306:0;;;;;:::i;:::-;;:::i;16981:29::-;;;;;;;;;;;;;;;;16798:28;;;;;;;;;;;;;;;;19955:174;;;;;;;;;;-1:-1:-1;19955:174:0;;;;;:::i;:::-;;:::i;16871:30::-;;;;;;;;;;;;;;;;5663:151;;;;;;;;;;-1:-1:-1;5663:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;5779:18:0;;;5752:7;5779:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5663:151;16462:33;;;;;;;;;;;;;;;;16833:31;;;;;;;;;;;;;;;;10965:244;;;;;;;;;;-1:-1:-1;10965:244:0;;;;;:::i;:::-;;:::i;16336:29::-;;;;;;;;;;-1:-1:-1;16336:29:0;;;;-1:-1:-1;;;;;16336:29:0;;;4908:100;4962:13;4995:5;4988:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4908:100;:::o;5822:169::-;5905:4;5922:39;258:10;5945:7;5954:6;5922:8;:39::i;:::-;-1:-1:-1;5979:4:0;5822:169;;;;;:::o;5999:355::-;6139:4;6156:36;6166:6;6174:9;6185:6;6156:9;:36::i;:::-;6203:121;6212:6;258:10;6234:89;6272:6;6234:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6234:19:0;;;;;;:11;:19;;;;;;;;258:10;6234:33;;;;;;;;;;:37;:89::i;:::-;6203:8;:121::i;:::-;-1:-1:-1;6342:4:0;5999:355;;;;;:::o;27557:176::-;10718:6;;27650:12;;-1:-1:-1;;;;;10718:6:0;258:10;10718:22;10710:67;;;;-1:-1:-1;;;10710:67:0;;;;;;;:::i;:::-;;;;;;;;;27677:48:::1;::::0;-1:-1:-1;;;27677:48:0;;27706:10:::1;27677:48;::::0;::::1;5819:51:1::0;5886:18;;;5879:34;;;-1:-1:-1;;;;;27677:28:0;::::1;::::0;::::1;::::0;5792:18:1;;27677:48:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27670:55:::0;27557:176;-1:-1:-1;;;27557:176:0:o;6362:218::-;258:10;6450:4;6499:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6499:34:0;;;;;;;;;;6450:4;;6467:83;;6490:7;;6499:50;;6538:10;6499:38;:50::i;27870:282::-;10718:6;;-1:-1:-1;;;;;10718:6:0;258:10;10718:22;10710:67;;;;-1:-1:-1;;;10710:67:0;;;;;;;:::i;:::-;28018:3:::1;27994:20;:27;;27986:62;;;::::0;-1:-1:-1;;;27986:62:0;;6376:2:1;27986:62:0::1;::::0;::::1;6358:21:1::0;6415:2;6395:18;;;6388:30;-1:-1:-1;;;6434:18:1;;;6427:52;6496:18;;27986:62:0::1;6174:346:1::0;27986:62:0::1;28059:19;:42:::0;28112:14:::1;:32:::0;;-1:-1:-1;;28112:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27870:282::o;10805:150::-;10718:6;;-1:-1:-1;;;;;10718:6:0;258:10;10718:22;10710:67;;;;-1:-1:-1;;;10710:67:0;;;;;;;:::i;:::-;10898:6:::1;::::0;10877:40:::1;::::0;10914:1:::1;::::0;-1:-1:-1;;;;;10898:6:0::1;::::0;10877:40:::1;::::0;10914:1;;10877:40:::1;10928:6;:19:::0;;-1:-1:-1;;;;;;10928:19:0::1;::::0;;10805:150::o;27163:301::-;10718:6;;-1:-1:-1;;;;;10718:6:0;258:10;10718:22;10710:67;;;;-1:-1:-1;;;10710:67:0;;;;;;;:::i;:::-;27241:107:::1;::::0;6738:34:1;6726:47;;-1:-1:-1;;;6798:2:1;6789:12;;6782:41;27224:12:0::1;::::0;27249:10:::1;::::0;27273:21:::1;::::0;6848:2:1;6839:12;27241:107:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27223:125;;;27367:7;27359:97;;;::::0;-1:-1:-1;;;27359:97:0;;7064:2:1;27359:97:0::1;::::0;::::1;7046:21:1::0;7103:2;7083:18;;;7076:30;7142:34;7122:18;;;7115:62;7213:34;7193:18;;;7186:62;-1:-1:-1;;;7264:19:1;;;7257:44;7318:19;;27359:97:0::1;6862:481:1::0;27359:97:0::1;27212:252;27163:301::o:0;21877:290::-;10718:6;;-1:-1:-1;;;;;10718:6:0;258:10;10718:22;10710:67;;;;-1:-1:-1;;;10710:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21964:23:0;::::1;21956:59;;;::::0;-1:-1:-1;;;21956:59:0;;7550:2:1;21956:59:0::1;::::0;::::1;7532:21:1::0;7589:2;7569:18;;;7562:30;-1:-1:-1;;;7608:18:1;;;7601:53;7671:18;;21956:59:0::1;7348:347:1::0;21956:59:0::1;22026:32;22042:9;22053:4;22026:15;:32::i;:::-;22107:14;::::0;22074:48:::1;::::0;-1:-1:-1;;;;;22107:14:0;;::::1;::::0;22074:48;::::1;::::0;::::1;::::0;22107:14:::1;::::0;22074:48:::1;22133:14;:26:::0;;-1:-1:-1;;;;;;22133:26:0::1;-1:-1:-1::0;;;;;22133:26:0;;;::::1;::::0;;;::::1;::::0;;21877:290::o;5016:104::-;5072:13;5105:7;5098:14;;;;;:::i;20887:250::-;10718:6;;-1:-1:-1;;;;;10718:6:0;258:10;10718:22;10710:67;;;;-1:-1:-1;;;10710:67:0;;;;;;;:::i;:::-;20994:13:::1;::::0;-1:-1:-1;;;;;20994:13:0;;::::1;20986:21:::0;;::::1;::::0;20978:99:::1;;;::::0;-1:-1:-1;;;20978:99:0;;7902:2:1;20978:99:0::1;::::0;::::1;7884:21:1::0;7941:2;7921:18;;;7914:30;7980:34;7960:18;;;7953:62;8051:34;8031:18;;;8024:62;-1:-1:-1;;;8102:19:1;;;8095:32;8144:19;;20978:99:0::1;7700:469:1::0;20978:99:0::1;21088:41;21117:4;21123:5;21088:28;:41::i;:::-;20887:250:::0;;:::o;6588:269::-;6681:4;6698:129;258:10;6721:7;6730:96;6769:15;6730:96;;;;;;;;;;;;;;;;;258:10;6730:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6730:34:0;;;;;;;;;;;;:38;:96::i;5480:175::-;5566:4;5583:42;258:10;5607:9;5618:6;5583:9;:42::i;21439:339::-;10718:6;;-1:-1:-1;;;;;10718:6:0;258:10;10718:22;10710:67;;;;-1:-1:-1;;;10710:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21536:32:0;::::1;21528:68;;;::::0;-1:-1:-1;;;21528:68:0;;7550:2:1;21528:68:0::1;::::0;::::1;7532:21:1::0;7589:2;7569:18;;;7562:30;-1:-1:-1;;;7608:18:1;;;7601:53;7671:18;;21528:68:0::1;7348:347:1::0;21528:68:0::1;21607:41;21623:18;21643:4;21607:15;:41::i;:::-;21707:15;::::0;21664:59:::1;::::0;-1:-1:-1;;;;;21707:15:0;;::::1;::::0;21664:59;::::1;::::0;::::1;::::0;21707:15:::1;::::0;21664:59:::1;21734:15;:36:::0;;-1:-1:-1;;;;;;21734:36:0::1;-1:-1:-1::0;;;;;21734:36:0;;;::::1;::::0;;;::::1;::::0;;21439:339::o;20256:184::-;10718:6;;-1:-1:-1;;;;;10718:6:0;258:10;10718:22;10710:67;;;;-1:-1:-1;;;10710:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20341:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;20341:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;20398:34;;1163:41:1;;;20398:34:0::1;::::0;1136:18:1;20398:34:0::1;;;;;;;20256:184:::0;;:::o;20573:306::-;10718:6;;-1:-1:-1;;;;;10718:6:0;258:10;10718:22;10710:67;;;;-1:-1:-1;;;10710:67:0;;;;;;;:::i;:::-;20692:9:::1;20688:115;20707:19:::0;;::::1;20688:115;;;20783:8;20748:19;:32;20768:8;;20777:1;20768:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20748:32:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;20748:32:0;:43;;-1:-1:-1;;20748:43:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20728:3;::::1;::::0;::::1;:::i;:::-;;;;20688:115;;;;20820:51;20852:8;;20862;20820:51;;;;;;;;:::i;:::-;;;;;;;;20573:306:::0;;;:::o;19955:174::-;10718:6;;20036:4;;-1:-1:-1;;;;;10718:6:0;258:10;10718:22;10710:67;;;;-1:-1:-1;;;10710:67:0;;;;;;;:::i;:::-;20075:20:::1;:9:::0;20088:6:::1;20075:20;:::i;:::-;20054:18;:41:::0;-1:-1:-1;20115:4:0::1;19955:174:::0;;;:::o;10965:244::-;10718:6;;-1:-1:-1;;;;;10718:6:0;258:10;10718:22;10710:67;;;;-1:-1:-1;;;10710:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11054:22:0;::::1;11046:73;;;::::0;-1:-1:-1;;;11046:73:0;;9752:2:1;11046:73:0::1;::::0;::::1;9734:21:1::0;9791:2;9771:18;;;9764:30;9830:34;9810:18;;;9803:62;-1:-1:-1;;;9881:18:1;;;9874:36;9927:19;;11046:73:0::1;9550:402:1::0;11046:73:0::1;11156:6;::::0;11135:38:::1;::::0;-1:-1:-1;;;;;11135:38:0;;::::1;::::0;11156:6:::1;::::0;11135:38:::1;::::0;11156:6:::1;::::0;11135:38:::1;11184:6;:17:::0;;-1:-1:-1;;;;;;11184:17:0::1;-1:-1:-1::0;;;;;11184:17:0;;;::::1;::::0;;;::::1;::::0;;10965:244::o;8824:181::-;8882:7;;8914:5;8918:1;8914;:5;:::i;:::-;8902:17;;8943:1;8938;:6;;8930:46;;;;-1:-1:-1;;;8930:46:0;;10289:2:1;8930:46:0;;;10271:21:1;10328:2;10308:18;;;10301:30;10367:29;10347:18;;;10340:57;10414:18;;8930:46:0;10087:351:1;8278:380:0;-1:-1:-1;;;;;8414:19:0;;8406:68;;;;-1:-1:-1;;;8406:68:0;;10645:2:1;8406:68:0;;;10627:21:1;10684:2;10664:18;;;10657:30;10723:34;10703:18;;;10696:62;-1:-1:-1;;;10774:18:1;;;10767:34;10818:19;;8406:68:0;10443:400:1;8406:68:0;-1:-1:-1;;;;;8493:21:0;;8485:68;;;;-1:-1:-1;;;8485:68:0;;11050:2:1;8485:68:0;;;11032:21:1;11089:2;11069:18;;;11062:30;11128:34;11108:18;;;11101:62;-1:-1:-1;;;11179:18:1;;;11172:32;11221:19;;8485:68:0;10848:398:1;8485:68:0;-1:-1:-1;;;;;8566:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8618:32;;1361:25:1;;;8618:32:0;;1334:18:1;8618:32:0;;;;;;;;8278:380;;;:::o;22308:2164::-;-1:-1:-1;;;;;22440:18:0;;22432:68;;;;-1:-1:-1;;;22432:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22519:16:0;;22511:64;;;;-1:-1:-1;;;22511:64:0;;;;;;;:::i;:::-;22592:6;22602:1;22592:11;22589:92;;22620:28;22636:4;22642:2;22646:1;22620:15;:28::i;:::-;22308:2164;;;:::o;22589:92::-;22697:13;;;;22696:14;;:56;;;22740:12;22714:18;;22735:1;22714:22;;;;:::i;:::-;:38;;22696:56;22693:193;;;-1:-1:-1;;;;;22776:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;22805:23:0;;;;;;:19;:23;;;;;;;;22776:52;22768:106;;;;-1:-1:-1;;;22768:106:0;;12263:2:1;22768:106:0;;;12245:21:1;12302:2;12282:18;;;12275:30;12341:34;12321:18;;;12314:62;-1:-1:-1;;;12392:18:1;;;12385:39;12441:19;;22768:106:0;12061:405:1;22768:106:0;22947:4;22898:28;5446:18;;;;;;;;;;;23005;;22981:42;;;;;;;23053:35;;-1:-1:-1;23077:11:0;;;;;;;23053:35;:61;;;;-1:-1:-1;23106:8:0;;-1:-1:-1;;;23106:8:0;;;;23105:9;23053:61;:110;;;;-1:-1:-1;;;;;;23132:31:0;;;;;;:25;:31;;;;;;;;23131:32;23053:110;:153;;;;-1:-1:-1;;;;;;23181:25:0;;;;;;:19;:25;;;;;;;;23180:26;23053:153;:194;;;;-1:-1:-1;;;;;;23224:23:0;;;;;;:19;:23;;;;;;;;23223:24;23053:194;23036:321;;;23274:8;:15;;-1:-1:-1;;;;23274:15:0;-1:-1:-1;;;23274:15:0;;;23304:10;:8;:10::i;:::-;23329:8;:16;;-1:-1:-1;;;;23329:16:0;;;23036:321;23385:8;;-1:-1:-1;;;;;23411:25:0;;23369:12;23411:25;;;:19;:25;;;;;;23385:8;-1:-1:-1;;;23385:8:0;;;;;23384:9;;23411:25;;:52;;-1:-1:-1;;;;;;23440:23:0;;;;;;:19;:23;;;;;;;;23411:52;23408:99;;;-1:-1:-1;23490:5:0;23408:99;23519:12;23553:7;23550:867;;;-1:-1:-1;;;;;23621:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;23670:1;23654:13;;:17;23621:50;23617:651;;;23698:41;23728:10;;23698:25;23709:13;;23698:6;:10;;:25;;;;:::i;:::-;:29;;:41::i;:::-;23691:48;;23806:13;;23787:16;;23780:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;23758:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;23884:13:0;;23866:15;;23859:22;;:4;:22;:::i;:::-;:38;;;;:::i;:::-;23838:17;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;23617:651:0;;-1:-1:-1;23617:651:0;;-1:-1:-1;;;;;23973:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;24023:1;24008:12;;:16;23973:51;23970:298;;;24052:40;24081:10;;24052:24;24063:12;;24052:6;:10;;:24;;;;:::i;:40::-;24045:47;;24158:12;;24140:15;;24133:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;24111:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;24234:12:0;;24217:14;;24210:21;;:4;:21;:::i;:::-;:36;;;;:::i;:::-;24189:17;;:57;;;;;;;:::i;:::-;;;;-1:-1:-1;;23970:298:0;24289:8;;24286:89;;24317:42;24333:4;24347;24354;24317:15;:42::i;:::-;24391:14;24401:4;24391:14;;:::i;:::-;;;23550:867;24429:33;24445:4;24451:2;24455:6;24429:15;:33::i;:::-;22421:2051;;;;22308:2164;;;:::o;9159:192::-;9245:7;9281:12;9273:6;;;;9265:29;;;;-1:-1:-1;;;9265:29:0;;;;;;;;:::i;:::-;-1:-1:-1;9305:9:0;9317:5;9321:1;9317;:5;:::i;:::-;9305:17;9159:192;-1:-1:-1;;;;;9159:192:0:o;21145:186::-;-1:-1:-1;;;;;21228:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;21228:39:0;;;;;;;;;;21283:40;;21228:39;;:31;21283:40;;;21145:186;;:::o;6865:573::-;-1:-1:-1;;;;;7005:20:0;;6997:70;;;;-1:-1:-1;;;6997:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7086:23:0;;7078:71;;;;-1:-1:-1;;;7078:71:0;;;;;;;:::i;:::-;7242;7264:6;7242:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7242:17:0;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;7222:17:0;;;:9;:17;;;;;;;;;;;:91;;;;7347:20;;;;;;;:32;;7372:6;7347:24;:32::i;:::-;-1:-1:-1;;;;;7324:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;7395:35;1361:25:1;;;7324:20:0;;7395:35;;;;;;1334:18:1;7395:35:0;1215:177:1;25891:1082:0;25974:4;25930:23;5446:18;;;;;;;;;;;25930:50;;25991:25;26040:17;;26019:18;;:38;;;;:::i;:::-;25991:66;-1:-1:-1;26073:20:0;;;:46;;-1:-1:-1;26097:22:0;;26073:46;26070:60;;;26122:7;;25891:1082::o;26070:60::-;26142:12;26195:21;26229:33;26246:15;26229:16;:33::i;:::-;26275:18;26296:44;:21;26322:17;26296:25;:44::i;:::-;26275:65;;26353:23;26379:57;26418:17;26379:34;26394:18;;26379:10;:14;;:34;;;;:::i;:57::-;26353:83;;26447:22;26471:56;26509:17;26471:33;26486:17;;26471:10;:14;;:33;;;;:::i;:56::-;26561:14;;26553:55;;26447:80;;-1:-1:-1;;;;;;26561:14:0;;26447:80;;26553:55;;;;26447:80;26561:14;26553:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;26624:14:0;;26540:68;;-1:-1:-1;26624:14:0;;26621:345;;;26675:15;;26722:19;;-1:-1:-1;;;;;26675:15:0;;;;26744:3;;26704:37;;:15;:37;:::i;:::-;:43;;;;:::i;:::-;26667:112;;13249:29:1;13237:42;;13304:2;13295:12;26667:112:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26654:125;;;;;26794:44;26816:21;26794;:44::i;:::-;26621:345;;;26892:15;;26884:70;;-1:-1:-1;;;13519:22:1;;-1:-1:-1;;;;;26892:15:0;;;;26921:21;;13566:1:1;13557:11;26884:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;25891:1082:0:o;9361:252::-;9419:7;9445:1;9450;9445:6;9441:47;;-1:-1:-1;9475:1:0;9468:8;;9441:47;9500:9;9512:5;9516:1;9512;:5;:::i;:::-;9500:17;-1:-1:-1;9545:1:0;9536:5;9540:1;9500:17;9536:5;:::i;:::-;:10;9528:56;;;;-1:-1:-1;;;9528:56:0;;13781:2:1;9528:56:0;;;13763:21:1;13820:2;13800:18;;;13793:30;13859:34;13839:18;;;13832:62;-1:-1:-1;;;13910:18:1;;;13903:31;13951:19;;9528:56:0;13579:397:1;9621:132:0;9679:7;9706:39;9710:1;9713;9706:39;;;;;;;;;;;;;;;;;:3;:39::i;24969:479::-;25061:16;;;25075:1;25061:16;;;;;;;;25037:21;;25061:16;;;;;;;;;;-1:-1:-1;25061:16:0;25037:40;;25106:4;25088;25093:1;25088:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;25088:23:0;;;:7;;;;;;;;;;:23;;;;25132:15;;:22;;;-1:-1:-1;;;25132:22:0;;;;:15;;;;;:20;;:22;;;;;25088:7;;25132:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25122:4;25127:1;25122:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;25122:32:0;;;:7;;;;;;;;;:32;25199:15;;25167:62;;25184:4;;25199:15;25217:11;25167:8;:62::i;:::-;25242:15;;:196;;-1:-1:-1;;;25242:196:0;;-1:-1:-1;;;;;25242:15:0;;;;:66;;:196;;25323:11;;25242:15;;25365:4;;25392;;25412:15;;25242:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25024:424;24969:479;:::o;9015:136::-;9073:7;9100:43;9104:1;9107;9100:43;;;;;;;;;;;;;;;;;:3;:43::i;24480:481::-;24552:13;;24549:405;;24605:16;;;24619:1;24605:16;;;;;;;;24581:21;;24605:16;;;;;;;;-1:-1:-1;;24646:15:0;;:22;;;-1:-1:-1;;;24646:22:0;;;;24581:40;;-1:-1:-1;;;;;;24646:15:0;;;;:20;;-1:-1:-1;24646:22:0;;;;;;;;;;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24636:4;24641:1;24636:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;24636:32:0;;;-1:-1:-1;;;;;24636:32:0;;;;;24701:4;24683;24688:1;24683:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24683:23:0;;;:7;;;;;;;;;:23;24723:15;;24877;;24723:219;;-1:-1:-1;;;24723:219:0;;:15;;;;:66;;24797:9;;24723:219;;:15;;24846:4;;24877:15;;;;24912;;24723:219;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9761:191;9847:7;9882:12;9875:5;9867:28;;;;-1:-1:-1;;;9867:28:0;;;;;;;;:::i;:::-;-1:-1:-1;9906:9:0;9918:5;9922:1;9918;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2282:247::-;2341:6;2394:2;2382:9;2373:7;2369:23;2365:32;2362:52;;;2410:1;2407;2400:12;2362:52;2449:9;2436:23;2468:31;2493:5;2468:31;:::i;2534:118::-;2620:5;2613:13;2606:21;2599:5;2596:32;2586:60;;2642:1;2639;2632:12;2657:309;2722:6;2730;2783:2;2771:9;2762:7;2758:23;2754:32;2751:52;;;2799:1;2796;2789:12;2751:52;2838:9;2825:23;2857:28;2879:5;2857:28;:::i;3179:382::-;3244:6;3252;3305:2;3293:9;3284:7;3280:23;3276:32;3273:52;;;3321:1;3318;3311:12;3273:52;3360:9;3347:23;3379:31;3404:5;3379:31;:::i;:::-;3429:5;-1:-1:-1;3486:2:1;3471:18;;3458:32;3499:30;3458:32;3499:30;:::i;:::-;3548:7;3538:17;;;3179:382;;;;;:::o;3566:750::-;3658:6;3666;3674;3727:2;3715:9;3706:7;3702:23;3698:32;3695:52;;;3743:1;3740;3733:12;3695:52;3783:9;3770:23;3812:18;3853:2;3845:6;3842:14;3839:34;;;3869:1;3866;3859:12;3839:34;3907:6;3896:9;3892:22;3882:32;;3952:7;3945:4;3941:2;3937:13;3933:27;3923:55;;3974:1;3971;3964:12;3923:55;4014:2;4001:16;4040:2;4032:6;4029:14;4026:34;;;4056:1;4053;4046:12;4026:34;4111:7;4104:4;4094:6;4091:1;4087:14;4083:2;4079:23;4075:34;4072:47;4069:67;;;4132:1;4129;4122:12;4069:67;4163:4;4155:13;;;;-1:-1:-1;4187:6:1;-1:-1:-1;;4228:20:1;;4215:34;4258:28;4215:34;4258:28;:::i;:::-;4305:5;4295:15;;;3566:750;;;;;:::o;4321:180::-;4380:6;4433:2;4421:9;4412:7;4408:23;4404:32;4401:52;;;4449:1;4446;4439:12;4401:52;-1:-1:-1;4472:23:1;;4321:180;-1:-1:-1;4321:180:1:o;4506:388::-;4574:6;4582;4635:2;4623:9;4614:7;4610:23;4606:32;4603:52;;;4651:1;4648;4641:12;4603:52;4690:9;4677:23;4709:31;4734:5;4709:31;:::i;:::-;4759:5;-1:-1:-1;4816:2:1;4801:18;;4788:32;4829:33;4788:32;4829:33;:::i;4899:380::-;4978:1;4974:12;;;;5021;;;5042:61;;5096:4;5088:6;5084:17;5074:27;;5042:61;5149:2;5141:6;5138:14;5118:18;5115:38;5112:161;;5195:10;5190:3;5186:20;5183:1;5176:31;5230:4;5227:1;5220:15;5258:4;5255:1;5248:15;5112:161;;4899:380;;;:::o;5284:356::-;5486:2;5468:21;;;5505:18;;;5498:30;5564:34;5559:2;5544:18;;5537:62;5631:2;5616:18;;5284:356::o;5924:245::-;5991:6;6044:2;6032:9;6023:7;6019:23;6015:32;6012:52;;;6060:1;6057;6050:12;6012:52;6092:9;6086:16;6111:28;6133:5;6111:28;:::i;8174:127::-;8235:10;8230:3;8226:20;8223:1;8216:31;8266:4;8263:1;8256:15;8290:4;8287:1;8280:15;8306:127;8367:10;8362:3;8358:20;8355:1;8348:31;8398:4;8395:1;8388:15;8422:4;8419:1;8412:15;8438:135;8477:3;8498:17;;;8495:43;;8518:18;;:::i;:::-;-1:-1:-1;8565:1:1;8554:13;;8438:135::o;8578:794::-;8800:2;8812:21;;;8785:18;;8868:22;;;8752:4;8947:6;8921:2;8906:18;;8752:4;8981:304;8995:6;8992:1;8989:13;8981:304;;;9070:6;9057:20;9090:31;9115:5;9090:31;:::i;:::-;-1:-1:-1;;;;;9146:31:1;9134:44;;9201:4;9260:15;;;;9225:12;;;;9174:1;9010:9;8981:304;;;8985:3;9302;9294:11;;;;9357:6;9350:14;9343:22;9336:4;9325:9;9321:20;9314:52;8578:794;;;;;;:::o;9377:168::-;9450:9;;;9481;;9498:15;;;9492:22;;9478:37;9468:71;;9519:18;;:::i;9957:125::-;10022:9;;;10043:10;;;10040:36;;;10056:18;;:::i;11251:401::-;11453:2;11435:21;;;11492:2;11472:18;;;11465:30;11531:34;11526:2;11511:18;;11504:62;-1:-1:-1;;;11597:2:1;11582:18;;11575:35;11642:3;11627:19;;11251:401::o;11657:399::-;11859:2;11841:21;;;11898:2;11878:18;;;11871:30;11937:34;11932:2;11917:18;;11910:62;-1:-1:-1;;;12003:2:1;11988:18;;11981:33;12046:3;12031:19;;11657:399::o;12471:217::-;12511:1;12537;12527:132;;12581:10;12576:3;12572:20;12569:1;12562:31;12616:4;12613:1;12606:15;12644:4;12641:1;12634:15;12527:132;-1:-1:-1;12673:9:1;;12471:217::o;12693:128::-;12760:9;;;12781:11;;;12778:37;;;12795:18;;:::i;14113:251::-;14183:6;14236:2;14224:9;14215:7;14211:23;14207:32;14204:52;;;14252:1;14249;14242:12;14204:52;14284:9;14278:16;14303:31;14328:5;14303:31;:::i;14369:461::-;14422:3;14460:5;14454:12;14487:6;14482:3;14475:19;14513:4;14542:2;14537:3;14533:12;14526:19;;14579:2;14572:5;14568:14;14600:1;14610:195;14624:6;14621:1;14618:13;14610:195;;;14689:13;;-1:-1:-1;;;;;14685:39:1;14673:52;;14745:12;;;;14780:15;;;;14721:1;14639:9;14610:195;;;-1:-1:-1;14821:3:1;;14369:461;-1:-1:-1;;;;;14369:461:1:o;14835:582::-;15134:6;15123:9;15116:25;15177:6;15172:2;15161:9;15157:18;15150:34;15220:3;15215:2;15204:9;15200:18;15193:31;15097:4;15241:57;15293:3;15282:9;15278:19;15270:6;15241:57;:::i;:::-;-1:-1:-1;;;;;15334:32:1;;;;15329:2;15314:18;;15307:60;-1:-1:-1;15398:3:1;15383:19;15376:35;15233:65;14835:582;-1:-1:-1;;;14835:582:1:o;15422:510::-;15693:6;15682:9;15675:25;15736:3;15731:2;15720:9;15716:18;15709:31;15656:4;15757:57;15809:3;15798:9;15794:19;15786:6;15757:57;:::i;:::-;-1:-1:-1;;;;;15850:32:1;;;;15845:2;15830:18;;15823:60;-1:-1:-1;15914:2:1;15899:18;15892:34;15749:65;15422:510;-1:-1:-1;;15422:510:1:o
Swarm Source
ipfs://ee86d9d211e5318152166ad1b725edadeeebb6cf19f29824a132cea7e8eedc59
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.