More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 38 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 18578735 | 508 days ago | IN | 0 ETH | 0.0024693 | ||||
Update Swap Enab... | 18578661 | 508 days ago | IN | 0 ETH | 0.0191432 | ||||
Approve | 18578653 | 508 days ago | IN | 0 ETH | 0.00265523 | ||||
Approve | 18578652 | 508 days ago | IN | 0 ETH | 0.00250006 | ||||
Approve | 18578651 | 508 days ago | IN | 0 ETH | 0.00254223 | ||||
Approve | 18578650 | 508 days ago | IN | 0 ETH | 0.0026735 | ||||
Approve | 18578648 | 508 days ago | IN | 0 ETH | 0.00288444 | ||||
Approve | 18578646 | 508 days ago | IN | 0 ETH | 0.00283079 | ||||
Approve | 18578646 | 508 days ago | IN | 0 ETH | 0.00283079 | ||||
Approve | 18578646 | 508 days ago | IN | 0 ETH | 0.00283079 | ||||
Approve | 18578645 | 508 days ago | IN | 0 ETH | 0.00279867 | ||||
Approve | 18578645 | 508 days ago | IN | 0 ETH | 0.00289118 | ||||
Approve | 18578645 | 508 days ago | IN | 0 ETH | 0.00289118 | ||||
Approve | 18578645 | 508 days ago | IN | 0 ETH | 0.00289118 | ||||
Approve | 18578645 | 508 days ago | IN | 0 ETH | 0.00289118 | ||||
Approve | 18578645 | 508 days ago | IN | 0 ETH | 0.00289118 | ||||
Approve | 18578643 | 508 days ago | IN | 0 ETH | 0.00274941 | ||||
Approve | 18578643 | 508 days ago | IN | 0 ETH | 0.00274941 | ||||
Approve | 18578642 | 508 days ago | IN | 0 ETH | 0.00292924 | ||||
Approve | 18578642 | 508 days ago | IN | 0 ETH | 0.00292924 | ||||
Approve | 18578642 | 508 days ago | IN | 0 ETH | 0.00292924 | ||||
Approve | 18578641 | 508 days ago | IN | 0 ETH | 0.00268567 | ||||
Approve | 18578640 | 508 days ago | IN | 0 ETH | 0.00814905 | ||||
Approve | 18578640 | 508 days ago | IN | 0 ETH | 0.00814905 | ||||
Approve | 18578640 | 508 days ago | IN | 0 ETH | 0.00814905 |
Latest 12 internal transactions
Advanced mode:
Parent Transaction Hash | Method | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|---|
Transfer | 18578661 | 508 days ago | 0.0855766 ETH | ||||
Transfer | 18578661 | 508 days ago | 0.0855766 ETH | ||||
Transfer | 18578661 | 508 days ago | 0.0922477 ETH | ||||
Transfer | 18578661 | 508 days ago | 0.0922477 ETH | ||||
Transfer | 18578661 | 508 days ago | 0.10115785 ETH | ||||
Transfer | 18578661 | 508 days ago | 0.10115785 ETH | ||||
Transfer | 18578652 | 508 days ago | 0.1014289 ETH | ||||
Transfer | 18578652 | 508 days ago | 0.1014289 ETH | ||||
Transfer | 18578652 | 508 days ago | 0.111901 ETH | ||||
Transfer | 18578652 | 508 days ago | 0.111901 ETH | ||||
Transfer | 18578652 | 508 days ago | 0.12408396 ETH | ||||
Transfer | 18578652 | 508 days ago | 0.12408396 ETH |
Loading...
Loading
Contract Name:
ZEROxAI
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-11-15 */ // TG: https://t.me/ZERO_x000000bot // X: https://twitter.com/ZERO_x0000AI // Website: https://0x0000ai.com // 0x0000AI: https://t.me/ZERO_x000000bot // SPDX-License-Identifier: MIT pragma solidity =0.8.18; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); } interface IUniswapV2Router02 is IUniswapV2Router01 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) _balances; mapping(address => mapping(address => uint256)) _allowances; uint256 _totalSupply; string _name; string _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { require(_allowances[sender][msg.sender] >= amount, "ERC20: transfer amount exceeds allowance"); _transfer(sender, recipient, amount); _approve(sender, msg.sender, _allowances[sender][msg.sender] - amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer(address from, address to, uint256 amount) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by // decrementing then incrementing. _balances[to] += amount; } emit Transfer(from, to, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; // Overflow not possible: amount <= accountBalance <= totalSupply. _totalSupply -= amount; } emit Transfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } contract ZEROxAI is ERC20, Ownable { IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; address public constant deadAddress = address(0xdead); address public deployer; address public devWallet; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; bool public limitsInEffect = true; bool public swapEnabled = true; uint256 public buyTotalFees; uint256 public buyLiquidityFee; uint256 public buyDevFee; uint256 public sellTotalFees; uint256 public sellLiquidityFee; uint256 public sellDevFee; uint256 public tokensForLiquidity; uint256 public tokensForDev; bool private tradingActive; uint256 private launchBlock; bool private swapping; /******************/ // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount mapping (address => bool) public automatedMarketMakerPairs; // exlcude from fees and max transaction amount mapping (address => bool) _isExcludedFromFees; mapping (address => bool) _isExcludedMaxTransactionAmount; mapping (uint256 => uint256 ) _blockLastTrade; event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); constructor() ERC20("0x0000AI", "0x0000AI") { _totalSupply = 100_000_000 * 1e18; maxTransactionAmount = _totalSupply * 2 / 100; // 2% maxTransactionAmountTxn maxWallet = _totalSupply * 2 / 100; // 2% maxWallet swapTokensAtAmount = _totalSupply * 1 / 1000; // 0.1% swap wallet uint256 _buyLiquidityFee = 0; uint256 _buyDevFee = 20; uint256 _sellLiquidityFee = 0; uint256 _sellDevFee = 40; buyLiquidityFee = _buyLiquidityFee; buyDevFee = _buyDevFee; buyTotalFees = buyLiquidityFee + buyDevFee; sellLiquidityFee = _sellLiquidityFee; sellDevFee = _sellDevFee; sellTotalFees = sellLiquidityFee + sellDevFee; deployer = address(_msgSender()); // set as deployer devWallet = address(0xDC7FC5a02Ecd97b957E9959370f17Bd1667A1914); // set as dev wallet IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Router = _uniswapV2Router; excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); excludeFromMaxTransaction(address(uniswapV2Pair), true); // exclude from paying fees or having max transaction amount excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromFees(devWallet, true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); _balances[deployer] = _totalSupply; emit Transfer(address(0), deployer, _totalSupply); } receive() external payable {} // remove limits after token is stable function removeLimits() external onlyOwner returns (bool){ limitsInEffect = 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() * 1 / 100, "Swap amount cannot be higher than 0.5% total supply."); swapTokensAtAmount = newAmount; return true; } function updateMaxTxnAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 1 / 100)/1e18, "Cannot set maxTransactionAmount lower than 1%"); maxTransactionAmount = newNum * (10**18); } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 2 / 100)/1e18, "Cannot set maxWallet lower than 2%"); maxWallet = newNum * (10**18); } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } // only use to disable contract sales if absolutely necessary (emergency use only) function updateSwapEnabled(bool enabled) external onlyOwner{ tradingActive = enabled; } function initialize() external onlyOwner { require(!tradingActive); launchBlock = 1; } function openTrading(uint256 b) external onlyOwner { require(!tradingActive && launchBlock != 0); launchBlock+=block.number+b; tradingActive = true; } function updateBuyFees(uint256 _liquidityFee, uint256 _devFee) external onlyOwner { buyLiquidityFee = _liquidityFee; buyDevFee = _devFee; buyTotalFees = buyLiquidityFee + buyDevFee; require(buyTotalFees <= 20, "Must keep fees at 20% or less"); } function updateSellFees(uint256 _liquidityFee, uint256 _devFee) external onlyOwner { sellLiquidityFee = _liquidityFee; sellDevFee = _devFee; sellTotalFees = sellLiquidityFee + sellDevFee; require(sellTotalFees <= 25, "Must keep fees at 25% or less"); } 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]; } event BoughtEarly(address indexed sniper); 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(limitsInEffect){ if ( from != deployer && to != deployer && to != address(0) && to != address(0xdead) && !swapping ){ if(!tradingActive){ require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active."); } //when buy if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount."); require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } //when sell else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount."); } else if(!_isExcludedMaxTransactionAmount[to]){ require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = swappable(contractTokenBalance); if( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if(takeFee){ if(0 < launchBlock && launchBlock < block.number){ // on buy if (automatedMarketMakerPairs[to] && sellTotalFees > 0){ fees = amount * sellTotalFees / 100; tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees; tokensForDev += fees * sellDevFee / sellTotalFees; } // on sell else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount * buyTotalFees / 100; tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees; tokensForDev += fees * buyDevFee / buyTotalFees; } } else{ fees = getFees(from, to, amount); } if(fees > 0){ super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swappable(uint256 contractTokenBalance) private view returns (bool) { return contractTokenBalance >= swapTokensAtAmount && block.number > launchBlock && _blockLastTrade[block.number] < 3; } 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 ); _blockLastTrade[block.number]++; } 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 deadAddress, block.timestamp ); } function getFees(address from, address to, uint256 amount) private returns (uint256 fees) { if(automatedMarketMakerPairs[from]){ fees = amount * 49 / 100; tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees; tokensForDev += fees * buyDevFee / buyTotalFees; emit BoughtEarly(to); //sniper } else{ fees = amount * (launchBlock == 0 ? 30 : 70) / 100; tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees; tokensForDev += fees * sellDevFee / sellTotalFees; } } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForDev; bool success; if(contractBalance == 0 || totalTokensToSwap == 0) {return;} if(contractBalance > swapTokensAtAmount * 22){ contractBalance = swapTokensAtAmount * 22; } // Halve the amount of liquidity tokens uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance - liquidityTokens; uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance - initialETHBalance; uint256 ethForDev = ethBalance * tokensForDev / totalTokensToSwap; uint256 ethForLiquidity = ethBalance - ethForDev; tokensForLiquidity = 0; tokensForDev = 0; (success,) = address(devWallet).call{value: ethForDev}(""); if(liquidityTokens > 0 && ethForLiquidity > 0){ addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"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":"sniper","type":"address"}],"name":"BoughtEarly","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"},{"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":"buyDevFee","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":"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":"deployer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"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":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"b","type":"uint256"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","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":"sellDevFee","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":"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":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","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
60c0604052600b805461ffff19166101011790553480156200002057600080fd5b50604080518082018252600880825267307830303030414960c01b60208084018290528451808601909552918452908301529060036200006183826200064b565b5060046200007082826200064b565b5050506000620000856200042a60201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506a52b7d2dcc80cd2e40000006002818155606491620000f2916200072d565b620000fe91906200074d565b600855600280546064916200011491906200072d565b6200012091906200074d565b600a556002546103e890620001379060016200072d565b6200014391906200074d565b6009556000600d8190556014600e81905581602862000163838362000770565b600c55601082905560118190556200017c818362000770565b600f5560068054336001600160a01b0319918216179091556007805490911673dc7fc5a02ecd97b957e9959370f17bd1667a1914179055737a250d5630b4cf539739df2c5dacb4c659f2488d6080819052620001da8160016200042e565b806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000219573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023f919062000786565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200028d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b3919062000786565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000301573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000327919062000786565b6001600160a01b031660a081905262000342906001620004a8565b60a051620003529060016200042e565b6200035f306001620004fc565b6200036e61dead6001620004fc565b60075462000387906001600160a01b03166001620004fc565b620003a66200039e6005546001600160a01b031690565b60016200042e565b620003b33060016200042e565b620003c261dead60016200042e565b600254600680546001600160a01b0390811660009081526020818152604080832086905593549351948552929091169290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050505050620007b8565b3390565b6005546001600160a01b031633146200047d5760405162461bcd60e51b8152602060048201819052602482015260008051602062002eb883398151915260448201526064015b60405180910390fd5b6001600160a01b03919091166000908152601960205260409020805460ff1916911515919091179055565b6001600160a01b038216600081815260176020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620005475760405162461bcd60e51b8152602060048201819052602482015260008051602062002eb8833981519152604482015260640162000474565b6001600160a01b038216600081815260186020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620005d157607f821691505b602082108103620005f257634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200064657600081815260208120601f850160051c81016020861015620006215750805b601f850160051c820191505b8181101562000642578281556001016200062d565b5050505b505050565b81516001600160401b03811115620006675762000667620005a6565b6200067f81620006788454620005bc565b84620005f8565b602080601f831160018114620006b757600084156200069e5750858301515b600019600386901b1c1916600185901b17855562000642565b600085815260208120601f198616915b82811015620006e857888601518255948401946001909101908401620006c7565b5085821015620007075787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141762000747576200074762000717565b92915050565b6000826200076b57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562000747576200074762000717565b6000602082840312156200079957600080fd5b81516001600160a01b0381168114620007b157600080fd5b9392505050565b60805160a0516126b0620008086000396000818161042f0152610d9e01526000818161031c01528181611ff4015281816120ad015281816120e90152818161218401526121e101526126b06000f3fe6080604052600436106102815760003560e01c80638ea5220f1161014f578063c18bc195116100c1578063dd62ed3e1161007a578063dd62ed3e1461079f578063e2f45605146107bf578063f11a24d3146107d5578063f2fde38b146107eb578063f63743421461080b578063f8b45b051461082157600080fd5b8063c18bc195146106f3578063c8c8ebe414610713578063d163364914610729578063d257b34f14610749578063d5f3948814610769578063d85ba0631461078957600080fd5b80639fccce32116101135780639fccce3214610637578063a0d82dc51461064d578063a457c2d714610663578063a9059cbb14610683578063b62496f5146106a3578063c0246668146106d357600080fd5b80638ea5220f146105ac578063924de9b7146105cc57806395d89b41146105ec5780639a7a23d6146106015780639c3b4fdc1461062157600080fd5b806349bd5a5e116101f357806370a08231116101ac57806370a08231146104f9578063715018a61461052f578063751039fc146105445780637571336a146105595780638129fc1c146105795780638da5cb5b1461058e57600080fd5b806349bd5a5e1461041d5780634a62bb65146104515780634fbee1931461046b57806366ca9b83146104a45780636a486a8e146104c45780636ddd1713146104da57600080fd5b80631a8145bb116102455780631a8145bb14610375578063203e727e1461038b57806323b872dd146103ab57806327c8f835146103cb578063313ce567146103e157806339509351146103fd57600080fd5b806302dbd8f81461028d57806306fdde03146102af578063095ea7b3146102da5780631694505e1461030a57806318160ddd1461035657600080fd5b3661028857005b600080fd5b34801561029957600080fd5b506102ad6102a836600461225f565b610837565b005b3480156102bb57600080fd5b506102c46108d7565b6040516102d19190612281565b60405180910390f35b3480156102e657600080fd5b506102fa6102f53660046122e7565b610969565b60405190151581526020016102d1565b34801561031657600080fd5b5061033e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102d1565b34801561036257600080fd5b506002545b6040519081526020016102d1565b34801561038157600080fd5b5061036760125481565b34801561039757600080fd5b506102ad6103a6366004612313565b610980565b3480156103b757600080fd5b506102fa6103c636600461232c565b610a5a565b3480156103d757600080fd5b5061033e61dead81565b3480156103ed57600080fd5b50604051601281526020016102d1565b34801561040957600080fd5b506102fa6104183660046122e7565b610b2f565b34801561042957600080fd5b5061033e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561045d57600080fd5b50600b546102fa9060ff1681565b34801561047757600080fd5b506102fa61048636600461236d565b6001600160a01b031660009081526018602052604090205460ff1690565b3480156104b057600080fd5b506102ad6104bf36600461225f565b610b4c565b3480156104d057600080fd5b50610367600f5481565b3480156104e657600080fd5b50600b546102fa90610100900460ff1681565b34801561050557600080fd5b5061036761051436600461236d565b6001600160a01b031660009081526020819052604090205490565b34801561053b57600080fd5b506102ad610bdf565b34801561055057600080fd5b506102fa610c53565b34801561056557600080fd5b506102ad61057436600461239a565b610c90565b34801561058557600080fd5b506102ad610ce5565b34801561059a57600080fd5b506005546001600160a01b031661033e565b3480156105b857600080fd5b5060075461033e906001600160a01b031681565b3480156105d857600080fd5b506102ad6105e73660046123cf565b610d26565b3480156105f857600080fd5b506102c4610d63565b34801561060d57600080fd5b506102ad61061c36600461239a565b610d72565b34801561062d57600080fd5b50610367600e5481565b34801561064357600080fd5b5061036760135481565b34801561065957600080fd5b5061036760115481565b34801561066f57600080fd5b506102fa61067e3660046122e7565b610e4d565b34801561068f57600080fd5b506102fa61069e3660046122e7565b610ed3565b3480156106af57600080fd5b506102fa6106be36600461236d565b60176020526000908152604090205460ff1681565b3480156106df57600080fd5b506102ad6106ee36600461239a565b610ee0565b3480156106ff57600080fd5b506102ad61070e366004612313565b610f69565b34801561071f57600080fd5b5061036760085481565b34801561073557600080fd5b506102ad610744366004612313565b611038565b34801561075557600080fd5b506102fa610764366004612313565b6110af565b34801561077557600080fd5b5060065461033e906001600160a01b031681565b34801561079557600080fd5b50610367600c5481565b3480156107ab57600080fd5b506103676107ba3660046123ea565b611205565b3480156107cb57600080fd5b5061036760095481565b3480156107e157600080fd5b50610367600d5481565b3480156107f757600080fd5b506102ad61080636600461236d565b611230565b34801561081757600080fd5b5061036760105481565b34801561082d57600080fd5b50610367600a5481565b6005546001600160a01b0316331461086a5760405162461bcd60e51b815260040161086190612423565b60405180910390fd5b6010829055601181905561087e818361246e565b600f819055601910156108d35760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323525206f72206c6573730000006044820152606401610861565b5050565b6060600380546108e690612481565b80601f016020809104026020016040519081016040528092919081815260200182805461091290612481565b801561095f5780601f106109345761010080835404028352916020019161095f565b820191906000526020600020905b81548152906001019060200180831161094257829003601f168201915b5050505050905090565b600061097633848461131b565b5060015b92915050565b6005546001600160a01b031633146109aa5760405162461bcd60e51b815260040161086190612423565b670de0b6b3a764000060646109be60025490565b6109c99060016124bb565b6109d391906124d2565b6109dd91906124d2565b811015610a425760405162461bcd60e51b815260206004820152602d60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526c6c6f776572207468616e20312560981b6064820152608401610861565b610a5481670de0b6b3a76400006124bb565b60085550565b6001600160a01b0383166000908152600160209081526040808320338452909152812054821115610ade5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610861565b610ae984848461143f565b6001600160a01b038416600090815260016020908152604080832033808552925290912054610b24918691610b1f9086906124f4565b61131b565b5060015b9392505050565b600033610b24818585610b428383611205565b610b1f919061246e565b6005546001600160a01b03163314610b765760405162461bcd60e51b815260040161086190612423565b600d829055600e819055610b8a818361246e565b600c819055601410156108d35760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323025206f72206c6573730000006044820152606401610861565b6005546001600160a01b03163314610c095760405162461bcd60e51b815260040161086190612423565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546000906001600160a01b03163314610c805760405162461bcd60e51b815260040161086190612423565b50600b805460ff19169055600190565b6005546001600160a01b03163314610cba5760405162461bcd60e51b815260040161086190612423565b6001600160a01b03919091166000908152601960205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610d0f5760405162461bcd60e51b815260040161086190612423565b60145460ff1615610d1f57600080fd5b6001601555565b6005546001600160a01b03163314610d505760405162461bcd60e51b815260040161086190612423565b6014805460ff1916911515919091179055565b6060600480546108e690612481565b6005546001600160a01b03163314610d9c5760405162461bcd60e51b815260040161086190612423565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610e435760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610861565b6108d38282611ad4565b60003381610e5b8286611205565b905083811015610ebb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610861565b610ec8828686840361131b565b506001949350505050565b600061097633848461143f565b6005546001600160a01b03163314610f0a5760405162461bcd60e51b815260040161086190612423565b6001600160a01b038216600081815260186020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610f935760405162461bcd60e51b815260040161086190612423565b670de0b6b3a76400006064610fa760025490565b610fb29060026124bb565b610fbc91906124d2565b610fc691906124d2565b8110156110205760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015261322560f01b6064820152608401610861565b61103281670de0b6b3a76400006124bb565b600a5550565b6005546001600160a01b031633146110625760405162461bcd60e51b815260040161086190612423565b60145460ff16158015611076575060155415155b61107f57600080fd5b611089814361246e565b6015600082825461109a919061246e565b90915550506014805460ff1916600117905550565b6005546000906001600160a01b031633146110dc5760405162461bcd60e51b815260040161086190612423565b620186a06110e960025490565b6110f49060016124bb565b6110fe91906124d2565b82101561116b5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610861565b606461117660025490565b6111819060016124bb565b61118b91906124d2565b8211156111f75760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610861565b50600981905560015b919050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6005546001600160a01b0316331461125a5760405162461bcd60e51b815260040161086190612423565b6001600160a01b0381166112bf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610861565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661137d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610861565b6001600160a01b0382166113de5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610861565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166114655760405162461bcd60e51b815260040161086190612507565b6001600160a01b03821661148b5760405162461bcd60e51b81526004016108619061254c565b806000036114a45761149f83836000611b28565b505050565b600b5460ff161561180e576006546001600160a01b038481169116148015906114db57506006546001600160a01b03838116911614155b80156114ef57506001600160a01b03821615155b801561150657506001600160a01b03821661dead14155b8015611515575060165460ff16155b1561180e5760145460ff166115a8576001600160a01b03831660009081526018602052604090205460ff168061156357506001600160a01b03821660009081526018602052604090205460ff165b6115a85760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610861565b6001600160a01b03831660009081526017602052604090205460ff1680156115e957506001600160a01b03821660009081526019602052604090205460ff16155b156116cd5760085481111561165e5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610861565b600a546001600160a01b038316600090815260208190526040902054611684908361246e565b11156116c85760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610861565b61180e565b6001600160a01b03821660009081526017602052604090205460ff16801561170e57506001600160a01b03831660009081526019602052604090205460ff16155b15611784576008548111156116c85760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610861565b6001600160a01b03821660009081526019602052604090205460ff1661180e57600a546001600160a01b0383166000908152602081905260409020546117ca908361246e565b111561180e5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610861565b306000908152602081905260408120549061182882611c53565b905080801561183e5750600b54610100900460ff165b801561184d575060165460ff16155b801561187257506001600160a01b03851660009081526017602052604090205460ff16155b801561189757506001600160a01b03851660009081526018602052604090205460ff16155b80156118bc57506001600160a01b03841660009081526018602052604090205460ff16155b156118e1576016805460ff191660011790556118d6611c88565b6016805460ff191690555b6016546001600160a01b03861660009081526018602052604090205460ff9182161591168061192857506001600160a01b03851660009081526018602052604090205460ff165b15611931575060005b60008115611ac057601554600010801561194c575043601554105b15611a94576001600160a01b03861660009081526017602052604090205460ff16801561197b57506000600f54115b15611a03576064600f548661199091906124bb565b61199a91906124d2565b9050600f54601054826119ad91906124bb565b6119b791906124d2565b601260008282546119c8919061246e565b9091555050600f546011546119dd90836124bb565b6119e791906124d2565b601360008282546119f8919061246e565b90915550611aa29050565b6001600160a01b03871660009081526017602052604090205460ff168015611a2d57506000600c54115b15611a8f576064600c5486611a4291906124bb565b611a4c91906124d2565b9050600c54600d5482611a5f91906124bb565b611a6991906124d2565b60126000828254611a7a919061246e565b9091555050600c54600e546119dd90836124bb565b611aa2565b611a9f878787611e32565b90505b8015611ab357611ab3873083611b28565b611abd81866124f4565b94505b611acb878787611b28565b50505050505050565b6001600160a01b038216600081815260176020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611b4e5760405162461bcd60e51b815260040161086190612507565b6001600160a01b038216611b745760405162461bcd60e51b81526004016108619061254c565b6001600160a01b03831660009081526020819052604090205481811015611bec5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610861565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b60006009548210158015611c68575060155443115b801561097a5750436000908152601a602052604090205460031192915050565b3060009081526020819052604081205490506000601354601254611cac919061246e565b90506000821580611cbb575081155b15611cc557505050565b600954611cd39060166124bb565b831115611ceb57600954611ce89060166124bb565b92505b600060028360125486611cfe91906124bb565b611d0891906124d2565b611d1291906124d2565b90506000611d2082866124f4565b905047611d2c82611f9d565b6000611d3882476124f4565b905060008660135483611d4b91906124bb565b611d5591906124d2565b90506000611d6382846124f4565b6000601281905560138190556007546040519293506001600160a01b031691849181818185875af1925050503d8060008114611dbb576040519150601f19603f3d011682016040523d82523d6000602084013e611dc0565b606091505b50909750508515801590611dd45750600081115b15611e2757611de3868261217e565b601254604080518781526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b505050505050505050565b6001600160a01b03831660009081526017602052604081205460ff1615611f06576064611e608360316124bb565b611e6a91906124d2565b9050600c54600d5482611e7d91906124bb565b611e8791906124d2565b60126000828254611e98919061246e565b9091555050600c54600e54611ead90836124bb565b611eb791906124d2565b60136000828254611ec8919061246e565b90915550506040516001600160a01b038416907fb90badc1cf1c52268f4fa9afb5276aebf640bcca3300cdfc9cf37db17daa13e290600090a2610b28565b6064601554600014611f19576046611f1c565b601e5b611f299060ff16846124bb565b611f3391906124d2565b9050600f5460105482611f4691906124bb565b611f5091906124d2565b60126000828254611f61919061246e565b9091555050600f54601154611f7690836124bb565b611f8091906124d2565b60136000828254611f91919061246e565b90915550509392505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611fd257611fd261258f565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612050573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207491906125a5565b816001815181106120875761208761258f565b60200260200101906001600160a01b031690816001600160a01b0316815250506120d2307f00000000000000000000000000000000000000000000000000000000000000008461131b565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac947906121279085906000908690309042906004016125c2565b600060405180830381600087803b15801561214157600080fd5b505af1158015612155573d6000803e3d6000fd5b5050436000908152601a6020526040812080549350915061217583612633565b91905055505050565b6121a9307f00000000000000000000000000000000000000000000000000000000000000008461131b565b60405163f305d71960e01b815230600482015260248101839052600060448201819052606482015261dead60848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f305d71990839060c40160606040518083038185885af1158015612233573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612258919061264c565b5050505050565b6000806040838503121561227257600080fd5b50508035926020909101359150565b600060208083528351808285015260005b818110156122ae57858101830151858201604001528201612292565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146122e457600080fd5b50565b600080604083850312156122fa57600080fd5b8235612305816122cf565b946020939093013593505050565b60006020828403121561232557600080fd5b5035919050565b60008060006060848603121561234157600080fd5b833561234c816122cf565b9250602084013561235c816122cf565b929592945050506040919091013590565b60006020828403121561237f57600080fd5b8135610b28816122cf565b8035801515811461120057600080fd5b600080604083850312156123ad57600080fd5b82356123b8816122cf565b91506123c66020840161238a565b90509250929050565b6000602082840312156123e157600080fd5b610b288261238a565b600080604083850312156123fd57600080fd5b8235612408816122cf565b91506020830135612418816122cf565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561097a5761097a612458565b600181811c9082168061249557607f821691505b6020821081036124b557634e487b7160e01b600052602260045260246000fd5b50919050565b808202811582820484141761097a5761097a612458565b6000826124ef57634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561097a5761097a612458565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156125b757600080fd5b8151610b28816122cf565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156126125784516001600160a01b0316835293830193918301916001016125ed565b50506001600160a01b03969096166060850152505050608001529392505050565b60006001820161264557612645612458565b5060010190565b60008060006060848603121561266157600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212203f00df03b772c638f6b947e3e454f44b5e17e1cef612d39d0c09ea9a4ca5d5fa64736f6c634300081200334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
Deployed Bytecode
0x6080604052600436106102815760003560e01c80638ea5220f1161014f578063c18bc195116100c1578063dd62ed3e1161007a578063dd62ed3e1461079f578063e2f45605146107bf578063f11a24d3146107d5578063f2fde38b146107eb578063f63743421461080b578063f8b45b051461082157600080fd5b8063c18bc195146106f3578063c8c8ebe414610713578063d163364914610729578063d257b34f14610749578063d5f3948814610769578063d85ba0631461078957600080fd5b80639fccce32116101135780639fccce3214610637578063a0d82dc51461064d578063a457c2d714610663578063a9059cbb14610683578063b62496f5146106a3578063c0246668146106d357600080fd5b80638ea5220f146105ac578063924de9b7146105cc57806395d89b41146105ec5780639a7a23d6146106015780639c3b4fdc1461062157600080fd5b806349bd5a5e116101f357806370a08231116101ac57806370a08231146104f9578063715018a61461052f578063751039fc146105445780637571336a146105595780638129fc1c146105795780638da5cb5b1461058e57600080fd5b806349bd5a5e1461041d5780634a62bb65146104515780634fbee1931461046b57806366ca9b83146104a45780636a486a8e146104c45780636ddd1713146104da57600080fd5b80631a8145bb116102455780631a8145bb14610375578063203e727e1461038b57806323b872dd146103ab57806327c8f835146103cb578063313ce567146103e157806339509351146103fd57600080fd5b806302dbd8f81461028d57806306fdde03146102af578063095ea7b3146102da5780631694505e1461030a57806318160ddd1461035657600080fd5b3661028857005b600080fd5b34801561029957600080fd5b506102ad6102a836600461225f565b610837565b005b3480156102bb57600080fd5b506102c46108d7565b6040516102d19190612281565b60405180910390f35b3480156102e657600080fd5b506102fa6102f53660046122e7565b610969565b60405190151581526020016102d1565b34801561031657600080fd5b5061033e7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016102d1565b34801561036257600080fd5b506002545b6040519081526020016102d1565b34801561038157600080fd5b5061036760125481565b34801561039757600080fd5b506102ad6103a6366004612313565b610980565b3480156103b757600080fd5b506102fa6103c636600461232c565b610a5a565b3480156103d757600080fd5b5061033e61dead81565b3480156103ed57600080fd5b50604051601281526020016102d1565b34801561040957600080fd5b506102fa6104183660046122e7565b610b2f565b34801561042957600080fd5b5061033e7f000000000000000000000000b0e9635092f8a5f2aa5e31945402aec92cd9790e81565b34801561045d57600080fd5b50600b546102fa9060ff1681565b34801561047757600080fd5b506102fa61048636600461236d565b6001600160a01b031660009081526018602052604090205460ff1690565b3480156104b057600080fd5b506102ad6104bf36600461225f565b610b4c565b3480156104d057600080fd5b50610367600f5481565b3480156104e657600080fd5b50600b546102fa90610100900460ff1681565b34801561050557600080fd5b5061036761051436600461236d565b6001600160a01b031660009081526020819052604090205490565b34801561053b57600080fd5b506102ad610bdf565b34801561055057600080fd5b506102fa610c53565b34801561056557600080fd5b506102ad61057436600461239a565b610c90565b34801561058557600080fd5b506102ad610ce5565b34801561059a57600080fd5b506005546001600160a01b031661033e565b3480156105b857600080fd5b5060075461033e906001600160a01b031681565b3480156105d857600080fd5b506102ad6105e73660046123cf565b610d26565b3480156105f857600080fd5b506102c4610d63565b34801561060d57600080fd5b506102ad61061c36600461239a565b610d72565b34801561062d57600080fd5b50610367600e5481565b34801561064357600080fd5b5061036760135481565b34801561065957600080fd5b5061036760115481565b34801561066f57600080fd5b506102fa61067e3660046122e7565b610e4d565b34801561068f57600080fd5b506102fa61069e3660046122e7565b610ed3565b3480156106af57600080fd5b506102fa6106be36600461236d565b60176020526000908152604090205460ff1681565b3480156106df57600080fd5b506102ad6106ee36600461239a565b610ee0565b3480156106ff57600080fd5b506102ad61070e366004612313565b610f69565b34801561071f57600080fd5b5061036760085481565b34801561073557600080fd5b506102ad610744366004612313565b611038565b34801561075557600080fd5b506102fa610764366004612313565b6110af565b34801561077557600080fd5b5060065461033e906001600160a01b031681565b34801561079557600080fd5b50610367600c5481565b3480156107ab57600080fd5b506103676107ba3660046123ea565b611205565b3480156107cb57600080fd5b5061036760095481565b3480156107e157600080fd5b50610367600d5481565b3480156107f757600080fd5b506102ad61080636600461236d565b611230565b34801561081757600080fd5b5061036760105481565b34801561082d57600080fd5b50610367600a5481565b6005546001600160a01b0316331461086a5760405162461bcd60e51b815260040161086190612423565b60405180910390fd5b6010829055601181905561087e818361246e565b600f819055601910156108d35760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323525206f72206c6573730000006044820152606401610861565b5050565b6060600380546108e690612481565b80601f016020809104026020016040519081016040528092919081815260200182805461091290612481565b801561095f5780601f106109345761010080835404028352916020019161095f565b820191906000526020600020905b81548152906001019060200180831161094257829003601f168201915b5050505050905090565b600061097633848461131b565b5060015b92915050565b6005546001600160a01b031633146109aa5760405162461bcd60e51b815260040161086190612423565b670de0b6b3a764000060646109be60025490565b6109c99060016124bb565b6109d391906124d2565b6109dd91906124d2565b811015610a425760405162461bcd60e51b815260206004820152602d60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526c6c6f776572207468616e20312560981b6064820152608401610861565b610a5481670de0b6b3a76400006124bb565b60085550565b6001600160a01b0383166000908152600160209081526040808320338452909152812054821115610ade5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610861565b610ae984848461143f565b6001600160a01b038416600090815260016020908152604080832033808552925290912054610b24918691610b1f9086906124f4565b61131b565b5060015b9392505050565b600033610b24818585610b428383611205565b610b1f919061246e565b6005546001600160a01b03163314610b765760405162461bcd60e51b815260040161086190612423565b600d829055600e819055610b8a818361246e565b600c819055601410156108d35760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323025206f72206c6573730000006044820152606401610861565b6005546001600160a01b03163314610c095760405162461bcd60e51b815260040161086190612423565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546000906001600160a01b03163314610c805760405162461bcd60e51b815260040161086190612423565b50600b805460ff19169055600190565b6005546001600160a01b03163314610cba5760405162461bcd60e51b815260040161086190612423565b6001600160a01b03919091166000908152601960205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610d0f5760405162461bcd60e51b815260040161086190612423565b60145460ff1615610d1f57600080fd5b6001601555565b6005546001600160a01b03163314610d505760405162461bcd60e51b815260040161086190612423565b6014805460ff1916911515919091179055565b6060600480546108e690612481565b6005546001600160a01b03163314610d9c5760405162461bcd60e51b815260040161086190612423565b7f000000000000000000000000b0e9635092f8a5f2aa5e31945402aec92cd9790e6001600160a01b0316826001600160a01b031603610e435760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610861565b6108d38282611ad4565b60003381610e5b8286611205565b905083811015610ebb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610861565b610ec8828686840361131b565b506001949350505050565b600061097633848461143f565b6005546001600160a01b03163314610f0a5760405162461bcd60e51b815260040161086190612423565b6001600160a01b038216600081815260186020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610f935760405162461bcd60e51b815260040161086190612423565b670de0b6b3a76400006064610fa760025490565b610fb29060026124bb565b610fbc91906124d2565b610fc691906124d2565b8110156110205760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015261322560f01b6064820152608401610861565b61103281670de0b6b3a76400006124bb565b600a5550565b6005546001600160a01b031633146110625760405162461bcd60e51b815260040161086190612423565b60145460ff16158015611076575060155415155b61107f57600080fd5b611089814361246e565b6015600082825461109a919061246e565b90915550506014805460ff1916600117905550565b6005546000906001600160a01b031633146110dc5760405162461bcd60e51b815260040161086190612423565b620186a06110e960025490565b6110f49060016124bb565b6110fe91906124d2565b82101561116b5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610861565b606461117660025490565b6111819060016124bb565b61118b91906124d2565b8211156111f75760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610861565b50600981905560015b919050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6005546001600160a01b0316331461125a5760405162461bcd60e51b815260040161086190612423565b6001600160a01b0381166112bf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610861565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661137d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610861565b6001600160a01b0382166113de5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610861565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166114655760405162461bcd60e51b815260040161086190612507565b6001600160a01b03821661148b5760405162461bcd60e51b81526004016108619061254c565b806000036114a45761149f83836000611b28565b505050565b600b5460ff161561180e576006546001600160a01b038481169116148015906114db57506006546001600160a01b03838116911614155b80156114ef57506001600160a01b03821615155b801561150657506001600160a01b03821661dead14155b8015611515575060165460ff16155b1561180e5760145460ff166115a8576001600160a01b03831660009081526018602052604090205460ff168061156357506001600160a01b03821660009081526018602052604090205460ff165b6115a85760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610861565b6001600160a01b03831660009081526017602052604090205460ff1680156115e957506001600160a01b03821660009081526019602052604090205460ff16155b156116cd5760085481111561165e5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610861565b600a546001600160a01b038316600090815260208190526040902054611684908361246e565b11156116c85760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610861565b61180e565b6001600160a01b03821660009081526017602052604090205460ff16801561170e57506001600160a01b03831660009081526019602052604090205460ff16155b15611784576008548111156116c85760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610861565b6001600160a01b03821660009081526019602052604090205460ff1661180e57600a546001600160a01b0383166000908152602081905260409020546117ca908361246e565b111561180e5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610861565b306000908152602081905260408120549061182882611c53565b905080801561183e5750600b54610100900460ff165b801561184d575060165460ff16155b801561187257506001600160a01b03851660009081526017602052604090205460ff16155b801561189757506001600160a01b03851660009081526018602052604090205460ff16155b80156118bc57506001600160a01b03841660009081526018602052604090205460ff16155b156118e1576016805460ff191660011790556118d6611c88565b6016805460ff191690555b6016546001600160a01b03861660009081526018602052604090205460ff9182161591168061192857506001600160a01b03851660009081526018602052604090205460ff165b15611931575060005b60008115611ac057601554600010801561194c575043601554105b15611a94576001600160a01b03861660009081526017602052604090205460ff16801561197b57506000600f54115b15611a03576064600f548661199091906124bb565b61199a91906124d2565b9050600f54601054826119ad91906124bb565b6119b791906124d2565b601260008282546119c8919061246e565b9091555050600f546011546119dd90836124bb565b6119e791906124d2565b601360008282546119f8919061246e565b90915550611aa29050565b6001600160a01b03871660009081526017602052604090205460ff168015611a2d57506000600c54115b15611a8f576064600c5486611a4291906124bb565b611a4c91906124d2565b9050600c54600d5482611a5f91906124bb565b611a6991906124d2565b60126000828254611a7a919061246e565b9091555050600c54600e546119dd90836124bb565b611aa2565b611a9f878787611e32565b90505b8015611ab357611ab3873083611b28565b611abd81866124f4565b94505b611acb878787611b28565b50505050505050565b6001600160a01b038216600081815260176020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611b4e5760405162461bcd60e51b815260040161086190612507565b6001600160a01b038216611b745760405162461bcd60e51b81526004016108619061254c565b6001600160a01b03831660009081526020819052604090205481811015611bec5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610861565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b60006009548210158015611c68575060155443115b801561097a5750436000908152601a602052604090205460031192915050565b3060009081526020819052604081205490506000601354601254611cac919061246e565b90506000821580611cbb575081155b15611cc557505050565b600954611cd39060166124bb565b831115611ceb57600954611ce89060166124bb565b92505b600060028360125486611cfe91906124bb565b611d0891906124d2565b611d1291906124d2565b90506000611d2082866124f4565b905047611d2c82611f9d565b6000611d3882476124f4565b905060008660135483611d4b91906124bb565b611d5591906124d2565b90506000611d6382846124f4565b6000601281905560138190556007546040519293506001600160a01b031691849181818185875af1925050503d8060008114611dbb576040519150601f19603f3d011682016040523d82523d6000602084013e611dc0565b606091505b50909750508515801590611dd45750600081115b15611e2757611de3868261217e565b601254604080518781526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b505050505050505050565b6001600160a01b03831660009081526017602052604081205460ff1615611f06576064611e608360316124bb565b611e6a91906124d2565b9050600c54600d5482611e7d91906124bb565b611e8791906124d2565b60126000828254611e98919061246e565b9091555050600c54600e54611ead90836124bb565b611eb791906124d2565b60136000828254611ec8919061246e565b90915550506040516001600160a01b038416907fb90badc1cf1c52268f4fa9afb5276aebf640bcca3300cdfc9cf37db17daa13e290600090a2610b28565b6064601554600014611f19576046611f1c565b601e5b611f299060ff16846124bb565b611f3391906124d2565b9050600f5460105482611f4691906124bb565b611f5091906124d2565b60126000828254611f61919061246e565b9091555050600f54601154611f7690836124bb565b611f8091906124d2565b60136000828254611f91919061246e565b90915550509392505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611fd257611fd261258f565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612050573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207491906125a5565b816001815181106120875761208761258f565b60200260200101906001600160a01b031690816001600160a01b0316815250506120d2307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461131b565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac947906121279085906000908690309042906004016125c2565b600060405180830381600087803b15801561214157600080fd5b505af1158015612155573d6000803e3d6000fd5b5050436000908152601a6020526040812080549350915061217583612633565b91905055505050565b6121a9307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461131b565b60405163f305d71960e01b815230600482015260248101839052600060448201819052606482015261dead60848201524260a48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03169063f305d71990839060c40160606040518083038185885af1158015612233573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612258919061264c565b5050505050565b6000806040838503121561227257600080fd5b50508035926020909101359150565b600060208083528351808285015260005b818110156122ae57858101830151858201604001528201612292565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146122e457600080fd5b50565b600080604083850312156122fa57600080fd5b8235612305816122cf565b946020939093013593505050565b60006020828403121561232557600080fd5b5035919050565b60008060006060848603121561234157600080fd5b833561234c816122cf565b9250602084013561235c816122cf565b929592945050506040919091013590565b60006020828403121561237f57600080fd5b8135610b28816122cf565b8035801515811461120057600080fd5b600080604083850312156123ad57600080fd5b82356123b8816122cf565b91506123c66020840161238a565b90509250929050565b6000602082840312156123e157600080fd5b610b288261238a565b600080604083850312156123fd57600080fd5b8235612408816122cf565b91506020830135612418816122cf565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561097a5761097a612458565b600181811c9082168061249557607f821691505b6020821081036124b557634e487b7160e01b600052602260045260246000fd5b50919050565b808202811582820484141761097a5761097a612458565b6000826124ef57634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561097a5761097a612458565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156125b757600080fd5b8151610b28816122cf565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156126125784516001600160a01b0316835293830193918301916001016125ed565b50506001600160a01b03969096166060850152505050608001529392505050565b60006001820161264557612645612458565b5060010190565b60008060006060848603121561266157600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212203f00df03b772c638f6b947e3e454f44b5e17e1cef612d39d0c09ea9a4ca5d5fa64736f6c63430008120033
Deployed Bytecode Sourcemap
14796:13723:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20442:293;;;;;;;;;;-1:-1:-1;20442:293:0;;;;;:::i;:::-;;:::i;:::-;;5393:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7560:169;;;;;;;;;;-1:-1:-1;7560:169:0;;;;;:::i;:::-;;:::i;:::-;;;1441:14:1;;1434:22;1416:41;;1404:2;1389:18;7560:169:0;1276:187:1;14840:51:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1657:32:1;;;1639:51;;1627:2;1612:18;14840:51:0;1468:228:1;6513:108:0;;;;;;;;;;-1:-1:-1;6601:12:0;;6513:108;;;1847:25:1;;;1835:2;1820:18;6513:108:0;1701:177:1;15489:33:0;;;;;;;;;;;;;;;;19017:231;;;;;;;;;;-1:-1:-1;19017:231:0;;;;;:::i;:::-;;:::i;8211:410::-;;;;;;;;;;-1:-1:-1;8211:410:0;;;;;:::i;:::-;;:::i;14943:53::-;;;;;;;;;;;;14989:6;14943:53;;6355:93;;;;;;;;;;-1:-1:-1;6355:93:0;;6438:2;2879:36:1;;2867:2;2852:18;6355:93:0;2737:184:1;9030:238:0;;;;;;;;;;-1:-1:-1;9030:238:0;;;;;:::i;:::-;;:::i;14898:38::-;;;;;;;;;;;;;;;15187:33;;;;;;;;;;-1:-1:-1;15187:33:0;;;;;;;;21382:125;;;;;;;;;;-1:-1:-1;21382:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;21471:28:0;21447:4;21471:28;;;:19;:28;;;;;;;;;21382:125;20144:286;;;;;;;;;;-1:-1:-1;20144:286:0;;;;;:::i;:::-;;:::i;15378:28::-;;;;;;;;;;;;;;;;15227:30;;;;;;;;;;-1:-1:-1;15227:30:0;;;;;;;;;;;6684:127;;;;;;;;;;-1:-1:-1;6684:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;6785:18:0;6758:7;6785:18;;;;;;;;;;;;6684:127;14242:148;;;;;;;;;;;;;:::i;18430:120::-;;;;;;;;;;;;;:::i;19480:144::-;;;;;;;;;;-1:-1:-1;19480:144:0;;;;;:::i;:::-;;:::i;19833:109::-;;;;;;;;;;;;;:::i;13600:79::-;;;;;;;;;;-1:-1:-1;13665:6:0;;-1:-1:-1;;;;;13665:6:0;13600:79;;15035:24;;;;;;;;;;-1:-1:-1;15035:24:0;;;;-1:-1:-1;;;;;15035:24:0;;;19724:101;;;;;;;;;;-1:-1:-1;19724:101:0;;;;;:::i;:::-;;:::i;5612:104::-;;;;;;;;;;;;;:::i;20933:244::-;;;;;;;;;;-1:-1:-1;20933:244:0;;;;;:::i;:::-;;:::i;15341:24::-;;;;;;;;;;;;;;;;15529:27;;;;;;;;;;;;;;;;15451:25;;;;;;;;;;;;;;;;9771:434;;;;;;;;;;-1:-1:-1;9771:434:0;;;;;:::i;:::-;;:::i;7024:175::-;;;;;;;;;;-1:-1:-1;7024:175:0;;;;;:::i;:::-;;:::i;15843:58::-;;;;;;;;;;-1:-1:-1;15843:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;20743:182;;;;;;;;;;-1:-1:-1;20743:182:0;;;;;:::i;:::-;;:::i;19256:212::-;;;;;;;;;;-1:-1:-1;19256:212:0;;;;;:::i;:::-;;:::i;15072:35::-;;;;;;;;;;;;;;;;19950:182;;;;;;;;;;-1:-1:-1;19950:182:0;;;;;:::i;:::-;;:::i;18625:380::-;;;;;;;;;;-1:-1:-1;18625:380:0;;;;;:::i;:::-;;:::i;15005:23::-;;;;;;;;;;-1:-1:-1;15005:23:0;;;;-1:-1:-1;;;;;15005:23:0;;;15270:27;;;;;;;;;;;;;;;;7262:151;;;;;;;;;;-1:-1:-1;7262:151:0;;;;;:::i;:::-;;:::i;15114:33::-;;;;;;;;;;;;;;;;15304:30;;;;;;;;;;;;;;;;14545:244;;;;;;;;;;-1:-1:-1;14545:244:0;;;;;:::i;:::-;;:::i;15413:31::-;;;;;;;;;;;;;;;;15154:24;;;;;;;;;;;;;;;;20442:293;13812:6;;-1:-1:-1;;;;;13812:6:0;465:10;13812:22;13804:67;;;;-1:-1:-1;;;13804:67:0;;;;;;;:::i;:::-;;;;;;;;;20536:16:::1;:32:::0;;;20579:10:::1;:20:::0;;;20626:29:::1;20592:7:::0;20555:13;20626:29:::1;:::i;:::-;20610:13;:45:::0;;;20691:2:::1;-1:-1:-1::0;20674:19:0::1;20666:61;;;::::0;-1:-1:-1;;;20666:61:0;;5066:2:1;20666:61:0::1;::::0;::::1;5048:21:1::0;5105:2;5085:18;;;5078:30;5144:31;5124:18;;;5117:59;5193:18;;20666:61:0::1;4864:353:1::0;20666:61:0::1;20442:293:::0;;:::o;5393:100::-;5447:13;5480:5;5473:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5393:100;:::o;7560:169::-;7643:4;7660:39;465:10;7683:7;7692:6;7660:8;:39::i;:::-;-1:-1:-1;7717:4:0;7560:169;;;;;:::o;19017:231::-;13812:6;;-1:-1:-1;;;;;13812:6:0;465:10;13812:22;13804:67;;;;-1:-1:-1;;;13804:67:0;;;;;;;:::i;:::-;19135:4:::1;19130:3;19110:13;6601:12:::0;;;6513:108;19110:13:::1;:17;::::0;19126:1:::1;19110:17;:::i;:::-;:23;;;;:::i;:::-;19109:30;;;;:::i;:::-;19099:6;:40;;19091:98;;;::::0;-1:-1:-1;;;19091:98:0;;6204:2:1;19091:98:0::1;::::0;::::1;6186:21:1::0;6243:2;6223:18;;;6216:30;6282:34;6262:18;;;6255:62;-1:-1:-1;;;6333:18:1;;;6326:43;6386:19;;19091:98:0::1;6002:409:1::0;19091:98:0::1;19223:17;:6:::0;19233::::1;19223:17;:::i;:::-;19200:20;:40:::0;-1:-1:-1;19017:231:0:o;8211:410::-;-1:-1:-1;;;;;8377:19:0;;8352:4;8377:19;;;:11;:19;;;;;;;;8397:10;8377:31;;;;;;;;:41;-1:-1:-1;8377:41:0;8369:94;;;;-1:-1:-1;;;8369:94:0;;6618:2:1;8369:94:0;;;6600:21:1;6657:2;6637:18;;;6630:30;6696:34;6676:18;;;6669:62;-1:-1:-1;;;6747:18:1;;;6740:38;6795:19;;8369:94:0;6416:404:1;8369:94:0;8474:36;8484:6;8492:9;8503:6;8474:9;:36::i;:::-;-1:-1:-1;;;;;8550:19:0;;;;;;:11;:19;;;;;;;;8538:10;8550:31;;;;;;;;;8521:70;;8530:6;;8550:40;;8584:6;;8550:40;:::i;:::-;8521:8;:70::i;:::-;-1:-1:-1;8609:4:0;8211:410;;;;;;:::o;9030:238::-;9118:4;465:10;9174:64;465:10;9190:7;9227:10;9199:25;465:10;9190:7;9199:9;:25::i;:::-;:38;;;;:::i;20144:286::-;13812:6;;-1:-1:-1;;;;;13812:6:0;465:10;13812:22;13804:67;;;;-1:-1:-1;;;13804:67:0;;;;;;;:::i;:::-;20237:15:::1;:31:::0;;;20279:9:::1;:19:::0;;;20324:27:::1;20291:7:::0;20255:13;20324:27:::1;:::i;:::-;20309:12;:42:::0;;;20386:2:::1;-1:-1:-1::0;20370:18:0::1;20362:60;;;::::0;-1:-1:-1;;;20362:60:0;;7160:2:1;20362:60:0::1;::::0;::::1;7142:21:1::0;7199:2;7179:18;;;7172:30;7238:31;7218:18;;;7211:59;7287:18;;20362:60:0::1;6958:353:1::0;14242:148:0;13812:6;;-1:-1:-1;;;;;13812:6:0;465:10;13812:22;13804:67;;;;-1:-1:-1;;;13804:67:0;;;;;;;:::i;:::-;14333:6:::1;::::0;14312:40:::1;::::0;14349:1:::1;::::0;-1:-1:-1;;;;;14333:6:0::1;::::0;14312:40:::1;::::0;14349:1;;14312:40:::1;14363:6;:19:::0;;-1:-1:-1;;;;;;14363:19:0::1;::::0;;14242:148::o;18430:120::-;13812:6;;18482:4;;-1:-1:-1;;;;;13812:6:0;465:10;13812:22;13804:67;;;;-1:-1:-1;;;13804:67:0;;;;;;;:::i;:::-;-1:-1:-1;18498:14:0::1;:22:::0;;-1:-1:-1;;18498:22:0::1;::::0;;;18430:120;:::o;19480:144::-;13812:6;;-1:-1:-1;;;;;13812:6:0;465:10;13812:22;13804:67;;;;-1:-1:-1;;;13804:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19570:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;19570:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19480:144::o;19833:109::-;13812:6;;-1:-1:-1;;;;;13812:6:0;465:10;13812:22;13804:67;;;;-1:-1:-1;;;13804:67:0;;;;;;;:::i;:::-;19894:13:::1;::::0;::::1;;19893:14;19885:23;;;::::0;::::1;;19933:1;19919:11;:15:::0;19833:109::o;19724:101::-;13812:6;;-1:-1:-1;;;;;13812:6:0;465:10;13812:22;13804:67;;;;-1:-1:-1;;;13804:67:0;;;;;;;:::i;:::-;19794:13:::1;:23:::0;;-1:-1:-1;;19794:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19724:101::o;5612:104::-;5668:13;5701:7;5694:14;;;;;:::i;20933:244::-;13812:6;;-1:-1:-1;;;;;13812:6:0;465:10;13812:22;13804:67;;;;-1:-1:-1;;;13804:67:0;;;;;;;:::i;:::-;21040:13:::1;-1:-1:-1::0;;;;;21032:21:0::1;:4;-1:-1:-1::0;;;;;21032:21:0::1;::::0;21024:91:::1;;;::::0;-1:-1:-1;;;21024:91:0;;7518:2:1;21024:91:0::1;::::0;::::1;7500:21:1::0;7557:2;7537:18;;;7530:30;7596:34;7576:18;;;7569:62;7667:27;7647:18;;;7640:55;7712:19;;21024:91:0::1;7316:421:1::0;21024:91:0::1;21128:41;21157:4;21163:5;21128:28;:41::i;9771:434::-:0;9864:4;465:10;9864:4;9947:25;465:10;9964:7;9947:9;:25::i;:::-;9920:52;;10011:15;9991:16;:35;;9983:85;;;;-1:-1:-1;;;9983:85:0;;7944:2:1;9983:85:0;;;7926:21:1;7983:2;7963:18;;;7956:30;8022:34;8002:18;;;7995:62;-1:-1:-1;;;8073:18:1;;;8066:35;8118:19;;9983:85:0;7742:401:1;9983:85:0;10104:60;10113:5;10120:7;10148:15;10129:16;:34;10104:8;:60::i;:::-;-1:-1:-1;10193:4:0;;9771:434;-1:-1:-1;;;;9771:434:0:o;7024:175::-;7110:4;7127:42;465:10;7151:9;7162:6;7127:9;:42::i;20743:182::-;13812:6;;-1:-1:-1;;;;;13812:6:0;465:10;13812:22;13804:67;;;;-1:-1:-1;;;13804:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20828:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;20828:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;20883:34;;1416:41:1;;;20883:34:0::1;::::0;1389:18:1;20883:34:0::1;;;;;;;20743:182:::0;;:::o;19256:212::-;13812:6;;-1:-1:-1;;;;;13812:6:0;465:10;13812:22;13804:67;;;;-1:-1:-1;;;13804:67:0;;;;;;;:::i;:::-;19377:4:::1;19372:3;19352:13;6601:12:::0;;;6513:108;19352:13:::1;:17;::::0;19368:1:::1;19352:17;:::i;:::-;:23;;;;:::i;:::-;19351:30;;;;:::i;:::-;19341:6;:40;;19333:87;;;::::0;-1:-1:-1;;;19333:87:0;;8350:2:1;19333:87:0::1;::::0;::::1;8332:21:1::0;8389:2;8369:18;;;8362:30;8428:34;8408:18;;;8401:62;-1:-1:-1;;;8479:18:1;;;8472:32;8521:19;;19333:87:0::1;8148:398:1::0;19333:87:0::1;19443:17;:6:::0;19453::::1;19443:17;:::i;:::-;19431:9;:29:::0;-1:-1:-1;19256:212:0:o;19950:182::-;13812:6;;-1:-1:-1;;;;;13812:6:0;465:10;13812:22;13804:67;;;;-1:-1:-1;;;13804:67:0;;;;;;;:::i;:::-;20021:13:::1;::::0;::::1;;20020:14;:34:::0;::::1;;;-1:-1:-1::0;20038:11:0::1;::::0;:16;::::1;20020:34;20012:43;;;::::0;::::1;;20079:14;20092:1:::0;20079:12:::1;:14;:::i;:::-;20066:11;;:27;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;20104:13:0::1;:20:::0;;-1:-1:-1;;20104:20:0::1;20120:4;20104:20;::::0;;-1:-1:-1;19950:182:0:o;18625:380::-;13812:6;;18706:4;;-1:-1:-1;;;;;13812:6:0;465:10;13812:22;13804:67;;;;-1:-1:-1;;;13804:67:0;;;;;;;:::i;:::-;18762:6:::1;18742:13;6601:12:::0;;;6513:108;18742:13:::1;:17;::::0;18758:1:::1;18742:17;:::i;:::-;:26;;;;:::i;:::-;18729:9;:39;;18721:105;;;::::0;-1:-1:-1;;;18721:105:0;;8753:2:1;18721:105:0::1;::::0;::::1;8735:21:1::0;8792:2;8772:18;;;8765:30;8831:34;8811:18;;;8804:62;-1:-1:-1;;;8882:18:1;;;8875:51;8943:19;;18721:105:0::1;8551:417:1::0;18721:105:0::1;18877:3;18857:13;6601:12:::0;;;6513:108;18857:13:::1;:17;::::0;18873:1:::1;18857:17;:::i;:::-;:23;;;;:::i;:::-;18844:9;:36;;18836:101;;;::::0;-1:-1:-1;;;18836:101:0;;9175:2:1;18836:101:0::1;::::0;::::1;9157:21:1::0;9214:2;9194:18;;;9187:30;9253:34;9233:18;;;9226:62;-1:-1:-1;;;9304:18:1;;;9297:50;9364:19;;18836:101:0::1;8973:416:1::0;18836:101:0::1;-1:-1:-1::0;18947:18:0::1;:30:::0;;;18994:4:::1;13882:1;18625:380:::0;;;:::o;7262:151::-;-1:-1:-1;;;;;7378:18:0;;;7351:7;7378:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7262:151::o;14545:244::-;13812:6;;-1:-1:-1;;;;;13812:6:0;465:10;13812:22;13804:67;;;;-1:-1:-1;;;13804:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14634:22:0;::::1;14626:73;;;::::0;-1:-1:-1;;;14626:73:0;;9596:2:1;14626:73:0::1;::::0;::::1;9578:21:1::0;9635:2;9615:18;;;9608:30;9674:34;9654:18;;;9647:62;-1:-1:-1;;;9725:18:1;;;9718:36;9771:19;;14626:73:0::1;9394:402:1::0;14626:73:0::1;14736:6;::::0;14715:38:::1;::::0;-1:-1:-1;;;;;14715:38:0;;::::1;::::0;14736:6:::1;::::0;14715:38:::1;::::0;14736:6:::1;::::0;14715:38:::1;14764:6;:17:::0;;-1:-1:-1;;;;;;14764:17:0::1;-1:-1:-1::0;;;;;14764:17:0;;;::::1;::::0;;;::::1;::::0;;14545:244::o;12715:380::-;-1:-1:-1;;;;;12851:19:0;;12843:68;;;;-1:-1:-1;;;12843:68:0;;10003:2:1;12843:68:0;;;9985:21:1;10042:2;10022:18;;;10015:30;10081:34;10061:18;;;10054:62;-1:-1:-1;;;10132:18:1;;;10125:34;10176:19;;12843:68:0;9801:400:1;12843:68:0;-1:-1:-1;;;;;12930:21:0;;12922:68;;;;-1:-1:-1;;;12922:68:0;;10408:2:1;12922:68:0;;;10390:21:1;10447:2;10427:18;;;10420:30;10486:34;10466:18;;;10459:62;-1:-1:-1;;;10537:18:1;;;10530:32;10579:19;;12922:68:0;10206:398:1;12922:68:0;-1:-1:-1;;;;;13003:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;13055:32;;1847:25:1;;;13055:32:0;;1820:18:1;13055:32:0;;;;;;;12715:380;;;:::o;21569:3557::-;-1:-1:-1;;;;;21701:18:0;;21693:68;;;;-1:-1:-1;;;21693:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21780:16:0;;21772:64;;;;-1:-1:-1;;;21772:64:0;;;;;;;:::i;:::-;21861:6;21871:1;21861:11;21858:92;;21889:28;21905:4;21911:2;21915:1;21889:15;:28::i;:::-;21569:3557;;;:::o;21858:92::-;21973:14;;;;21970:1261;;;22033:8;;-1:-1:-1;;;;;22025:16:0;;;22033:8;;22025:16;;;;:51;;-1:-1:-1;22068:8:0;;-1:-1:-1;;;;;22062:14:0;;;22068:8;;22062:14;;22025:51;:89;;;;-1:-1:-1;;;;;;22098:16:0;;;;22025:89;:131;;;;-1:-1:-1;;;;;;22135:21:0;;22149:6;22135:21;;22025:131;:161;;;;-1:-1:-1;22178:8:0;;;;22177:9;22025:161;22003:1217;;;22224:13;;;;22220:148;;-1:-1:-1;;;;;22269:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;22298:23:0;;;;;;:19;:23;;;;;;;;22269:52;22261:87;;;;-1:-1:-1;;;22261:87:0;;11621:2:1;22261:87:0;;;11603:21:1;11660:2;11640:18;;;11633:30;-1:-1:-1;;;11679:18:1;;;11672:52;11741:18;;22261:87:0;11419:346:1;22261:87:0;-1:-1:-1;;;;;22431:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;22467:35:0;;;;;;:31;:35;;;;;;;;22466:36;22431:71;22427:778;;;22549:20;;22539:6;:30;;22531:96;;;;-1:-1:-1;;;22531:96:0;;11972:2:1;22531:96:0;;;11954:21:1;12011:2;11991:18;;;11984:30;12050:34;12030:18;;;12023:62;-1:-1:-1;;;12101:18:1;;;12094:51;12162:19;;22531:96:0;11770:417:1;22531:96:0;22688:9;;-1:-1:-1;;;;;6785:18:0;;6758:7;6785:18;;;;;;;;;;;22662:22;;:6;:22;:::i;:::-;:35;;22654:67;;;;-1:-1:-1;;;22654:67:0;;12394:2:1;22654:67:0;;;12376:21:1;12433:2;12413:18;;;12406:30;-1:-1:-1;;;12452:18:1;;;12445:49;12511:18;;22654:67:0;12192:343:1;22654:67:0;22427:778;;;-1:-1:-1;;;;;22815:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;22849:37:0;;;;;;:31;:37;;;;;;;;22848:38;22815:71;22811:394;;;22933:20;;22923:6;:30;;22915:97;;;;-1:-1:-1;;;22915:97:0;;12742:2:1;22915:97:0;;;12724:21:1;12781:2;12761:18;;;12754:30;12820:34;12800:18;;;12793:62;-1:-1:-1;;;12871:18:1;;;12864:52;12933:19;;22915:97:0;12540:418:1;22811:394:0;-1:-1:-1;;;;;23059:35:0;;;;;;:31;:35;;;;;;;;23055:150;;23152:9;;-1:-1:-1;;;;;6785:18:0;;6758:7;6785:18;;;;;;;;;;;23126:22;;:6;:22;:::i;:::-;:35;;23118:67;;;;-1:-1:-1;;;23118:67:0;;12394:2:1;23118:67:0;;;12376:21:1;12433:2;12413:18;;;12406:30;-1:-1:-1;;;12452:18:1;;;12445:49;12511:18;;23118:67:0;12192:343:1;23118:67:0;23294:4;23245:28;6785:18;;;;;;;;;;;;23326:31;6785:18;23326:9;:31::i;:::-;23311:46;;23388:7;:35;;;;-1:-1:-1;23412:11:0;;;;;;;23388:35;:61;;;;-1:-1:-1;23441:8:0;;;;23440:9;23388:61;:110;;;;-1:-1:-1;;;;;;23467:31:0;;;;;;:25;:31;;;;;;;;23466:32;23388:110;:153;;;;-1:-1:-1;;;;;;23516:25:0;;;;;;:19;:25;;;;;;;;23515:26;23388:153;:194;;;;-1:-1:-1;;;;;;23559:23:0;;;;;;:19;:23;;;;;;;;23558:24;23388:194;23370:338;;;23609:8;:15;;-1:-1:-1;;23609:15:0;23620:4;23609:15;;;23653:10;:8;:10::i;:::-;23680:8;:16;;-1:-1:-1;;23680:16:0;;;23370:338;23744:8;;-1:-1:-1;;;;;23853:25:0;;23728:12;23853:25;;;:19;:25;;;;;;23744:8;;;;23743:9;;23853:25;;:52;;-1:-1:-1;;;;;;23882:23:0;;;;;;:19;:23;;;;;;;;23853:52;23850:99;;;-1:-1:-1;23932:5:0;23850:99;23969:12;24073:7;24070:1003;;;24103:11;;24099:1;:15;:45;;;;;24132:12;24118:11;;:26;24099:45;24096:820;;;-1:-1:-1;;;;;24195:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;24244:1;24228:13;;:17;24195:50;24191:625;;;24301:3;24285:13;;24276:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;24269:35;;24375:13;;24356:16;;24349:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;24327:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;24447:13:0;;24434:10;;24427:17;;:4;:17;:::i;:::-;:33;;;;:::i;:::-;24411:12;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;24096:820:0;;-1:-1:-1;24096:820:0;24191:625;-1:-1:-1;;;;;24534:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;24584:1;24569:12;;:16;24534:51;24531:285;;;24641:3;24626:12;;24617:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;24610:34;;24714:12;;24696:15;;24689:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;24667:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;24784:12:0;;24772:9;;24765:16;;:4;:16;:::i;24531:285::-;24096:820;;;24875:25;24883:4;24889:2;24893:6;24875:7;:25::i;:::-;24868:32;;24096:820;24935:8;;24932:93;;24967:42;24983:4;24997;25004;24967:15;:42::i;:::-;25047:14;25057:4;25047:14;;:::i;:::-;;;24070:1003;25085:33;25101:4;25107:2;25111:6;25085:15;:33::i;:::-;21682:3444;;;;21569:3557;;;:::o;21185:188::-;-1:-1:-1;;;;;21268:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;21268:39:0;;;;;;;;;;21325:40;;21268:39;;:31;21325:40;;;21185:188;;:::o;10695:701::-;-1:-1:-1;;;;;10792:18:0;;10784:68;;;;-1:-1:-1;;;10784:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10871:16:0;;10863:64;;;;-1:-1:-1;;;10863:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10960:15:0;;10938:19;10960:15;;;;;;;;;;;10994:21;;;;10986:72;;;;-1:-1:-1;;;10986:72:0;;13165:2:1;10986:72:0;;;13147:21:1;13204:2;13184:18;;;13177:30;13243:34;13223:18;;;13216:62;-1:-1:-1;;;13294:18:1;;;13287:36;13340:19;;10986:72:0;12963:402:1;10986:72:0;-1:-1:-1;;;;;11094:15:0;;;:9;:15;;;;;;;;;;;11112:20;;;11094:38;;11312:13;;;;;;;;;;:23;;;;;;11362:26;;1847:25:1;;;11312:13:0;;11362:26;;1820:18:1;11362:26:0;;;;;;;10773:623;10695:701;;;:::o;25134:226::-;25205:4;25253:18;;25229:20;:42;;:86;;;;;25304:11;;25289:12;:26;25229:86;:123;;;;-1:-1:-1;25335:12:0;25319:29;;;;:15;:29;;;;;;25351:1;-1:-1:-1;25222:130:0;25134:226;-1:-1:-1;;25134:226:0:o;27155:1361::-;27238:4;27194:23;6785:18;;;;;;;;;;;27194:50;;27255:25;27304:12;;27283:18;;:33;;;;:::i;:::-;27255:61;-1:-1:-1;27327:12:0;27363:20;;;:46;;-1:-1:-1;27387:22:0;;27363:46;27360:60;;;27412:7;;;27155:1361::o;27360:60::-;27453:18;;:23;;27474:2;27453:23;:::i;:::-;27435:15;:41;27432:111;;;27508:18;;:23;;27529:2;27508:23;:::i;:::-;27490:41;;27432:111;27612:23;27697:1;27677:17;27656:18;;27638:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;27612:86;-1:-1:-1;27709:26:0;27738:33;27612:86;27738:15;:33;:::i;:::-;27709:62;-1:-1:-1;27820:21:0;27854:36;27709:62;27854:16;:36::i;:::-;27912:18;27933:41;27957:17;27933:21;:41;:::i;:::-;27912:62;;27995:17;28043;28028:12;;28015:10;:25;;;;:::i;:::-;:45;;;;:::i;:::-;27995:65;-1:-1:-1;28081:23:0;28107:22;27995:65;28107:10;:22;:::i;:::-;28171:1;28150:18;:22;;;28183:12;:16;;;28241:9;;28233:45;;28081:48;;-1:-1:-1;;;;;;28241:9:0;;28264;;28233:45;28171:1;28233:45;28264:9;28241;28233:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28220:58:0;;-1:-1:-1;;28302:19:0;;;;;:42;;;28343:1;28325:15;:19;28302:42;28299:210;;;28360:46;28373:15;28390;28360:12;:46::i;:::-;28478:18;;28426:71;;;13782:25:1;;;13838:2;13823:18;;13816:34;;;13866:18;;;13859:34;;;;28426:71:0;;;;;;13770:2:1;28426:71:0;;;28299:210;27183:1333;;;;;;;;;27155:1361::o;26539:608::-;-1:-1:-1;;;;;26643:31:0;;26615:12;26643:31;;;:25;:31;;;;;;;;26640:500;;;26711:3;26697:11;:6;26706:2;26697:11;:::i;:::-;:17;;;;:::i;:::-;26690:24;;26776:12;;26758:15;;26751:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;26729:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;26838:12:0;;26826:9;;26819:16;;:4;:16;:::i;:::-;:31;;;;:::i;:::-;26803:12;;:47;;;;;;;:::i;:::-;;;;-1:-1:-1;;26870:15:0;;-1:-1:-1;;;;;26870:15:0;;;;;;;;26640:500;;;26982:3;26952:11;;26967:1;26952:16;:26;;26976:2;26952:26;;;26971:2;26952:26;26942:37;;;;:6;:37;:::i;:::-;:43;;;;:::i;:::-;26935:50;;27051:13;;27032:16;;27025:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;27003:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;27115:13:0;;27102:10;;27095:17;;:4;:17;:::i;:::-;:33;;;;:::i;:::-;27079:12;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;26539:608:0;;;;;:::o;25368:633::-;25520:16;;;25534:1;25520:16;;;;;;;;25496:21;;25520:16;;;;;;;;;;-1:-1:-1;25520:16:0;25496:40;;25565:4;25547;25552:1;25547:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;25547:23:0;;;-1:-1:-1;;;;;25547:23:0;;;;;25591:15;-1:-1:-1;;;;;25591:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25581:4;25586:1;25581:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;25581:32:0;;;-1:-1:-1;;;;;25581:32:0;;;;;25626:62;25643:4;25658:15;25676:11;25626:8;:62::i;:::-;25727:224;;-1:-1:-1;;;25727:224:0;;-1:-1:-1;;;;;25727:15:0;:66;;;;:224;;25808:11;;25834:1;;25878:4;;25905;;25925:15;;25727:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;25978:12:0;25962:29;;;;:15;:29;;;;;:31;;;-1:-1:-1;25962:29:0;-1:-1:-1;25962:31:0;;;:::i;:::-;;;;;;25423:578;25368:633;:::o;26013:517::-;26161:62;26178:4;26193:15;26211:11;26161:8;:62::i;:::-;26266:256;;-1:-1:-1;;;26266:256:0;;26338:4;26266:256;;;15890:34:1;15940:18;;;15933:34;;;26384:1:0;15983:18:1;;;15976:34;;;16026:18;;;16019:34;14989:6:0;16069:19:1;;;16062:44;26496:15:0;16122:19:1;;;16115:35;26266:15:0;-1:-1:-1;;;;;26266:31:0;;;;26305:9;;15824:19:1;;26266:256:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;26013:517;;:::o;14:248:1:-;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:1;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:1:o;267:548::-;379:4;408:2;437;426:9;419:21;469:6;463:13;512:6;507:2;496:9;492:18;485:34;537:1;547:140;561:6;558:1;555:13;547:140;;;656:14;;;652:23;;646:30;622:17;;;641:2;618:26;611:66;576:10;;547:140;;;551:3;736:1;731:2;722:6;711:9;707:22;703:31;696:42;806:2;799;795:7;790:2;782:6;778:15;774:29;763:9;759:45;755:54;747:62;;;;267:548;;;;:::o;820:131::-;-1:-1:-1;;;;;895:31:1;;885:42;;875:70;;941:1;938;931:12;875:70;820:131;:::o;956:315::-;1024:6;1032;1085:2;1073:9;1064:7;1060:23;1056:32;1053:52;;;1101:1;1098;1091:12;1053:52;1140:9;1127:23;1159:31;1184:5;1159:31;:::i;:::-;1209:5;1261:2;1246:18;;;;1233:32;;-1:-1:-1;;;956:315:1:o;1883:180::-;1942:6;1995:2;1983:9;1974:7;1970:23;1966:32;1963:52;;;2011:1;2008;2001:12;1963:52;-1:-1:-1;2034:23:1;;1883:180;-1:-1:-1;1883:180:1:o;2068:456::-;2145:6;2153;2161;2214:2;2202:9;2193:7;2189:23;2185:32;2182:52;;;2230:1;2227;2220:12;2182:52;2269:9;2256:23;2288:31;2313:5;2288:31;:::i;:::-;2338:5;-1:-1:-1;2395:2:1;2380:18;;2367:32;2408:33;2367:32;2408:33;:::i;:::-;2068:456;;2460:7;;-1:-1:-1;;;2514:2:1;2499:18;;;;2486:32;;2068:456::o;2926:247::-;2985:6;3038:2;3026:9;3017:7;3013:23;3009:32;3006:52;;;3054:1;3051;3044:12;3006:52;3093:9;3080:23;3112:31;3137:5;3112:31;:::i;3178:160::-;3243:20;;3299:13;;3292:21;3282:32;;3272:60;;3328:1;3325;3318:12;3343:315;3408:6;3416;3469:2;3457:9;3448:7;3444:23;3440:32;3437:52;;;3485:1;3482;3475:12;3437:52;3524:9;3511:23;3543:31;3568:5;3543:31;:::i;:::-;3593:5;-1:-1:-1;3617:35:1;3648:2;3633:18;;3617:35;:::i;:::-;3607:45;;3343:315;;;;;:::o;3663:180::-;3719:6;3772:2;3760:9;3751:7;3747:23;3743:32;3740:52;;;3788:1;3785;3778:12;3740:52;3811:26;3827:9;3811:26;:::i;3848:388::-;3916:6;3924;3977:2;3965:9;3956:7;3952:23;3948:32;3945:52;;;3993:1;3990;3983:12;3945:52;4032:9;4019:23;4051:31;4076:5;4051:31;:::i;:::-;4101:5;-1:-1:-1;4158:2:1;4143:18;;4130:32;4171:33;4130:32;4171:33;:::i;:::-;4223:7;4213:17;;;3848:388;;;;;:::o;4241:356::-;4443:2;4425:21;;;4462:18;;;4455:30;4521:34;4516:2;4501:18;;4494:62;4588:2;4573:18;;4241:356::o;4602:127::-;4663:10;4658:3;4654:20;4651:1;4644:31;4694:4;4691:1;4684:15;4718:4;4715:1;4708:15;4734:125;4799:9;;;4820:10;;;4817:36;;;4833:18;;:::i;5222:380::-;5301:1;5297:12;;;;5344;;;5365:61;;5419:4;5411:6;5407:17;5397:27;;5365:61;5472:2;5464:6;5461:14;5441:18;5438:38;5435:161;;5518:10;5513:3;5509:20;5506:1;5499:31;5553:4;5550:1;5543:15;5581:4;5578:1;5571:15;5435:161;;5222:380;;;:::o;5607:168::-;5680:9;;;5711;;5728:15;;;5722:22;;5708:37;5698:71;;5749:18;;:::i;5780:217::-;5820:1;5846;5836:132;;5890:10;5885:3;5881:20;5878:1;5871:31;5925:4;5922:1;5915:15;5953:4;5950:1;5943:15;5836:132;-1:-1:-1;5982:9:1;;5780:217::o;6825:128::-;6892:9;;;6913:11;;;6910:37;;;6927:18;;:::i;10609:401::-;10811:2;10793:21;;;10850:2;10830:18;;;10823:30;10889:34;10884:2;10869:18;;10862:62;-1:-1:-1;;;10955:2:1;10940:18;;10933:35;11000:3;10985:19;;10609:401::o;11015:399::-;11217:2;11199:21;;;11256:2;11236:18;;;11229:30;11295:34;11290:2;11275:18;;11268:62;-1:-1:-1;;;11361:2:1;11346:18;;11339:33;11404:3;11389:19;;11015:399::o;14036:127::-;14097:10;14092:3;14088:20;14085:1;14078:31;14128:4;14125:1;14118:15;14152:4;14149:1;14142:15;14168:251;14238:6;14291:2;14279:9;14270:7;14266:23;14262:32;14259:52;;;14307:1;14304;14297:12;14259:52;14339:9;14333:16;14358:31;14383:5;14358:31;:::i;14424:980::-;14686:4;14734:3;14723:9;14719:19;14765:6;14754:9;14747:25;14791:2;14829:6;14824:2;14813:9;14809:18;14802:34;14872:3;14867:2;14856:9;14852:18;14845:31;14896:6;14931;14925:13;14962:6;14954;14947:22;15000:3;14989:9;14985:19;14978:26;;15039:2;15031:6;15027:15;15013:29;;15060:1;15070:195;15084:6;15081:1;15078:13;15070:195;;;15149:13;;-1:-1:-1;;;;;15145:39:1;15133:52;;15240:15;;;;15205:12;;;;15181:1;15099:9;15070:195;;;-1:-1:-1;;;;;;;15321:32:1;;;;15316:2;15301:18;;15294:60;-1:-1:-1;;;15385:3:1;15370:19;15363:35;15282:3;14424:980;-1:-1:-1;;;14424:980:1:o;15409:135::-;15448:3;15469:17;;;15466:43;;15489:18;;:::i;:::-;-1:-1:-1;15536:1:1;15525:13;;15409:135::o;16161:306::-;16249:6;16257;16265;16318:2;16306:9;16297:7;16293:23;16289:32;16286:52;;;16334:1;16331;16324:12;16286:52;16363:9;16357:16;16347:26;;16413:2;16402:9;16398:18;16392:25;16382:35;;16457:2;16446:9;16442:18;16436:25;16426:35;;16161:306;;;;;:::o
Swarm Source
ipfs://3f00df03b772c638f6b947e3e454f44b5e17e1cef612d39d0c09ea9a4ca5d5fa
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.