ERC-20
Overview
Max Total Supply
10,000,000 EAI
Holders
30
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
EAI
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-02-09 */ // SPDX-License-Identifier: MIT /* Following Enigma's success, it only make sense that someone developed an AI bot with custom training models for solving puzzles, challenges and mysteries. This is EnigmaAI - $EAI. Medium - https://medium.com/@enigmaai Twitter - https://twitter.com/EnigmaAIETH Website - https://enigma-ai.tech TG - https://t.me/EAIportal */ pragma solidity 0.8.9; 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 IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface 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 9; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); _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 _mint(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 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() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library SafeMathInt { int256 private constant MIN_INT256 = int256(1) << 255; int256 private constant MAX_INT256 = ~(int256(1) << 255); function mul(int256 a, int256 b) internal pure returns (int256) { int256 c = a * b; require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256)); require((b == 0) || (c / b == a)); return c; } function div(int256 a, int256 b) internal pure returns (int256) { require(b != -1 || a != MIN_INT256); return a / b; } function sub(int256 a, int256 b) internal pure returns (int256) { int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a)); return c; } function add(int256 a, int256 b) internal pure returns (int256) { int256 c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a)); return c; } function abs(int256 a) internal pure returns (int256) { require(a != MIN_INT256); return a < 0 ? -a : a; } function toUint256Safe(int256 a) internal pure returns (uint256) { require(a >= 0); return uint256(a); } } library SafeMathUint { function toInt256Safe(uint256 a) internal pure returns (int256) { int256 b = int256(a); require(b >= 0); return b; } } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract EAI is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; address public constant deadAddress = address(0xdead); bool private swapping; bool private botsShaken; address public marketingWallet; address public lpLocker; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; bool public swapEnabled = true; uint256 public buyTotalFees; uint256 public buyMarketingFee; uint256 public buyLiquidityFee; uint256 public buyBurnFee; uint256 public sellTotalFees; uint256 public sellMarketingFee; uint256 public sellLiquidityFee; uint256 public sellBurnFee; uint256 public tokensForMarketing; uint256 public tokensForLiquidity; uint256 public tokensForBurn; mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) public _isExcludedMaxTransactionAmount; mapping (address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event BuyBackTriggered(uint256 amount); constructor() ERC20("EnigmaAI", "EAI") { address newOwner = address(owner()); IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 _buyMarketingFee = 20; uint256 _buyLiquidityFee = 0; uint256 _buyBurnFee = 0; uint256 _sellMarketingFee = 45; uint256 _sellLiquidityFee = 0; uint256 _sellBurnFee = 0; uint256 totalSupply = 1 * 1e7 * 1e9; maxTransactionAmount = (totalSupply * 2 / 100) + (1 * 1e9); // 2% maxTransactionAmountTxn swapTokensAtAmount = totalSupply * 25 / 100000; // 0.025% swap wallet maxWallet = (totalSupply * 3 / 100) + (1 * 1e9); // 3% max wallet buyMarketingFee = _buyMarketingFee; buyLiquidityFee = _buyLiquidityFee; buyBurnFee = _buyBurnFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyBurnFee; sellMarketingFee = _sellMarketingFee; sellLiquidityFee = _sellLiquidityFee; sellBurnFee = _sellBurnFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellBurnFee; marketingWallet = address(0x6D75F51Da66B07cF40C23c43204f4b21eA2afC17); // Marketing / Development wallet lpLocker = address(0x663A5C229c09b049E36dCc11a9B0d4a8Eb9db214); // LP Locker CA (Unicrypt) excludeFromFees(newOwner, true); // Owner address excludeFromFees(address(this), true); // CA excludeFromFees(address(0xdead), true); // Burn address excludeFromFees(marketingWallet, true); // Marketing / Development wallet excludeFromFees(lpLocker, true); // LP Locker excludeFromMaxTransaction(newOwner, true); // Owner address excludeFromMaxTransaction(address(this), true); // CA excludeFromMaxTransaction(address(0xdead), true); // Burn address excludeFromMaxTransaction(marketingWallet, true); // Marketing / Development wallet excludeFromMaxTransaction(lpLocker, true); // LP Locker _mint(newOwner, totalSupply); transferOwnership(newOwner); } receive() external payable { } function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool){ require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply."); require(newAmount <= totalSupply() * 5 / 1000, "Swap amount cannot be higher than 0.5% total supply."); swapTokensAtAmount = newAmount; return true; } function updateMaxTxAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 2 / 100)/1e9, "Cannot set maxTransactionAmount lower than 2%"); maxTransactionAmount = (newNum * 1e9) + (1 * 1e9) ; } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 3 / 100)/1e9, "Cannot set maxWalletAmount lower than 3%"); maxWallet = (newNum * 1e9) + (1 * 1e9); } function updateLimits(uint256 _maxTransactionAmount, uint256 _maxWallet) external onlyOwner { require(_maxTransactionAmount >= (totalSupply() * 2 / 100)/1e9, "Cannot set maxTransactionAmount lower than 2%"); require(_maxWallet >= (totalSupply() * 3 / 100)/1e9, "Cannot set maxWallet lower than 3%"); maxTransactionAmount = (_maxTransactionAmount * 1e9) + (1 * 1e9) ; maxWallet = (_maxWallet * 1e9) + (1 * 1e9); } function removeLimits() external onlyOwner { maxTransactionAmount = totalSupply(); maxWallet = totalSupply(); } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } function updateSwapEnabled(bool enabled) external onlyOwner(){ swapEnabled = enabled; } function updateFees(uint256 _buyMarketingFee, uint256 _buyLiquidityFee, uint256 _buyBurnFee, uint256 _sellMarketingFee, uint256 _sellLiquidityFee, uint256 _sellBurnFee) external onlyOwner { buyMarketingFee = _buyMarketingFee; buyLiquidityFee = _buyLiquidityFee; buyBurnFee = _buyBurnFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyBurnFee; sellMarketingFee = _sellMarketingFee; sellLiquidityFee = _sellLiquidityFee; sellBurnFee = _sellBurnFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellBurnFee; } function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _burnFee) external onlyOwner { buyMarketingFee = _marketingFee; buyLiquidityFee = _liquidityFee; buyBurnFee = _burnFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyBurnFee; } function updateSellFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _burnFee) external onlyOwner { sellMarketingFee = _marketingFee; sellLiquidityFee = _liquidityFee; sellBurnFee = _burnFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellBurnFee; } function shakeBots() external onlyOwner(){ sellMarketingFee = 99; sellLiquidityFee = 0; sellBurnFee = 0; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellBurnFee; botsShaken = true; } function unshakeBots() external onlyOwner(){ sellMarketingFee = 45; sellLiquidityFee = 0; sellMarketingFee = 0; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyBurnFee; require(botsShaken = true, "Must shake bots before unshake"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function updateMarketingWallet(address newMarketingWallet) external onlyOwner { emit marketingWalletUpdated(newMarketingWallet, marketingWallet); marketingWallet = newMarketingWallet; } 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 ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ){ //when buy if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount."); require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } //when sell else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount."); } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; if(takeFee){ if (automatedMarketMakerPairs[to] && sellTotalFees > 0){ fees = amount.mul(sellTotalFees).div(100); tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees; tokensForMarketing += fees * sellMarketingFee / sellTotalFees; tokensForBurn += fees * sellBurnFee / sellTotalFees; } else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees; tokensForMarketing += fees * buyMarketingFee / buyTotalFees; tokensForBurn += fees * buyBurnFee / buyTotalFees; } if(fees > 0){ super._transfer(from, address(this), (fees - tokensForBurn)); } if(tokensForBurn > 0){ super._transfer(from, deadAddress, tokensForBurn); tokensForBurn = 0; } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, 0, deadAddress, block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing; if(contractBalance == 0 || totalTokensToSwap == 0) {return;} uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance - ethForMarketing; tokensForLiquidity = 0; tokensForMarketing = 0; (bool success,) = address(marketingWallet).call{value: ethForMarketing}(""); if(liquidityTokens > 0 && ethForLiquidity > 0){ addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity); } (success,) = address(marketingWallet).call{value: address(this).balance}(""); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BuyBackTriggered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpLocker","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"shakeBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unshakeBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_buyLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"_buyBurnFee","type":"uint256"},{"internalType":"uint256","name":"_sellMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_sellLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"_sellBurnFee","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTransactionAmount","type":"uint256"},{"internalType":"uint256","name":"_maxWallet","type":"uint256"}],"name":"updateLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c0604052600b805460ff191660011790553480156200001e57600080fd5b5060405180604001604052806008815260200167456e69676d61414960c01b8152506040518060400160405280600381526020016245414960e81b815250816003908051906020019062000074929190620008af565b5080516200008a906004906020840190620008af565b50505060006200009f620004d060201b60201c565b600580546001600160a01b0319166001600160a01b0383169081179091556040519192509060009060008051602062003480833981519152908290a3506000620000f16005546001600160a01b031690565b9050737a250d5630b4cf539739df2c5dacb4c659f2488d62000115816001620004d4565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b1580156200015b57600080fd5b505afa15801562000170573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000196919062000955565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620001df57600080fd5b505afa158015620001f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021a919062000955565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200026357600080fd5b505af115801562000278573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029e919062000955565b6001600160a01b031660a0819052620002b9906001620004d4565b60a051620002c99060016200054e565b6014600080602d8180662386f26fc100006064620002e982600262000996565b620002f59190620009b8565b6200030590633b9aca00620009db565b600855620186a06200031982601962000996565b620003259190620009b8565b60095560646200033782600362000996565b620003439190620009b8565b6200035390633b9aca00620009db565b600a55600d879055600e869055600f85905584620003728789620009db565b6200037e9190620009db565b600c55601184905560128390556013829055816200039d8486620009db565b620003a99190620009db565b601055600680546001600160a01b0319908116736d75f51da66b07cf40c23c43204f4b21ea2afc17179091556007805490911673663a5c229c09b049e36dcc11a9b0d4a8eb9db21417905562000401896001620005a2565b6200040e306001620005a2565b6200041d61dead6001620005a2565b60065462000436906001600160a01b03166001620005a2565b6007546200044f906001600160a01b03166001620005a2565b6200045c896001620004d4565b62000469306001620004d4565b6200047861dead6001620004d4565b60065462000491906001600160a01b03166001620004d4565b600754620004aa906001600160a01b03166001620004d4565b620004b689826200064c565b620004c18962000748565b50505050505050505062000a33565b3390565b6005546001600160a01b03163314620005235760405162461bcd60e51b815260206004820181905260248201526000805160206200346083398151915260448201526064015b60405180910390fd5b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b6001600160a01b038216600081815260196020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620005ed5760405162461bcd60e51b815260206004820181905260248201526000805160206200346083398151915260448201526064016200051a565b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620006a45760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016200051a565b620006c0816002546200084560201b620015671790919060201c565b6002556001600160a01b03821660009081526020818152604090912054620006f39183906200156762000845821b17901c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6005546001600160a01b03163314620007935760405162461bcd60e51b815260206004820181905260248201526000805160206200346083398151915260448201526064016200051a565b6001600160a01b038116620007fa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016200051a565b6005546040516001600160a01b038084169216906000805160206200348083398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600080620008548385620009db565b905083811015620008a85760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016200051a565b9392505050565b828054620008bd90620009f6565b90600052602060002090601f016020900481019282620008e157600085556200092c565b82601f10620008fc57805160ff19168380011785556200092c565b828001600101855582156200092c579182015b828111156200092c5782518255916020019190600101906200090f565b506200093a9291506200093e565b5090565b5b808211156200093a57600081556001016200093f565b6000602082840312156200096857600080fd5b81516001600160a01b0381168114620008a857600080fd5b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615620009b357620009b362000980565b500290565b600082620009d657634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115620009f157620009f162000980565b500190565b600181811c9082168062000a0b57607f821691505b6020821081141562000a2d57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a0516129dd62000a83600039600081816104fe0152610e910152600081816103e0015281816121c70152818161228f015281816122cb0152818161234501526123a201526129dd6000f3fe6080604052600436106103035760003560e01c80638095d56411610190578063c0246668116100dc578063dd62ed3e11610095578063f11a24d31161006f578063f11a24d314610921578063f2fde38b14610937578063f637434214610957578063f8b45b051461096d57600080fd5b8063dd62ed3e146108af578063e2f45605146108f5578063e71dc3f51461090b57600080fd5b8063c024666814610803578063c17b5b8c14610823578063c18bc19514610843578063c8c8ebe414610863578063d257b34f14610879578063d85ba0631461089957600080fd5b80639a7a23d611610149578063a9059cbb11610123578063a9059cbb1461077d578063aacebbe31461079d578063adb873bd146107bd578063b62496f5146107d357600080fd5b80639a7a23d61461071d578063a2240e191461073d578063a457c2d71461075d57600080fd5b80638095d564146106745780638da5cb5b1461069457806392136913146106b2578063924de9b7146106c857806395d89b41146106e8578063992c58e4146106fd57600080fd5b8063395093511161024f5780636ddd171311610208578063751039fc116101e2578063751039fc146106095780637571336a1461061e57806375f0a8741461063e5780637bce5a041461065e57600080fd5b80636ddd1713146105a457806370a08231146105be578063715018a6146105f457600080fd5b806339509351146104cc57806349bd5a5e146104ec5780634fbee193146105205780636256d18114610559578063648ae08f146105795780636a486a8e1461058e57600080fd5b80631a8145bb116102bc5780631f3fed8f116102965780631f3fed8f1461046457806323b872dd1461047a57806327c8f8351461049a578063313ce567146104b057600080fd5b80631a8145bb146104215780631cd58a02146104375780631d7778561461044e57600080fd5b806303fc20131461030f57806306fdde031461034c578063095ea7b31461036e57806310d5de531461039e5780631694505e146103ce57806318160ddd1461040257600080fd5b3661030a57005b600080fd5b34801561031b57600080fd5b5060075461032f906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561035857600080fd5b50610361610983565b604051610343919061245d565b34801561037a57600080fd5b5061038e6103893660046124ca565b610a15565b6040519015158152602001610343565b3480156103aa57600080fd5b5061038e6103b93660046124f6565b60186020526000908152604090205460ff1681565b3480156103da57600080fd5b5061032f7f000000000000000000000000000000000000000000000000000000000000000081565b34801561040e57600080fd5b506002545b604051908152602001610343565b34801561042d57600080fd5b5061041360155481565b34801561044357600080fd5b5061044c610a2c565b005b34801561045a57600080fd5b5061041360165481565b34801561047057600080fd5b5061041360145481565b34801561048657600080fd5b5061038e610495366004612513565b610a9e565b3480156104a657600080fd5b5061032f61dead81565b3480156104bc57600080fd5b5060405160098152602001610343565b3480156104d857600080fd5b5061038e6104e73660046124ca565b610b07565b3480156104f857600080fd5b5061032f7f000000000000000000000000000000000000000000000000000000000000000081565b34801561052c57600080fd5b5061038e61053b3660046124f6565b6001600160a01b031660009081526017602052604090205460ff1690565b34801561056557600080fd5b5061044c610574366004612554565b610b3d565b34801561058557600080fd5b5061044c610bd7565b34801561059a57600080fd5b5061041360105481565b3480156105b057600080fd5b50600b5461038e9060ff1681565b3480156105ca57600080fd5b506104136105d93660046124f6565b6001600160a01b031660009081526020819052604090205490565b34801561060057600080fd5b5061044c610c42565b34801561061557600080fd5b5061044c610cb6565b34801561062a57600080fd5b5061044c61063936600461257d565b610cee565b34801561064a57600080fd5b5060065461032f906001600160a01b031681565b34801561066a57600080fd5b50610413600d5481565b34801561068057600080fd5b5061044c61068f3660046125b2565b610d43565b3480156106a057600080fd5b506005546001600160a01b031661032f565b3480156106be57600080fd5b5061041360115481565b3480156106d457600080fd5b5061044c6106e33660046125de565b610d99565b3480156106f457600080fd5b50610361610dd6565b34801561070957600080fd5b5061044c6107183660046125f9565b610de5565b34801561072957600080fd5b5061044c61073836600461257d565b610e65565b34801561074957600080fd5b5061044c61075836600461263c565b610f45565b34801561076957600080fd5b5061038e6107783660046124ca565b611088565b34801561078957600080fd5b5061038e6107983660046124ca565b6110d7565b3480156107a957600080fd5b5061044c6107b83660046124f6565b6110e4565b3480156107c957600080fd5b5061041360135481565b3480156107df57600080fd5b5061038e6107ee3660046124f6565b60196020526000908152604090205460ff1681565b34801561080f57600080fd5b5061044c61081e36600461257d565b61116b565b34801561082f57600080fd5b5061044c61083e3660046125b2565b6111f4565b34801561084f57600080fd5b5061044c61085e366004612554565b61124a565b34801561086f57600080fd5b5061041360085481565b34801561088557600080fd5b5061038e610894366004612554565b611325565b3480156108a557600080fd5b50610413600c5481565b3480156108bb57600080fd5b506104136108ca36600461265e565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561090157600080fd5b5061041360095481565b34801561091757600080fd5b50610413600f5481565b34801561092d57600080fd5b50610413600e5481565b34801561094357600080fd5b5061044c6109523660046124f6565b61147c565b34801561096357600080fd5b5061041360125481565b34801561097957600080fd5b50610413600a5481565b60606003805461099290612697565b80601f01602080910402602001604051908101604052809291908181526020018280546109be90612697565b8015610a0b5780601f106109e057610100808354040283529160200191610a0b565b820191906000526020600020905b8154815290600101906020018083116109ee57829003601f168201915b5050505050905090565b6000610a223384846115cd565b5060015b92915050565b6005546001600160a01b03163314610a5f5760405162461bcd60e51b8152600401610a56906126d2565b60405180910390fd5b60006012819055601155600f54600e54600d54610a7c919061271d565b610a86919061271d565b600c556005805460ff60a81b1916600160a81b179055565b6000610aab8484846116f2565b610afd8433610af88560405180606001604052806028815260200161295b602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190611cfb565b6115cd565b5060019392505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610a22918590610af89086611567565b6005546001600160a01b03163314610b675760405162461bcd60e51b8152600401610a56906126d2565b633b9aca006064610b7760025490565b610b82906002612735565b610b8c9190612754565b610b969190612754565b811015610bb55760405162461bcd60e51b8152600401610a5690612776565b610bc381633b9aca00612735565b610bd190633b9aca0061271d565b60085550565b6005546001600160a01b03163314610c015760405162461bcd60e51b8152600401610a56906126d2565b6063601181905560006012819055601381905590610c2090829061271d565b610c2a919061271d565b6010556005805460ff60a81b1916600160a81b179055565b6005546001600160a01b03163314610c6c5760405162461bcd60e51b8152600401610a56906126d2565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610ce05760405162461bcd60e51b8152600401610a56906126d2565b600254600855600254600a55565b6005546001600160a01b03163314610d185760405162461bcd60e51b8152600401610a56906126d2565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610d6d5760405162461bcd60e51b8152600401610a56906126d2565b600d839055600e829055600f81905580610d87838561271d565b610d91919061271d565b600c55505050565b6005546001600160a01b03163314610dc35760405162461bcd60e51b8152600401610a56906126d2565b600b805460ff1916911515919091179055565b60606004805461099290612697565b6005546001600160a01b03163314610e0f5760405162461bcd60e51b8152600401610a56906126d2565b600d869055600e859055600f84905583610e29868861271d565b610e33919061271d565b600c5560118390556012829055601381905580610e50838561271d565b610e5a919061271d565b601055505050505050565b6005546001600160a01b03163314610e8f5760405162461bcd60e51b8152600401610a56906126d2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415610f375760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610a56565b610f418282611d35565b5050565b6005546001600160a01b03163314610f6f5760405162461bcd60e51b8152600401610a56906126d2565b633b9aca006064610f7f60025490565b610f8a906002612735565b610f949190612754565b610f9e9190612754565b821015610fbd5760405162461bcd60e51b8152600401610a5690612776565b633b9aca006064610fcd60025490565b610fd8906003612735565b610fe29190612754565b610fec9190612754565b8110156110465760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015261332560f01b6064820152608401610a56565b61105482633b9aca00612735565b61106290633b9aca0061271d565b60085561107381633b9aca00612735565b61108190633b9aca0061271d565b600a555050565b6000610a223384610af885604051806060016040528060258152602001612983602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190611cfb565b6000610a223384846116f2565b6005546001600160a01b0316331461110e5760405162461bcd60e51b8152600401610a56906126d2565b6006546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567490600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146111955760405162461bcd60e51b8152600401610a56906126d2565b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461121e5760405162461bcd60e51b8152600401610a56906126d2565b60118390556012829055601381905580611238838561271d565b611242919061271d565b601055505050565b6005546001600160a01b031633146112745760405162461bcd60e51b8152600401610a56906126d2565b633b9aca00606461128460025490565b61128f906003612735565b6112999190612754565b6112a39190612754565b8110156113035760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f7420736574206d617857616c6c6574416d6f756e74206c6f776572604482015267207468616e20332560c01b6064820152608401610a56565b61131181633b9aca00612735565b61131f90633b9aca0061271d565b600a5550565b6005546000906001600160a01b031633146113525760405162461bcd60e51b8152600401610a56906126d2565b620186a061135f60025490565b61136a906001612735565b6113749190612754565b8210156113e15760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610a56565b6103e86113ed60025490565b6113f8906005612735565b6114029190612754565b82111561146e5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610a56565b50600981905560015b919050565b6005546001600160a01b031633146114a65760405162461bcd60e51b8152600401610a56906126d2565b6001600160a01b03811661150b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a56565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600080611574838561271d565b9050838110156115c65760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610a56565b9392505050565b6001600160a01b03831661162f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a56565b6001600160a01b0382166116905760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a56565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166117185760405162461bcd60e51b8152600401610a56906127c3565b6001600160a01b03821661173e5760405162461bcd60e51b8152600401610a5690612808565b806117545761174f83836000611d89565b505050565b6005546001600160a01b0384811691161480159061178057506005546001600160a01b03838116911614155b801561179457506001600160a01b03821615155b80156117ab57506001600160a01b03821661dead14155b80156117c15750600554600160a01b900460ff16155b156119a2576001600160a01b03831660009081526019602052604090205460ff16801561180757506001600160a01b03821660009081526018602052604090205460ff16155b156118eb5760085481111561187c5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610a56565b600a546001600160a01b0383166000908152602081905260409020546118a2908361271d565b11156118e65760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a56565b6119a2565b6001600160a01b03821660009081526019602052604090205460ff16801561192c57506001600160a01b03831660009081526018602052604090205460ff16155b156119a2576008548111156119a25760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610a56565b30600090815260208190526040902054600954811080159081906119c85750600b5460ff165b80156119de5750600554600160a01b900460ff16155b8015611a0357506001600160a01b03851660009081526019602052604090205460ff16155b8015611a2857506001600160a01b03851660009081526017602052604090205460ff16155b8015611a4d57506001600160a01b03841660009081526017602052604090205460ff16155b15611a7b576005805460ff60a01b1916600160a01b179055611a6d611e92565b6005805460ff60a01b191690555b6005546001600160a01b03861660009081526017602052604090205460ff600160a01b909204821615911680611ac957506001600160a01b03851660009081526017602052604090205460ff165b15611ad2575060005b60008115611ce7576001600160a01b03861660009081526019602052604090205460ff168015611b0457506000601054115b15611bc257611b296064611b236010548861206d90919063ffffffff16565b906120ec565b905060105460125482611b3c9190612735565b611b469190612754565b60156000828254611b57919061271d565b9091555050601054601154611b6c9083612735565b611b769190612754565b60146000828254611b87919061271d565b9091555050601054601354611b9c9083612735565b611ba69190612754565b60166000828254611bb7919061271d565b90915550611c9f9050565b6001600160a01b03871660009081526019602052604090205460ff168015611bec57506000600c54115b15611c9f57611c0b6064611b23600c548861206d90919063ffffffff16565b9050600c54600e5482611c1e9190612735565b611c289190612754565b60156000828254611c39919061271d565b9091555050600c54600d54611c4e9083612735565b611c589190612754565b60146000828254611c69919061271d565b9091555050600c54600f54611c7e9083612735565b611c889190612754565b60166000828254611c99919061271d565b90915550505b8015611cbd57611cbd873060165484611cb8919061284b565b611d89565b60165415611cda57611cd48761dead601654611d89565b60006016555b611ce4818661284b565b94505b611cf2878787611d89565b50505050505050565b60008184841115611d1f5760405162461bcd60e51b8152600401610a56919061245d565b506000611d2c848661284b565b95945050505050565b6001600160a01b038216600081815260196020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611daf5760405162461bcd60e51b8152600401610a56906127c3565b6001600160a01b038216611dd55760405162461bcd60e51b8152600401610a5690612808565b611e1281604051806060016040528060268152602001612935602691396001600160a01b0386166000908152602081905260409020549190611cfb565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611e419082611567565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016116e5565b3060009081526020819052604081205490506000601454601554611eb6919061271d565b9050811580611ec3575080155b15611ecc575050565b600060028260155485611edf9190612735565b611ee99190612754565b611ef39190612754565b90506000611f01848361212e565b905047611f0d82612170565b6000611f19478361212e565b90506000611f3686611b236014548561206d90919063ffffffff16565b90506000611f44828461284b565b60006015819055601481905560065460405192935090916001600160a01b039091169084908381818185875af1925050503d8060008114611fa1576040519150601f19603f3d011682016040523d82523d6000602084013e611fa6565b606091505b50509050600087118015611fba5750600082115b1561200d57611fc9878361233f565b601554604080518881526020810185905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6006546040516001600160a01b03909116904790600081818185875af1925050503d806000811461205a576040519150601f19603f3d011682016040523d82523d6000602084013e61205f565b606091505b505050505050505050505050565b60008261207c57506000610a26565b60006120888385612735565b9050826120958583612754565b146115c65760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610a56565b60006115c683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061242f565b60006115c683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611cfb565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106121a5576121a5612862565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561221e57600080fd5b505afa158015612232573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122569190612878565b8160018151811061226957612269612862565b60200260200101906001600160a01b031690816001600160a01b0316815250506122b4307f0000000000000000000000000000000000000000000000000000000000000000846115cd565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790612309908590600090869030904290600401612895565b600060405180830381600087803b15801561232357600080fd5b505af1158015612337573d6000803e3d6000fd5b505050505050565b61236a307f0000000000000000000000000000000000000000000000000000000000000000846115cd565b60405163f305d71960e01b815230600482015260248101839052600060448201819052606482015261dead60848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f305d71990839060c4016060604051808303818588803b1580156123ef57600080fd5b505af1158015612403573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124289190612906565b5050505050565b600081836124505760405162461bcd60e51b8152600401610a56919061245d565b506000611d2c8486612754565b600060208083528351808285015260005b8181101561248a5785810183015185820160400152820161246e565b8181111561249c576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146124c757600080fd5b50565b600080604083850312156124dd57600080fd5b82356124e8816124b2565b946020939093013593505050565b60006020828403121561250857600080fd5b81356115c6816124b2565b60008060006060848603121561252857600080fd5b8335612533816124b2565b92506020840135612543816124b2565b929592945050506040919091013590565b60006020828403121561256657600080fd5b5035919050565b8035801515811461147757600080fd5b6000806040838503121561259057600080fd5b823561259b816124b2565b91506125a96020840161256d565b90509250929050565b6000806000606084860312156125c757600080fd5b505081359360208301359350604090920135919050565b6000602082840312156125f057600080fd5b6115c68261256d565b60008060008060008060c0878903121561261257600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b6000806040838503121561264f57600080fd5b50508035926020909101359150565b6000806040838503121561267157600080fd5b823561267c816124b2565b9150602083013561268c816124b2565b809150509250929050565b600181811c908216806126ab57607f821691505b602082108114156126cc57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000821982111561273057612730612707565b500190565b600081600019048311821515161561274f5761274f612707565b500290565b60008261277157634e487b7160e01b600052601260045260246000fd5b500490565b6020808252602d908201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060408201526c6c6f776572207468616e20322560981b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60008282101561285d5761285d612707565b500390565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561288a57600080fd5b81516115c6816124b2565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156128e55784516001600160a01b0316835293830193918301916001016128c0565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561291b57600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122088a18de0298a90fc4b5637e685788360e8bc32c40db160ae65031135374d807c64736f6c634300080900334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
Deployed Bytecode
0x6080604052600436106103035760003560e01c80638095d56411610190578063c0246668116100dc578063dd62ed3e11610095578063f11a24d31161006f578063f11a24d314610921578063f2fde38b14610937578063f637434214610957578063f8b45b051461096d57600080fd5b8063dd62ed3e146108af578063e2f45605146108f5578063e71dc3f51461090b57600080fd5b8063c024666814610803578063c17b5b8c14610823578063c18bc19514610843578063c8c8ebe414610863578063d257b34f14610879578063d85ba0631461089957600080fd5b80639a7a23d611610149578063a9059cbb11610123578063a9059cbb1461077d578063aacebbe31461079d578063adb873bd146107bd578063b62496f5146107d357600080fd5b80639a7a23d61461071d578063a2240e191461073d578063a457c2d71461075d57600080fd5b80638095d564146106745780638da5cb5b1461069457806392136913146106b2578063924de9b7146106c857806395d89b41146106e8578063992c58e4146106fd57600080fd5b8063395093511161024f5780636ddd171311610208578063751039fc116101e2578063751039fc146106095780637571336a1461061e57806375f0a8741461063e5780637bce5a041461065e57600080fd5b80636ddd1713146105a457806370a08231146105be578063715018a6146105f457600080fd5b806339509351146104cc57806349bd5a5e146104ec5780634fbee193146105205780636256d18114610559578063648ae08f146105795780636a486a8e1461058e57600080fd5b80631a8145bb116102bc5780631f3fed8f116102965780631f3fed8f1461046457806323b872dd1461047a57806327c8f8351461049a578063313ce567146104b057600080fd5b80631a8145bb146104215780631cd58a02146104375780631d7778561461044e57600080fd5b806303fc20131461030f57806306fdde031461034c578063095ea7b31461036e57806310d5de531461039e5780631694505e146103ce57806318160ddd1461040257600080fd5b3661030a57005b600080fd5b34801561031b57600080fd5b5060075461032f906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561035857600080fd5b50610361610983565b604051610343919061245d565b34801561037a57600080fd5b5061038e6103893660046124ca565b610a15565b6040519015158152602001610343565b3480156103aa57600080fd5b5061038e6103b93660046124f6565b60186020526000908152604090205460ff1681565b3480156103da57600080fd5b5061032f7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b34801561040e57600080fd5b506002545b604051908152602001610343565b34801561042d57600080fd5b5061041360155481565b34801561044357600080fd5b5061044c610a2c565b005b34801561045a57600080fd5b5061041360165481565b34801561047057600080fd5b5061041360145481565b34801561048657600080fd5b5061038e610495366004612513565b610a9e565b3480156104a657600080fd5b5061032f61dead81565b3480156104bc57600080fd5b5060405160098152602001610343565b3480156104d857600080fd5b5061038e6104e73660046124ca565b610b07565b3480156104f857600080fd5b5061032f7f000000000000000000000000f41adf6527dac26d5fd4b3aeb2523485f62334e781565b34801561052c57600080fd5b5061038e61053b3660046124f6565b6001600160a01b031660009081526017602052604090205460ff1690565b34801561056557600080fd5b5061044c610574366004612554565b610b3d565b34801561058557600080fd5b5061044c610bd7565b34801561059a57600080fd5b5061041360105481565b3480156105b057600080fd5b50600b5461038e9060ff1681565b3480156105ca57600080fd5b506104136105d93660046124f6565b6001600160a01b031660009081526020819052604090205490565b34801561060057600080fd5b5061044c610c42565b34801561061557600080fd5b5061044c610cb6565b34801561062a57600080fd5b5061044c61063936600461257d565b610cee565b34801561064a57600080fd5b5060065461032f906001600160a01b031681565b34801561066a57600080fd5b50610413600d5481565b34801561068057600080fd5b5061044c61068f3660046125b2565b610d43565b3480156106a057600080fd5b506005546001600160a01b031661032f565b3480156106be57600080fd5b5061041360115481565b3480156106d457600080fd5b5061044c6106e33660046125de565b610d99565b3480156106f457600080fd5b50610361610dd6565b34801561070957600080fd5b5061044c6107183660046125f9565b610de5565b34801561072957600080fd5b5061044c61073836600461257d565b610e65565b34801561074957600080fd5b5061044c61075836600461263c565b610f45565b34801561076957600080fd5b5061038e6107783660046124ca565b611088565b34801561078957600080fd5b5061038e6107983660046124ca565b6110d7565b3480156107a957600080fd5b5061044c6107b83660046124f6565b6110e4565b3480156107c957600080fd5b5061041360135481565b3480156107df57600080fd5b5061038e6107ee3660046124f6565b60196020526000908152604090205460ff1681565b34801561080f57600080fd5b5061044c61081e36600461257d565b61116b565b34801561082f57600080fd5b5061044c61083e3660046125b2565b6111f4565b34801561084f57600080fd5b5061044c61085e366004612554565b61124a565b34801561086f57600080fd5b5061041360085481565b34801561088557600080fd5b5061038e610894366004612554565b611325565b3480156108a557600080fd5b50610413600c5481565b3480156108bb57600080fd5b506104136108ca36600461265e565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561090157600080fd5b5061041360095481565b34801561091757600080fd5b50610413600f5481565b34801561092d57600080fd5b50610413600e5481565b34801561094357600080fd5b5061044c6109523660046124f6565b61147c565b34801561096357600080fd5b5061041360125481565b34801561097957600080fd5b50610413600a5481565b60606003805461099290612697565b80601f01602080910402602001604051908101604052809291908181526020018280546109be90612697565b8015610a0b5780601f106109e057610100808354040283529160200191610a0b565b820191906000526020600020905b8154815290600101906020018083116109ee57829003601f168201915b5050505050905090565b6000610a223384846115cd565b5060015b92915050565b6005546001600160a01b03163314610a5f5760405162461bcd60e51b8152600401610a56906126d2565b60405180910390fd5b60006012819055601155600f54600e54600d54610a7c919061271d565b610a86919061271d565b600c556005805460ff60a81b1916600160a81b179055565b6000610aab8484846116f2565b610afd8433610af88560405180606001604052806028815260200161295b602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190611cfb565b6115cd565b5060019392505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610a22918590610af89086611567565b6005546001600160a01b03163314610b675760405162461bcd60e51b8152600401610a56906126d2565b633b9aca006064610b7760025490565b610b82906002612735565b610b8c9190612754565b610b969190612754565b811015610bb55760405162461bcd60e51b8152600401610a5690612776565b610bc381633b9aca00612735565b610bd190633b9aca0061271d565b60085550565b6005546001600160a01b03163314610c015760405162461bcd60e51b8152600401610a56906126d2565b6063601181905560006012819055601381905590610c2090829061271d565b610c2a919061271d565b6010556005805460ff60a81b1916600160a81b179055565b6005546001600160a01b03163314610c6c5760405162461bcd60e51b8152600401610a56906126d2565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610ce05760405162461bcd60e51b8152600401610a56906126d2565b600254600855600254600a55565b6005546001600160a01b03163314610d185760405162461bcd60e51b8152600401610a56906126d2565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610d6d5760405162461bcd60e51b8152600401610a56906126d2565b600d839055600e829055600f81905580610d87838561271d565b610d91919061271d565b600c55505050565b6005546001600160a01b03163314610dc35760405162461bcd60e51b8152600401610a56906126d2565b600b805460ff1916911515919091179055565b60606004805461099290612697565b6005546001600160a01b03163314610e0f5760405162461bcd60e51b8152600401610a56906126d2565b600d869055600e859055600f84905583610e29868861271d565b610e33919061271d565b600c5560118390556012829055601381905580610e50838561271d565b610e5a919061271d565b601055505050505050565b6005546001600160a01b03163314610e8f5760405162461bcd60e51b8152600401610a56906126d2565b7f000000000000000000000000f41adf6527dac26d5fd4b3aeb2523485f62334e76001600160a01b0316826001600160a01b03161415610f375760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610a56565b610f418282611d35565b5050565b6005546001600160a01b03163314610f6f5760405162461bcd60e51b8152600401610a56906126d2565b633b9aca006064610f7f60025490565b610f8a906002612735565b610f949190612754565b610f9e9190612754565b821015610fbd5760405162461bcd60e51b8152600401610a5690612776565b633b9aca006064610fcd60025490565b610fd8906003612735565b610fe29190612754565b610fec9190612754565b8110156110465760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015261332560f01b6064820152608401610a56565b61105482633b9aca00612735565b61106290633b9aca0061271d565b60085561107381633b9aca00612735565b61108190633b9aca0061271d565b600a555050565b6000610a223384610af885604051806060016040528060258152602001612983602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190611cfb565b6000610a223384846116f2565b6005546001600160a01b0316331461110e5760405162461bcd60e51b8152600401610a56906126d2565b6006546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567490600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146111955760405162461bcd60e51b8152600401610a56906126d2565b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461121e5760405162461bcd60e51b8152600401610a56906126d2565b60118390556012829055601381905580611238838561271d565b611242919061271d565b601055505050565b6005546001600160a01b031633146112745760405162461bcd60e51b8152600401610a56906126d2565b633b9aca00606461128460025490565b61128f906003612735565b6112999190612754565b6112a39190612754565b8110156113035760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f7420736574206d617857616c6c6574416d6f756e74206c6f776572604482015267207468616e20332560c01b6064820152608401610a56565b61131181633b9aca00612735565b61131f90633b9aca0061271d565b600a5550565b6005546000906001600160a01b031633146113525760405162461bcd60e51b8152600401610a56906126d2565b620186a061135f60025490565b61136a906001612735565b6113749190612754565b8210156113e15760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610a56565b6103e86113ed60025490565b6113f8906005612735565b6114029190612754565b82111561146e5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610a56565b50600981905560015b919050565b6005546001600160a01b031633146114a65760405162461bcd60e51b8152600401610a56906126d2565b6001600160a01b03811661150b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a56565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600080611574838561271d565b9050838110156115c65760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610a56565b9392505050565b6001600160a01b03831661162f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a56565b6001600160a01b0382166116905760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a56565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166117185760405162461bcd60e51b8152600401610a56906127c3565b6001600160a01b03821661173e5760405162461bcd60e51b8152600401610a5690612808565b806117545761174f83836000611d89565b505050565b6005546001600160a01b0384811691161480159061178057506005546001600160a01b03838116911614155b801561179457506001600160a01b03821615155b80156117ab57506001600160a01b03821661dead14155b80156117c15750600554600160a01b900460ff16155b156119a2576001600160a01b03831660009081526019602052604090205460ff16801561180757506001600160a01b03821660009081526018602052604090205460ff16155b156118eb5760085481111561187c5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610a56565b600a546001600160a01b0383166000908152602081905260409020546118a2908361271d565b11156118e65760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a56565b6119a2565b6001600160a01b03821660009081526019602052604090205460ff16801561192c57506001600160a01b03831660009081526018602052604090205460ff16155b156119a2576008548111156119a25760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610a56565b30600090815260208190526040902054600954811080159081906119c85750600b5460ff165b80156119de5750600554600160a01b900460ff16155b8015611a0357506001600160a01b03851660009081526019602052604090205460ff16155b8015611a2857506001600160a01b03851660009081526017602052604090205460ff16155b8015611a4d57506001600160a01b03841660009081526017602052604090205460ff16155b15611a7b576005805460ff60a01b1916600160a01b179055611a6d611e92565b6005805460ff60a01b191690555b6005546001600160a01b03861660009081526017602052604090205460ff600160a01b909204821615911680611ac957506001600160a01b03851660009081526017602052604090205460ff165b15611ad2575060005b60008115611ce7576001600160a01b03861660009081526019602052604090205460ff168015611b0457506000601054115b15611bc257611b296064611b236010548861206d90919063ffffffff16565b906120ec565b905060105460125482611b3c9190612735565b611b469190612754565b60156000828254611b57919061271d565b9091555050601054601154611b6c9083612735565b611b769190612754565b60146000828254611b87919061271d565b9091555050601054601354611b9c9083612735565b611ba69190612754565b60166000828254611bb7919061271d565b90915550611c9f9050565b6001600160a01b03871660009081526019602052604090205460ff168015611bec57506000600c54115b15611c9f57611c0b6064611b23600c548861206d90919063ffffffff16565b9050600c54600e5482611c1e9190612735565b611c289190612754565b60156000828254611c39919061271d565b9091555050600c54600d54611c4e9083612735565b611c589190612754565b60146000828254611c69919061271d565b9091555050600c54600f54611c7e9083612735565b611c889190612754565b60166000828254611c99919061271d565b90915550505b8015611cbd57611cbd873060165484611cb8919061284b565b611d89565b60165415611cda57611cd48761dead601654611d89565b60006016555b611ce4818661284b565b94505b611cf2878787611d89565b50505050505050565b60008184841115611d1f5760405162461bcd60e51b8152600401610a56919061245d565b506000611d2c848661284b565b95945050505050565b6001600160a01b038216600081815260196020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611daf5760405162461bcd60e51b8152600401610a56906127c3565b6001600160a01b038216611dd55760405162461bcd60e51b8152600401610a5690612808565b611e1281604051806060016040528060268152602001612935602691396001600160a01b0386166000908152602081905260409020549190611cfb565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611e419082611567565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016116e5565b3060009081526020819052604081205490506000601454601554611eb6919061271d565b9050811580611ec3575080155b15611ecc575050565b600060028260155485611edf9190612735565b611ee99190612754565b611ef39190612754565b90506000611f01848361212e565b905047611f0d82612170565b6000611f19478361212e565b90506000611f3686611b236014548561206d90919063ffffffff16565b90506000611f44828461284b565b60006015819055601481905560065460405192935090916001600160a01b039091169084908381818185875af1925050503d8060008114611fa1576040519150601f19603f3d011682016040523d82523d6000602084013e611fa6565b606091505b50509050600087118015611fba5750600082115b1561200d57611fc9878361233f565b601554604080518881526020810185905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6006546040516001600160a01b03909116904790600081818185875af1925050503d806000811461205a576040519150601f19603f3d011682016040523d82523d6000602084013e61205f565b606091505b505050505050505050505050565b60008261207c57506000610a26565b60006120888385612735565b9050826120958583612754565b146115c65760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610a56565b60006115c683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061242f565b60006115c683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611cfb565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106121a5576121a5612862565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561221e57600080fd5b505afa158015612232573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122569190612878565b8160018151811061226957612269612862565b60200260200101906001600160a01b031690816001600160a01b0316815250506122b4307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846115cd565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790612309908590600090869030904290600401612895565b600060405180830381600087803b15801561232357600080fd5b505af1158015612337573d6000803e3d6000fd5b505050505050565b61236a307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846115cd565b60405163f305d71960e01b815230600482015260248101839052600060448201819052606482015261dead60848201524260a48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03169063f305d71990839060c4016060604051808303818588803b1580156123ef57600080fd5b505af1158015612403573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124289190612906565b5050505050565b600081836124505760405162461bcd60e51b8152600401610a56919061245d565b506000611d2c8486612754565b600060208083528351808285015260005b8181101561248a5785810183015185820160400152820161246e565b8181111561249c576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146124c757600080fd5b50565b600080604083850312156124dd57600080fd5b82356124e8816124b2565b946020939093013593505050565b60006020828403121561250857600080fd5b81356115c6816124b2565b60008060006060848603121561252857600080fd5b8335612533816124b2565b92506020840135612543816124b2565b929592945050506040919091013590565b60006020828403121561256657600080fd5b5035919050565b8035801515811461147757600080fd5b6000806040838503121561259057600080fd5b823561259b816124b2565b91506125a96020840161256d565b90509250929050565b6000806000606084860312156125c757600080fd5b505081359360208301359350604090920135919050565b6000602082840312156125f057600080fd5b6115c68261256d565b60008060008060008060c0878903121561261257600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b6000806040838503121561264f57600080fd5b50508035926020909101359150565b6000806040838503121561267157600080fd5b823561267c816124b2565b9150602083013561268c816124b2565b809150509250929050565b600181811c908216806126ab57607f821691505b602082108114156126cc57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000821982111561273057612730612707565b500190565b600081600019048311821515161561274f5761274f612707565b500290565b60008261277157634e487b7160e01b600052601260045260246000fd5b500490565b6020808252602d908201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060408201526c6c6f776572207468616e20322560981b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60008282101561285d5761285d612707565b500390565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561288a57600080fd5b81516115c6816124b2565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156128e55784516001600160a01b0316835293830193918301916001016128c0565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561291b57600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122088a18de0298a90fc4b5637e685788360e8bc32c40db160ae65031135374d807c64736f6c63430008090033
Deployed Bytecode Sourcemap
19384:15160:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19753:23;;;;;;;;;;-1:-1:-1;19753:23:0;;;;-1:-1:-1;;;;;19753:23:0;;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;19753:23:0;;;;;;;;5608:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;6611:181::-;;;;;;;;;;-1:-1:-1;6611:181:0;;;;;:::i;:::-;;:::i;:::-;;;1445:14:1;;1438:22;1420:41;;1408:2;1393:18;6611:181:0;1280:187:1;20498:64:0;;;;;;;;;;-1:-1:-1;20498:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19465:51;;;;;;;;;;;;;;;5964:116;;;;;;;;;;-1:-1:-1;6056:12:0;;5964:116;;;2105:25:1;;;2093:2;2078:18;5964:116:0;1959:177:1;20349:33:0;;;;;;;;;;;;;;;;27499:312;;;;;;;;;;;;;:::i;:::-;;20393:28;;;;;;;;;;;;;;;;20305:33;;;;;;;;;;;;;;;;6804:387;;;;;;;;;;-1:-1:-1;6804:387:0;;;;;:::i;:::-;;:::i;19578:53::-;;;;;;;;;;;;19624:6;19578:53;;5852:100;;;;;;;;;;-1:-1:-1;5852:100:0;;5939:1;2744:36:1;;2732:2;2717:18;5852:100:0;2602:184:1;7203:230:0;;;;;;;;;;-1:-1:-1;7203:230:0;;;;;:::i;:::-;;:::i;19529:38::-;;;;;;;;;;;;;;;28739:133;;;;;;;;;;-1:-1:-1;28739:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;28832:28:0;28804:4;28832:28;;;:19;:28;;;;;;;;;28739:133;24430:251;;;;;;;;;;-1:-1:-1;24430:251:0;;;;;:::i;:::-;;:::i;27221:266::-;;;;;;;;;;;;;:::i;20135:28::-;;;;;;;;;;;;;;;;19926:30;;;;;;;;;;-1:-1:-1;19926:30:0;;;;;;;;6092:135;;;;;;;;;;-1:-1:-1;6092:135:0;;;;;:::i;:::-;-1:-1:-1;;;;;6197:18:0;6166:7;6197:18;;;;;;;;;;;;6092:135;12042:160;;;;;;;;;;;;;:::i;25438:146::-;;;;;;;;;;;;;:::i;25604:152::-;;;;;;;;;;-1:-1:-1;25604:152:0;;;;;:::i;:::-;;:::i;19712:30::-;;;;;;;;;;-1:-1:-1;19712:30:0;;;;-1:-1:-1;;;;;19712:30:0;;;20007;;;;;;;;;;;;;;;;26545:322;;;;;;;;;;-1:-1:-1;26545:322:0;;;;;:::i;:::-;;:::i;11800:87::-;;;;;;;;;;-1:-1:-1;11869:6:0;;-1:-1:-1;;;;;11869:6:0;11800:87;;20174:31;;;;;;;;;;;;;;;;25768:109;;;;;;;;;;-1:-1:-1;25768:109:0;;;;;:::i;:::-;;:::i;5728:112::-;;;;;;;;;;;;;:::i;25889:646::-;;;;;;;;;;-1:-1:-1;25889:646:0;;;;;:::i;:::-;;:::i;28029:256::-;;;;;;;;;;-1:-1:-1;28029:256:0;;;;;:::i;:::-;;:::i;24953:473::-;;;;;;;;;;-1:-1:-1;24953:473:0;;;;;:::i;:::-;;:::i;7445:283::-;;;;;;;;;;-1:-1:-1;7445:283:0;;;;;:::i;:::-;;:::i;6239:187::-;;;;;;;;;;-1:-1:-1;6239:187:0;;;;;:::i;:::-;;:::i;28507:220::-;;;;;;;;;;-1:-1:-1;28507:220:0;;;;;:::i;:::-;;:::i;20258:26::-;;;;;;;;;;;;;;;;20575:58;;;;;;;;;;-1:-1:-1;20575:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;27823:194;;;;;;;;;;-1:-1:-1;27823:194:0;;;;;:::i;:::-;;:::i;26879:330::-;;;;;;;;;;-1:-1:-1;26879:330:0;;;;;:::i;:::-;;:::i;24701:240::-;;;;;;;;;;-1:-1:-1;24701:240:0;;;;;:::i;:::-;;:::i;19797:35::-;;;;;;;;;;;;;;;;24000:410;;;;;;;;;;-1:-1:-1;24000:410:0;;;;;:::i;:::-;;:::i;19969:27::-;;;;;;;;;;;;;;;;6440:159;;;;;;;;;;-1:-1:-1;6440:159:0;;;;;:::i;:::-;-1:-1:-1;;;;;6560:18:0;;;6529:7;6560:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6440:159;19843:33;;;;;;;;;;;;;;;;20089:25;;;;;;;;;;;;;;;;20048:30;;;;;;;;;;;;;;;;12212:260;;;;;;;;;;-1:-1:-1;12212:260:0;;;;;:::i;:::-;;:::i;20216:31::-;;;;;;;;;;;;;;;;19889:24;;;;;;;;;;;;;;;;5608:108;5662:13;5699:5;5692:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5608:108;:::o;6611:181::-;6694:4;6715:39;646:10;6738:7;6747:6;6715:8;:39::i;:::-;-1:-1:-1;6776:4:0;6611:181;;;;;:::o;27499:312::-;11943:6;;-1:-1:-1;;;;;11943:6:0;646:10;11943:22;11935:67;;;;-1:-1:-1;;;11935:67:0;;;;;;;:::i;:::-;;;;;;;;;27612:1:::1;27593:16;:20:::0;;;27557:16:::1;27628:20:::0;27714:10:::1;::::0;27696:15:::1;::::0;27678::::1;::::0;:33:::1;::::0;27696:15;27678:33:::1;:::i;:::-;:46;;;;:::i;:::-;27663:12;:61:::0;27747:10:::1;:17:::0;;-1:-1:-1;;;;27747:17:0::1;-1:-1:-1::0;;;27747:17:0::1;::::0;;27499:312::o;6804:387::-;6960:4;6981:36;6991:6;6999:9;7010:6;6981:9;:36::i;:::-;7032:121;7041:6;646:10;7063:89;7101:6;7063:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7063:19:0;;;;;;:11;:19;;;;;;;;646:10;7063:33;;;;;;;;;;:37;:89::i;:::-;7032:8;:121::i;:::-;-1:-1:-1;7175:4:0;6804:387;;;;;:::o;7203:230::-;646:10;7291:4;7344:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;7344:34:0;;;;;;;;;;7291:4;;7312:83;;7335:7;;7344:50;;7383:10;7344:38;:50::i;24430:251::-;11943:6;;-1:-1:-1;;;;;11943:6:0;646:10;11943:22;11935:67;;;;-1:-1:-1;;;11935:67:0;;;;;;;:::i;:::-;24551:3:::1;24546;24526:13;6056:12:::0;;;5964:116;24526:13:::1;:17;::::0;24542:1:::1;24526:17;:::i;:::-;:23;;;;:::i;:::-;24525:29;;;;:::i;:::-;24515:6;:39;;24507:97;;;;-1:-1:-1::0;;;24507:97:0::1;;;;;;;:::i;:::-;24643:12;:6:::0;24652:3:::1;24643:12;:::i;:::-;24642:26;::::0;24660:7:::1;24642:26;:::i;:::-;24619:20;:49:::0;-1:-1:-1;24430:251:0:o;27221:266::-;11943:6;;-1:-1:-1;;;;;11943:6:0;646:10;11943:22;11935:67;;;;-1:-1:-1;;;11935:67:0;;;;;;;:::i;:::-;27296:2:::1;27277:16;:21:::0;;;27332:1:::1;27313:16;:20:::0;;;27348:11:::1;:15:::0;;;27332:1;27394:35:::1;::::0;27332:1;;27394:35:::1;:::i;:::-;:49;;;;:::i;:::-;27378:13;:65:::0;27458:10:::1;:17:::0;;-1:-1:-1;;;;27458:17:0::1;-1:-1:-1::0;;;27458:17:0::1;::::0;;27221:266::o;12042:160::-;11943:6;;-1:-1:-1;;;;;11943:6:0;646:10;11943:22;11935:67;;;;-1:-1:-1;;;11935:67:0;;;;;;;:::i;:::-;12137:6:::1;::::0;12116:40:::1;::::0;12153:1:::1;::::0;-1:-1:-1;;;;;12137:6:0::1;::::0;12116:40:::1;::::0;12153:1;;12116:40:::1;12171:6;:19:::0;;-1:-1:-1;;;;;;12171:19:0::1;::::0;;12042:160::o;25438:146::-;11943:6;;-1:-1:-1;;;;;11943:6:0;646:10;11943:22;11935:67;;;;-1:-1:-1;;;11935:67:0;;;;;;;:::i;:::-;6056:12;;25496:20:::1;:36:::0;6056:12;;25547:9:::1;:25:::0;25438:146::o;25604:152::-;11943:6;;-1:-1:-1;;;;;11943:6:0;646:10;11943:22;11935:67;;;;-1:-1:-1;;;11935:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25698:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;25698:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25604:152::o;26545:322::-;11943:6;;-1:-1:-1;;;;;11943:6:0;646:10;11943:22;11935:67;;;;-1:-1:-1;;;11935:67:0;;;;;;;:::i;:::-;26666:15:::1;:31:::0;;;26712:15:::1;:31:::0;;;26758:10:::1;:21:::0;;;26771:8;26809:33:::1;26730:13:::0;26684;26809:33:::1;:::i;:::-;:46;;;;:::i;:::-;26794:12;:61:::0;-1:-1:-1;;;26545:322:0:o;25768:109::-;11943:6;;-1:-1:-1;;;;;11943:6:0;646:10;11943:22;11935:67;;;;-1:-1:-1;;;11935:67:0;;;;;;;:::i;:::-;25844:11:::1;:21:::0;;-1:-1:-1;;25844:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25768:109::o;5728:112::-;5784:13;5821:7;5814:14;;;;;:::i;25889:646::-;11943:6;;-1:-1:-1;;;;;11943:6:0;646:10;11943:22;11935:67;;;;-1:-1:-1;;;11935:67:0;;;;;;;:::i;:::-;26102:15:::1;:34:::0;;;26151:15:::1;:34:::0;;;26200:10:::1;:24:::0;;;26213:11;26254:33:::1;26169:16:::0;26120;26254:33:::1;:::i;:::-;:46;;;;:::i;:::-;26239:12;:61:::0;26315:16:::1;:36:::0;;;26366:16:::1;:36:::0;;;26417:11:::1;:26:::0;;;26431:12;26474:35:::1;26385:17:::0;26334;26474:35:::1;:::i;:::-;:49;;;;:::i;:::-;26458:13;:65:::0;-1:-1:-1;;;;;;25889:646:0:o;28029:256::-;11943:6;;-1:-1:-1;;;;;11943:6:0;646:10;11943:22;11935:67;;;;-1:-1:-1;;;11935:67:0;;;;;;;:::i;:::-;28142:13:::1;-1:-1:-1::0;;;;;28134:21:0::1;:4;-1:-1:-1::0;;;;;28134:21:0::1;;;28126:91;;;::::0;-1:-1:-1;;;28126:91:0;;7522:2:1;28126:91:0::1;::::0;::::1;7504:21:1::0;7561:2;7541:18;;;7534:30;7600:34;7580:18;;;7573:62;7671:27;7651:18;;;7644:55;7716:19;;28126:91:0::1;7320:421:1::0;28126:91:0::1;28232:41;28261:4;28267:5;28232:28;:41::i;:::-;28029:256:::0;;:::o;24953:473::-;11943:6;;-1:-1:-1;;;;;11943:6:0;646:10;11943:22;11935:67;;;;-1:-1:-1;;;11935:67:0;;;;;;;:::i;:::-;25119:3:::1;25114;25094:13;6056:12:::0;;;5964:116;25094:13:::1;:17;::::0;25110:1:::1;25094:17;:::i;:::-;:23;;;;:::i;:::-;25093:29;;;;:::i;:::-;25068:21;:54;;25060:112;;;;-1:-1:-1::0;;;25060:112:0::1;;;;;;;:::i;:::-;25235:3;25230;25210:13;6056:12:::0;;;5964:116;25210:13:::1;:17;::::0;25226:1:::1;25210:17;:::i;:::-;:23;;;;:::i;:::-;25209:29;;;;:::i;:::-;25195:10;:43;;25187:90;;;::::0;-1:-1:-1;;;25187:90:0;;7948:2:1;25187:90:0::1;::::0;::::1;7930:21:1::0;7987:2;7967:18;;;7960:30;8026:34;8006:18;;;7999:62;-1:-1:-1;;;8077:18:1;;;8070:32;8119:19;;25187:90:0::1;7746:398:1::0;25187:90:0::1;25316:27;:21:::0;25340:3:::1;25316:27;:::i;:::-;25315:41;::::0;25348:7:::1;25315:41;:::i;:::-;25292:20;:64:::0;25385:16:::1;:10:::0;25398:3:::1;25385:16;:::i;:::-;25384:30;::::0;25406:7:::1;25384:30;:::i;:::-;25372:9;:42:::0;-1:-1:-1;;24953:473:0:o;7445:283::-;7538:4;7559:129;646:10;7582:7;7591:96;7630:15;7591:96;;;;;;;;;;;;;;;;;646:10;7591:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;7591:34:0;;;;;;;;;;;;:38;:96::i;6239:187::-;6325:4;6346:42;646:10;6370:9;6381:6;6346:9;:42::i;28507:220::-;11943:6;;-1:-1:-1;;;;;11943:6:0;646:10;11943:22;11935:67;;;;-1:-1:-1;;;11935:67:0;;;;;;;:::i;:::-;28648:15:::1;::::0;28605:59:::1;::::0;-1:-1:-1;;;;;28648:15:0;;::::1;::::0;28605:59;::::1;::::0;::::1;::::0;28648:15:::1;::::0;28605:59:::1;28679:15;:36:::0;;-1:-1:-1;;;;;;28679:36:0::1;-1:-1:-1::0;;;;;28679:36:0;;;::::1;::::0;;;::::1;::::0;;28507:220::o;27823:194::-;11943:6;;-1:-1:-1;;;;;11943:6:0;646:10;11943:22;11935:67;;;;-1:-1:-1;;;11935:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27912:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;27912:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;27971:34;;1420:41:1;;;27971:34:0::1;::::0;1393:18:1;27971:34:0::1;;;;;;;27823:194:::0;;:::o;26879:330::-;11943:6;;-1:-1:-1;;;;;11943:6:0;646:10;11943:22;11935:67;;;;-1:-1:-1;;;11935:67:0;;;;;;;:::i;:::-;27001:16:::1;:32:::0;;;27048:16:::1;:32:::0;;;27095:11:::1;:22:::0;;;27109:8;27148:35:::1;27067:13:::0;27020;27148:35:::1;:::i;:::-;:49;;;;:::i;:::-;27132:13;:65:::0;-1:-1:-1;;;26879:330:0:o;24701:240::-;11943:6;;-1:-1:-1;;;;;11943:6:0;646:10;11943:22;11935:67;;;;-1:-1:-1;;;11935:67:0;;;;;;;:::i;:::-;24826:3:::1;24821;24801:13;6056:12:::0;;;5964:116;24801:13:::1;:17;::::0;24817:1:::1;24801:17;:::i;:::-;:23;;;;:::i;:::-;24800:29;;;;:::i;:::-;24790:6;:39;;24782:92;;;::::0;-1:-1:-1;;;24782:92:0;;8351:2:1;24782:92:0::1;::::0;::::1;8333:21:1::0;8390:2;8370:18;;;8363:30;8429:34;8409:18;;;8402:62;-1:-1:-1;;;8480:18:1;;;8473:38;8528:19;;24782:92:0::1;8149:404:1::0;24782:92:0::1;24902:12;:6:::0;24911:3:::1;24902:12;:::i;:::-;24901:26;::::0;24919:7:::1;24901:26;:::i;:::-;24889:9;:38:::0;-1:-1:-1;24701:240:0:o;24000:410::-;11943:6;;24081:4;;-1:-1:-1;;;;;11943:6:0;646:10;11943:22;11935:67;;;;-1:-1:-1;;;11935:67:0;;;;;;;:::i;:::-;24142:6:::1;24122:13;6056:12:::0;;;5964:116;24122:13:::1;:17;::::0;24138:1:::1;24122:17;:::i;:::-;:26;;;;:::i;:::-;24109:9;:39;;24101:105;;;::::0;-1:-1:-1;;;24101:105:0;;8760:2:1;24101:105:0::1;::::0;::::1;8742:21:1::0;8799:2;8779:18;;;8772:30;8838:34;8818:18;;;8811:62;-1:-1:-1;;;8889:18:1;;;8882:51;8950:19;;24101:105:0::1;8558:417:1::0;24101:105:0::1;24262:4;24242:13;6056:12:::0;;;5964:116;24242:13:::1;:17;::::0;24258:1:::1;24242:17;:::i;:::-;:24;;;;:::i;:::-;24229:9;:37;;24221:102;;;::::0;-1:-1:-1;;;24221:102:0;;9182:2:1;24221:102:0::1;::::0;::::1;9164:21:1::0;9221:2;9201:18;;;9194:30;9260:34;9240:18;;;9233:62;-1:-1:-1;;;9311:18:1;;;9304:50;9371:19;;24221:102:0::1;8980:416:1::0;24221:102:0::1;-1:-1:-1::0;24338:18:0::1;:30:::0;;;24390:4:::1;12017:1;24000:410:::0;;;:::o;12212:260::-;11943:6;;-1:-1:-1;;;;;11943:6:0;646:10;11943:22;11935:67;;;;-1:-1:-1;;;11935:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12305:22:0;::::1;12297:73;;;::::0;-1:-1:-1;;;12297:73:0;;9603:2:1;12297:73:0::1;::::0;::::1;9585:21:1::0;9642:2;9622:18;;;9615:30;9681:34;9661:18;;;9654:62;-1:-1:-1;;;9732:18:1;;;9725:36;9778:19;;12297:73:0::1;9401:402:1::0;12297:73:0::1;12411:6;::::0;12390:38:::1;::::0;-1:-1:-1;;;;;12390:38:0;;::::1;::::0;12411:6:::1;::::0;12390:38:::1;::::0;12411:6:::1;::::0;12390:38:::1;12443:6;:17:::0;;-1:-1:-1;;;;;;12443:17:0::1;-1:-1:-1::0;;;;;12443:17:0;;;::::1;::::0;;;::::1;::::0;;12212:260::o;9859:197::-;9917:7;;9953:5;9957:1;9953;:5;:::i;:::-;9941:17;;9986:1;9981;:6;;9973:46;;;;-1:-1:-1;;;9973:46:0;;10010:2:1;9973:46:0;;;9992:21:1;10049:2;10029:18;;;10022:30;10088:29;10068:18;;;10061:57;10135:18;;9973:46:0;9808:351:1;9973:46:0;10043:1;9859:197;-1:-1:-1;;;9859:197:0:o;9233:418::-;-1:-1:-1;;;;;9391:19:0;;9383:68;;;;-1:-1:-1;;;9383:68:0;;10366:2:1;9383:68:0;;;10348:21:1;10405:2;10385:18;;;10378:30;10444:34;10424:18;;;10417:62;-1:-1:-1;;;10495:18:1;;;10488:34;10539:19;;9383:68:0;10164:400:1;9383:68:0;-1:-1:-1;;;;;9474:21:0;;9466:68;;;;-1:-1:-1;;;9466:68:0;;10771:2:1;9466:68:0;;;10753:21:1;10810:2;10790:18;;;10783:30;10849:34;10829:18;;;10822:62;-1:-1:-1;;;10900:18:1;;;10893:32;10942:19;;9466:68:0;10569:398:1;9466:68:0;-1:-1:-1;;;;;9551:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9607:32;;2105:25:1;;;9607:32:0;;2078:18:1;9607:32:0;;;;;;;;9233:418;;;:::o;28884:3354::-;-1:-1:-1;;;;;29036:18:0;;29028:68;;;;-1:-1:-1;;;29028:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29119:16:0;;29111:64;;;;-1:-1:-1;;;29111:64:0;;;;;;;:::i;:::-;29207:11;29204:104;;29239:28;29255:4;29261:2;29265:1;29239:15;:28::i;:::-;28884:3354;;;:::o;29204:104::-;11869:6;;-1:-1:-1;;;;;29352:15:0;;;11869:6;;29352:15;;;;:55;;-1:-1:-1;11869:6:0;;-1:-1:-1;;;;;29394:13:0;;;11869:6;;29394:13;;29352:55;:96;;;;-1:-1:-1;;;;;;29432:16:0;;;;29352:96;:142;;;;-1:-1:-1;;;;;;29473:21:0;;29487:6;29473:21;;29352:142;:176;;;;-1:-1:-1;29520:8:0;;-1:-1:-1;;;29520:8:0;;;;29519:9;29352:176;29326:934;;;-1:-1:-1;;;;;29606:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;29642:35:0;;;;;;:31;:35;;;;;;;;29641:36;29606:71;29602:639;;;29728:20;;29718:6;:30;;29710:96;;;;-1:-1:-1;;;29710:96:0;;11984:2:1;29710:96:0;;;11966:21:1;12023:2;12003:18;;;11996:30;12062:34;12042:18;;;12035:62;-1:-1:-1;;;12113:18:1;;;12106:51;12174:19;;29710:96:0;11782:417:1;29710:96:0;29871:9;;-1:-1:-1;;;;;6197:18:0;;6166:7;6197:18;;;;;;;;;;;29845:22;;:6;:22;:::i;:::-;:35;;29837:67;;;;-1:-1:-1;;;29837:67:0;;12406:2:1;29837:67:0;;;12388:21:1;12445:2;12425:18;;;12418:30;-1:-1:-1;;;12464:18:1;;;12457:49;12523:18;;29837:67:0;12204:343:1;29837:67:0;29602:639;;;-1:-1:-1;;;;;30016:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;30050:37:0;;;;;;:31;:37;;;;;;;;30049:38;30016:71;30012:229;;;30138:20;;30128:6;:30;;30120:97;;;;-1:-1:-1;;;30120:97:0;;12754:2:1;30120:97:0;;;12736:21:1;12793:2;12773:18;;;12766:30;12832:34;12812:18;;;12805:62;-1:-1:-1;;;12883:18:1;;;12876:52;12945:19;;30120:97:0;12552:418:1;30120:97:0;30323:4;30274:28;6197:18;;;;;;;;;;;30383;;30359:42;;;;;;;30440:39;;-1:-1:-1;30468:11:0;;;;30440:39;:69;;;;-1:-1:-1;30501:8:0;;-1:-1:-1;;;30501:8:0;;;;30500:9;30440:69;:122;;;;-1:-1:-1;;;;;;30531:31:0;;;;;;:25;:31;;;;;;;;30530:32;30440:122;:169;;;;-1:-1:-1;;;;;;30584:25:0;;;;;;:19;:25;;;;;;;;30583:26;30440:169;:214;;;;-1:-1:-1;;;;;;30631:23:0;;;;;;:19;:23;;;;;;;;30630:24;30440:214;30418:367;;;30689:8;:15;;-1:-1:-1;;;;30689:15:0;-1:-1:-1;;;30689:15:0;;;30724:10;:8;:10::i;:::-;30753:8;:16;;-1:-1:-1;;;;30753:16:0;;;30418:367;30815:8;;-1:-1:-1;;;;;30845:25:0;;30799:12;30845:25;;;:19;:25;;;;;;30815:8;-1:-1:-1;;;30815:8:0;;;;;30814:9;;30845:25;;:52;;-1:-1:-1;;;;;;30874:23:0;;;;;;:19;:23;;;;;;;;30845:52;30842:107;;;-1:-1:-1;30928:5:0;30842:107;30963:12;30997:7;30994:1185;;;-1:-1:-1;;;;;31028:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;31077:1;31061:13;;:17;31028:50;31024:779;;;31109:34;31139:3;31109:25;31120:13;;31109:6;:10;;:25;;;;:::i;:::-;:29;;:34::i;:::-;31102:41;;31214:13;;31195:16;;31188:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;31166:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;31298:13:0;;31279:16;;31272:23;;:4;:23;:::i;:::-;:39;;;;:::i;:::-;31250:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;31372:13:0;;31358:11;;31351:18;;:4;:18;:::i;:::-;:34;;;;:::i;:::-;31334:13;;:51;;;;;;;:::i;:::-;;;;-1:-1:-1;31024:779:0;;-1:-1:-1;31024:779:0;;-1:-1:-1;;;;;31431:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;31481:1;31466:12;;:16;31431:51;31428:375;;;31514:33;31543:3;31514:24;31525:12;;31514:6;:10;;:24;;;;:::i;:33::-;31507:40;;31617:12;;31599:15;;31592:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;31570:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;31699:12:0;;31681:15;;31674:22;;:4;:22;:::i;:::-;:37;;;;:::i;:::-;31652:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;31771:12:0;;31758:10;;31751:17;;:4;:17;:::i;:::-;:32;;;;:::i;:::-;31734:13;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;31428:375:0;31842:8;;31839:119;;31878:60;31894:4;31908;31923:13;;31916:4;:20;;;;:::i;:::-;31878:15;:60::i;:::-;31981:13;;:17;31978:153;;32022:49;32038:4;19624:6;32057:13;;32022:15;:49::i;:::-;32110:1;32094:13;:17;31978:153;32149:14;32159:4;32149:14;;:::i;:::-;;;30994:1185;32193:33;32209:4;32215:2;32219:6;32193:15;:33::i;:::-;29013:3225;;;;28884:3354;;;:::o;10226:210::-;10312:7;10352:12;10344:6;;;;10336:29;;;;-1:-1:-1;;;10336:29:0;;;;;;;;:::i;:::-;-1:-1:-1;10380:9:0;10392:5;10396:1;10392;:5;:::i;:::-;10380:17;10226:210;-1:-1:-1;;;;;10226:210:0:o;28297:198::-;-1:-1:-1;;;;;28384:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;28384:39:0;;;;;;;;;;28443:40;;28384:39;;:31;28443:40;;;28297:198;;:::o;7740:619::-;-1:-1:-1;;;;;7906:20:0;;7898:70;;;;-1:-1:-1;;;7898:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7991:23:0;;7983:71;;;;-1:-1:-1;;;7983:71:0;;;;;;;:::i;:::-;8151;8173:6;8151:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8151:17:0;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;8131:17:0;;;:9;:17;;;;;;;;;;;:91;;;;8260:20;;;;;;;:32;;8285:6;8260:24;:32::i;:::-;-1:-1:-1;;;;;8237:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;8312:35;2105:25:1;;;8237:20:0;;8312:35;;;;;;2078:18:1;8312:35:0;1959:177:1;33197:1330:0;33284:4;33240:23;6197:18;;;;;;;;;;;33240:50;;33305:25;33354:18;;33333;;:39;;;;:::i;:::-;33305:67;-1:-1:-1;33404:20:0;;;:46;;-1:-1:-1;33428:22:0;;33404:46;33401:60;;;33453:7;;33197:1330::o;33401:60::-;33475:23;33560:1;33540:17;33519:18;;33501:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;33475:86;-1:-1:-1;33576:26:0;33605:36;:15;33475:86;33605:19;:36::i;:::-;33576:65;-1:-1:-1;33684:21:0;33720:36;33576:65;33720:16;:36::i;:::-;33772:18;33793:44;:21;33819:17;33793:25;:44::i;:::-;33772:65;;33852:23;33878:57;33917:17;33878:34;33893:18;;33878:10;:14;;:34;;;;:::i;:57::-;33852:83;-1:-1:-1;33952:23:0;33978:28;33852:83;33978:10;:28;:::i;:::-;34044:1;34023:18;:22;;;34060:18;:22;;;34137:15;;34129:57;;33952:54;;-1:-1:-1;34044:1:0;;-1:-1:-1;;;;;34137:15:0;;;;34166;;34044:1;34129:57;34044:1;34129:57;34166:15;34137;34129:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34111:75;;;34222:1;34204:15;:19;:42;;;;;34245:1;34227:15;:19;34204:42;34201:222;;;34266:46;34279:15;34296;34266:12;:46::i;:::-;34388:18;;34336:71;;;13517:25:1;;;13573:2;13558:18;;13551:34;;;13601:18;;;13594:34;;;;34336:71:0;;;;;;13505:2:1;34336:71:0;;;34201:222;34460:15;;34452:63;;-1:-1:-1;;;;;34460:15:0;;;;34489:21;;34452:63;;;;34489:21;34460:15;34452:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;33197:1330:0:o;10448:276::-;10506:7;10534:6;10530:55;;-1:-1:-1;10568:1:0;10561:8;;10530:55;10599:9;10611:5;10615:1;10611;:5;:::i;:::-;10599:17;-1:-1:-1;10648:1:0;10639:5;10643:1;10599:17;10639:5;:::i;:::-;:10;10631:56;;;;-1:-1:-1;;;10631:56:0;;13841:2:1;10631:56:0;;;13823:21:1;13880:2;13860:18;;;13853:30;13919:34;13899:18;;;13892:62;-1:-1:-1;;;13970:18:1;;;13963:31;14011:19;;10631:56:0;13639:397:1;10736:140:0;10794:7;10825:39;10829:1;10832;10825:39;;;;;;;;;;;;;;;;;:3;:39::i;10068:144::-;10126:7;10157:43;10161:1;10164;10157:43;;;;;;;;;;;;;;;;;:3;:43::i;32250:521::-;32344:16;;;32358:1;32344:16;;;;;;;;32320:21;;32344:16;;;;;;;;;;-1:-1:-1;32344:16:0;32320:40;;32393:4;32375;32380:1;32375:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;32375:23:0;;;-1:-1:-1;;;;;32375:23:0;;;;;32425:15;-1:-1:-1;;;;;32425:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32415:4;32420:1;32415:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;32415:32:0;;;-1:-1:-1;;;;;32415:32:0;;;;;32462:62;32479:4;32494:15;32512:11;32462:8;:62::i;:::-;32539:220;;-1:-1:-1;;;32539:220:0;;-1:-1:-1;;;;;32539:15:0;:66;;;;:220;;32624:11;;32654:1;;32674:4;;32705;;32729:15;;32539:220;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32305:466;32250:521;:::o;32781:404::-;32866:62;32883:4;32898:15;32916:11;32866:8;:62::i;:::-;32943:230;;-1:-1:-1;;;32943:230:0;;33019:4;32943:230;;;15887:34:1;15937:18;;;15930:34;;;33073:1:0;15980:18:1;;;15973:34;;;16023:18;;;16016:34;19624:6:0;16066:19:1;;;16059:44;33143:15:0;16119:19:1;;;16112:35;32943:15:0;-1:-1:-1;;;;;32943:31:0;;;;32982:9;;15821:19:1;;32943:230:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;32781:404;;:::o;10888:205::-;10974:7;11013:12;11006:5;10998:28;;;;-1:-1:-1;;;10998:28:0;;;;;;;;:::i;:::-;-1:-1:-1;11041:9:0;11053:5;11057:1;11053;:5;:::i;222:597:1:-;334:4;363:2;392;381:9;374:21;424:6;418:13;467:6;462:2;451:9;447:18;440:34;492:1;502:140;516:6;513:1;510:13;502:140;;;611:14;;;607:23;;601:30;577:17;;;596:2;573:26;566:66;531:10;;502:140;;;660:6;657:1;654:13;651:91;;;730:1;725:2;716:6;705:9;701:22;697:31;690:42;651:91;-1:-1:-1;803:2:1;782:15;-1:-1:-1;;778:29:1;763:45;;;;810:2;759:54;;222:597;-1:-1:-1;;;222:597:1:o;824:131::-;-1:-1:-1;;;;;899:31:1;;889:42;;879:70;;945:1;942;935:12;879:70;824:131;:::o;960:315::-;1028:6;1036;1089:2;1077:9;1068:7;1064:23;1060:32;1057:52;;;1105:1;1102;1095:12;1057:52;1144:9;1131:23;1163:31;1188:5;1163:31;:::i;:::-;1213:5;1265:2;1250:18;;;;1237:32;;-1:-1:-1;;;960:315:1:o;1472:247::-;1531:6;1584:2;1572:9;1563:7;1559:23;1555:32;1552:52;;;1600:1;1597;1590:12;1552:52;1639:9;1626:23;1658:31;1683:5;1658:31;:::i;2141:456::-;2218:6;2226;2234;2287:2;2275:9;2266:7;2262:23;2258:32;2255:52;;;2303:1;2300;2293:12;2255:52;2342:9;2329:23;2361:31;2386:5;2361:31;:::i;:::-;2411:5;-1:-1:-1;2468:2:1;2453:18;;2440:32;2481:33;2440:32;2481:33;:::i;:::-;2141:456;;2533:7;;-1:-1:-1;;;2587:2:1;2572:18;;;;2559:32;;2141:456::o;2791:180::-;2850:6;2903:2;2891:9;2882:7;2878:23;2874:32;2871:52;;;2919:1;2916;2909:12;2871:52;-1:-1:-1;2942:23:1;;2791:180;-1:-1:-1;2791:180:1:o;2976:160::-;3041:20;;3097:13;;3090:21;3080:32;;3070:60;;3126:1;3123;3116:12;3141:315;3206:6;3214;3267:2;3255:9;3246:7;3242:23;3238:32;3235:52;;;3283:1;3280;3273:12;3235:52;3322:9;3309:23;3341:31;3366:5;3341:31;:::i;:::-;3391:5;-1:-1:-1;3415:35:1;3446:2;3431:18;;3415:35;:::i;:::-;3405:45;;3141:315;;;;;:::o;3461:316::-;3538:6;3546;3554;3607:2;3595:9;3586:7;3582:23;3578:32;3575:52;;;3623:1;3620;3613:12;3575:52;-1:-1:-1;;3646:23:1;;;3716:2;3701:18;;3688:32;;-1:-1:-1;3767:2:1;3752:18;;;3739:32;;3461:316;-1:-1:-1;3461:316:1:o;3782:180::-;3838:6;3891:2;3879:9;3870:7;3866:23;3862:32;3859:52;;;3907:1;3904;3897:12;3859:52;3930:26;3946:9;3930:26;:::i;3967:523::-;4071:6;4079;4087;4095;4103;4111;4164:3;4152:9;4143:7;4139:23;4135:33;4132:53;;;4181:1;4178;4171:12;4132:53;-1:-1:-1;;4204:23:1;;;4274:2;4259:18;;4246:32;;-1:-1:-1;4325:2:1;4310:18;;4297:32;;4376:2;4361:18;;4348:32;;-1:-1:-1;4427:3:1;4412:19;;4399:33;;-1:-1:-1;4479:3:1;4464:19;4451:33;;-1:-1:-1;3967:523:1;-1:-1:-1;3967:523:1:o;4495:248::-;4563:6;4571;4624:2;4612:9;4603:7;4599:23;4595:32;4592:52;;;4640:1;4637;4630:12;4592:52;-1:-1:-1;;4663:23:1;;;4733:2;4718:18;;;4705:32;;-1:-1:-1;4495:248:1:o;4748:388::-;4816:6;4824;4877:2;4865:9;4856:7;4852:23;4848:32;4845:52;;;4893:1;4890;4883:12;4845:52;4932:9;4919:23;4951:31;4976:5;4951:31;:::i;:::-;5001:5;-1:-1:-1;5058:2:1;5043:18;;5030:32;5071:33;5030:32;5071:33;:::i;:::-;5123:7;5113:17;;;4748:388;;;;;:::o;5141:380::-;5220:1;5216:12;;;;5263;;;5284:61;;5338:4;5330:6;5326:17;5316:27;;5284:61;5391:2;5383:6;5380:14;5360:18;5357:38;5354:161;;;5437:10;5432:3;5428:20;5425:1;5418:31;5472:4;5469:1;5462:15;5500:4;5497:1;5490:15;5354:161;;5141:380;;;:::o;5526:356::-;5728:2;5710:21;;;5747:18;;;5740:30;5806:34;5801:2;5786:18;;5779:62;5873:2;5858:18;;5526:356::o;5887:127::-;5948:10;5943:3;5939:20;5936:1;5929:31;5979:4;5976:1;5969:15;6003:4;6000:1;5993:15;6019:128;6059:3;6090:1;6086:6;6083:1;6080:13;6077:39;;;6096:18;;:::i;:::-;-1:-1:-1;6132:9:1;;6019:128::o;6511:168::-;6551:7;6617:1;6613;6609:6;6605:14;6602:1;6599:21;6594:1;6587:9;6580:17;6576:45;6573:71;;;6624:18;;:::i;:::-;-1:-1:-1;6664:9:1;;6511:168::o;6684:217::-;6724:1;6750;6740:132;;6794:10;6789:3;6785:20;6782:1;6775:31;6829:4;6826:1;6819:15;6857:4;6854:1;6847:15;6740:132;-1:-1:-1;6886:9:1;;6684:217::o;6906:409::-;7108:2;7090:21;;;7147:2;7127:18;;;7120:30;7186:34;7181:2;7166:18;;7159:62;-1:-1:-1;;;7252:2:1;7237:18;;7230:43;7305:3;7290:19;;6906:409::o;10972:401::-;11174:2;11156:21;;;11213:2;11193:18;;;11186:30;11252:34;11247:2;11232:18;;11225:62;-1:-1:-1;;;11318:2:1;11303:18;;11296:35;11363:3;11348:19;;10972:401::o;11378:399::-;11580:2;11562:21;;;11619:2;11599:18;;;11592:30;11658:34;11653:2;11638:18;;11631:62;-1:-1:-1;;;11724:2:1;11709:18;;11702:33;11767:3;11752:19;;11378:399::o;12975:125::-;13015:4;13043:1;13040;13037:8;13034:34;;;13048:18;;:::i;:::-;-1:-1:-1;13085:9:1;;12975:125::o;14173:127::-;14234:10;14229:3;14225:20;14222:1;14215:31;14265:4;14262:1;14255:15;14289:4;14286:1;14279:15;14305:251;14375:6;14428:2;14416:9;14407:7;14403:23;14399:32;14396:52;;;14444:1;14441;14434:12;14396:52;14476:9;14470:16;14495:31;14520:5;14495:31;:::i;14561:980::-;14823:4;14871:3;14860:9;14856:19;14902:6;14891:9;14884:25;14928:2;14966:6;14961:2;14950:9;14946:18;14939:34;15009:3;15004:2;14993:9;14989:18;14982:31;15033:6;15068;15062:13;15099:6;15091;15084:22;15137:3;15126:9;15122:19;15115:26;;15176:2;15168:6;15164:15;15150:29;;15197:1;15207:195;15221:6;15218:1;15215:13;15207:195;;;15286:13;;-1:-1:-1;;;;;15282:39:1;15270:52;;15377:15;;;;15342:12;;;;15318:1;15236:9;15207:195;;;-1:-1:-1;;;;;;;15458:32:1;;;;15453:2;15438:18;;15431:60;-1:-1:-1;;;15522:3:1;15507:19;15500:35;15419:3;14561:980;-1:-1:-1;;;14561:980:1:o;16158:306::-;16246:6;16254;16262;16315:2;16303:9;16294:7;16290:23;16286:32;16283:52;;;16331:1;16328;16321:12;16283:52;16360:9;16354:16;16344:26;;16410:2;16399:9;16395:18;16389:25;16379:35;;16454:2;16443:9;16439:18;16433:25;16423:35;;16158:306;;;;;:::o
Swarm Source
ipfs://88a18de0298a90fc4b5637e685788360e8bc32c40db160ae65031135374d807c
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.