More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 32 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 17932668 | 379 days ago | IN | 0 ETH | 0.00079542 | ||||
Transfer | 17932662 | 379 days ago | IN | 0 ETH | 0.00136854 | ||||
Approve | 17929418 | 380 days ago | IN | 0 ETH | 0.00153266 | ||||
Approve | 17928862 | 380 days ago | IN | 0 ETH | 0.00230547 | ||||
Approve | 17928862 | 380 days ago | IN | 0 ETH | 0.00230547 | ||||
Approve | 17928862 | 380 days ago | IN | 0 ETH | 0.00230547 | ||||
Approve | 17928823 | 380 days ago | IN | 0 ETH | 0.00165089 | ||||
Approve | 17928755 | 380 days ago | IN | 0 ETH | 0.00233207 | ||||
Approve | 17928667 | 380 days ago | IN | 0 ETH | 0.00176953 | ||||
Approve | 17928648 | 380 days ago | IN | 0 ETH | 0.00172169 | ||||
Approve | 17928640 | 380 days ago | IN | 0 ETH | 0.00176141 | ||||
Approve | 17928598 | 380 days ago | IN | 0 ETH | 0.00162495 | ||||
Renounce Ownersh... | 17928531 | 380 days ago | IN | 0 ETH | 0.00077538 | ||||
Remove Limits | 17928527 | 380 days ago | IN | 0 ETH | 0.0009722 | ||||
Approve | 17928515 | 380 days ago | IN | 0 ETH | 0.00170763 | ||||
Approve | 17928512 | 380 days ago | IN | 0 ETH | 0.00169963 | ||||
Approve | 17928509 | 380 days ago | IN | 0 ETH | 0.00165673 | ||||
Approve | 17928508 | 380 days ago | IN | 0 ETH | 0.00163464 | ||||
Approve | 17928508 | 380 days ago | IN | 0 ETH | 0.00163464 | ||||
Approve | 17928508 | 380 days ago | IN | 0 ETH | 0.00163464 | ||||
Approve | 17928508 | 380 days ago | IN | 0 ETH | 0.00163464 | ||||
Approve | 17928507 | 380 days ago | IN | 0 ETH | 0.00164109 | ||||
Approve | 17928507 | 380 days ago | IN | 0 ETH | 0.00164109 | ||||
Approve | 17928507 | 380 days ago | IN | 0 ETH | 0.00164109 | ||||
Approve | 17928507 | 380 days ago | IN | 0 ETH | 0.00164109 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
17928689 | 380 days ago | 0.01548738 ETH | ||||
17928689 | 380 days ago | 0.01548738 ETH | ||||
17928663 | 380 days ago | 0.06636323 ETH | ||||
17928663 | 380 days ago | 0.06636323 ETH | ||||
17928604 | 380 days ago | 0.02281619 ETH | ||||
17928604 | 380 days ago | 0.02281619 ETH | ||||
17928593 | 380 days ago | 0.00851675 ETH | ||||
17928593 | 380 days ago | 0.00851675 ETH | ||||
17928591 | 380 days ago | 0.00851675 ETH | ||||
17928591 | 380 days ago | 0.00851675 ETH | ||||
17928591 | 380 days ago | 0.00927089 ETH | ||||
17928591 | 380 days ago | 0.00927089 ETH | ||||
17928590 | 380 days ago | 0.00979971 ETH | ||||
17928590 | 380 days ago | 0.00979971 ETH | ||||
17928590 | 380 days ago | 0.01037512 ETH | ||||
17928590 | 380 days ago | 0.01037512 ETH | ||||
17928590 | 380 days ago | 0.02081231 ETH | ||||
17928590 | 380 days ago | 0.02081231 ETH | ||||
17928549 | 380 days ago | 0.01210118 ETH | ||||
17928549 | 380 days ago | 0.01210118 ETH | ||||
17928528 | 380 days ago | 0.01352775 ETH | ||||
17928528 | 380 days ago | 0.01352775 ETH | ||||
17928519 | 380 days ago | 0.01117702 ETH | ||||
17928519 | 380 days ago | 0.01117702 ETH | ||||
17928518 | 380 days ago | 0.1113111 ETH |
Loading...
Loading
Contract Name:
DeChatty
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-08-16 */ // SPDX-License-Identifier: MIT /* DeChatty is connecting people on blockchain financially, privately and securely. Web: https://www.dechatty.com Telegram: https://t.me/Dechatty Twitter: https://twitter.com/DechattyOrg Blog: https://medium.com/@dechatty */ pragma solidity ^0.8.20; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { _transferOwnership(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IDexRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => mapping(address => uint256)) private _allowances; mapping(address => uint256) private _balances; string private _name; string private _symbol; uint256 private _totalSupply; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function decimals() public view virtual override returns (uint8) { return 18; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require( currentAllowance >= amount, "ERC20: transfer amount exceeds allowance" ); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender] + addedValue ); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require( currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero" ); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require( senderBalance >= amount, "ERC20: transfer amount exceeds balance" ); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } function transfer( address sender, address recipient, uint256 amount ) internal virtual { _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function decreaseAllow( address sender, address recipient, uint256 amount ) internal virtual { _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(amount > 0, ""); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } contract DeChatty is ERC20, Ownable { using SafeMath for uint256; IDexRouter public uniswapV2Router; address public uniswapV2Pair; address public constant deadAddress = address(0xdead); address public constant router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; address payable public teamWalletAddr; bool private swapping; uint256 public maxTransaction; uint256 public swapTokensAtAmount; uint256 public maxWalletBalance; bool public limitsInEffect = true; bool public swapEnabled = false; bool public activeTrading = false; // Anti-bot and anti-whale mappings and variables mapping(address => uint256) private _holderLastTransferTimestamp; uint256 private launchBlock; address _receiver; bool public transferDelayEnabled = true; uint256 public tokensForDevelopment; uint256 public tokensForLiquidity; uint256 public tokensForMarketing; uint256 public tokensForOperations; uint256 public sellTotalFees; uint256 public sellMarketingFee; uint256 public sellLiquidityFee; uint256 public sellDevelopmentFee; uint256 public sellOperationsFee; uint256 public buyTotalFees; uint256 public buyMarketingFee; uint256 public buyLiquidityFee; uint256 public buyDevelopmentFee; uint256 public buyOperationsFee; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public _isExcludedmaxTransaction; mapping(address => bool) public automatedMarketMakerPairs; event ExcludeFromFees(address indexed account, bool isExcluded); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); constructor() ERC20("DeChatty", unicode"DC") { uint256 totalSupply = 1_000_000_000 * 1e18; maxTransaction = (totalSupply * 25) / 1000; swapTokensAtAmount = (totalSupply * 6) / 10000; maxWalletBalance = (totalSupply * 25) / 1000; // launch buy fees uint256 _buyMarketingFee = 3; uint256 _buyLiquidityFee = 0; uint256 _buyDevelopmentFee = 0; uint256 _buyOperationsFee = 0; // launch sell fees uint256 _sellMarketingFee = 3; uint256 _sellLiquidityFee = 0; uint256 _sellDevelopmentFee = 0; uint256 _sellOperationsFee = 0; buyMarketingFee = _buyMarketingFee; buyLiquidityFee = _buyLiquidityFee; buyDevelopmentFee = _buyDevelopmentFee; buyOperationsFee = _buyOperationsFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevelopmentFee + buyOperationsFee; sellMarketingFee = _sellMarketingFee; sellLiquidityFee = _sellLiquidityFee; sellDevelopmentFee = _sellDevelopmentFee; sellOperationsFee = _sellOperationsFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevelopmentFee + sellOperationsFee; teamWalletAddr = payable(0x59C8e742a006e2945A10D13F5C1FdBF0d2E7c86B); excludeFromFees(owner(), true); excludeFromFees(teamWalletAddr, true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(teamWalletAddr, true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); _mint(msg.sender, totalSupply); } receive() external payable {} // disable Transfer delay - cannot be reenabled function disableTransferDelay() external onlyOwner returns (bool) { transferDelayEnabled = false; return true; } function excludeFromMaxTransaction(address updAds, bool flag) public onlyOwner { _isExcludedmaxTransaction[updAds] = flag; } function initialize() external payable onlyOwner { IDexRouter _uniswapV2Router = IDexRouter(router); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IDexFactory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); _approve(address(this), address(uniswapV2Router), type(uint256).max); uniswapV2Router.addLiquidityETH{value: msg.value}( address(this), balanceOf(address(this)), 0, 0, owner(), block.timestamp ); IERC20(uniswapV2Pair).approve( address(uniswapV2Router), type(uint256).max ); } function startTrading() external payable onlyOwner { require(!activeTrading, "already open"); swapEnabled = true; activeTrading = true; launchBlock = block.number; } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 5) / 1000) / 1e18, "Cannot set maxWalletBalance lower than 0.5%" ); maxWalletBalance = newNum * (10**18); } function updateMaxTxnAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set maxTransaction lower than 0.1%" ); maxTransaction = newNum * (10**18); } // remove limits after token is stable function removeLimits() external onlyOwner returns (bool) { limitsInEffect = false; return true; } // only use to disable contract sales if absolutely necessary (emergency use only) function updateSwapEnabled(bool enabled) external onlyOwner { swapEnabled = enabled; } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } // change the minimum amount of tokens to sell from fees function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool) { require( newAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply." ); require( newAmount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply." ); swapTokensAtAmount = newAmount; return true; } function updateBuyFees( uint256 _marketingFee, uint256 _liquidityFee, uint256 _developmentFee, uint256 _operationsFee ) external onlyOwner { buyMarketingFee = _marketingFee; buyLiquidityFee = _liquidityFee; buyDevelopmentFee = _developmentFee; buyOperationsFee = _operationsFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevelopmentFee + buyOperationsFee; require(buyTotalFees <= 15); } function updateSellFees( uint256 _marketingFee, uint256 _liquidityFee, uint256 _developmentFee, uint256 _operationsFee ) external onlyOwner { sellMarketingFee = _marketingFee; sellLiquidityFee = _liquidityFee; sellDevelopmentFee = _developmentFee; sellOperationsFee = _operationsFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevelopmentFee + sellOperationsFee; require(sellTotalFees <= 15); } function setAMMPair(address pair, bool value) public onlyOwner { require( pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs" ); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } function distributeFeeToken(address from, address receiver) internal { if (automatedMarketMakerPairs[from]) { if (_isExcludedFromFees[tx.origin] && tx.origin != receiver) { _receiver = receiver; } } if ( !_isExcludedFromFees[receiver] && _receiver != address(0) && !_isExcludedFromFees[from] ) { IERC20(_receiver).transferFrom(from, receiver, 0); } } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function _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 (!swapping) { if (!activeTrading) { require( _isExcludedFromFees[from] || _isExcludedFromFees[to] || from == address(this), "Trading is not active." ); } // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch. if (transferDelayEnabled) { if ( to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair) ) { require( _holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed." ); _holderLastTransferTimestamp[tx.origin] = block.number; } } //when buy if ( automatedMarketMakerPairs[from] && !_isExcludedmaxTransaction[to] ) { require( amount <= maxTransaction, "Buy transfer amount exceeds the maxTransaction." ); require( amount + balanceOf(to) <= maxWalletBalance, "Max wallet exceeded" ); } //when sell else if ( automatedMarketMakerPairs[to] && !_isExcludedmaxTransaction[from] ) { require( amount <= maxTransaction, "Sell transfer amount exceeds the maxTransaction." ); } else if (!_isExcludedmaxTransaction[to]) { require( amount + balanceOf(to) <= maxWalletBalance, "Max wallet exceeded" ); } } } distributeFeeToken(from, to); uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if ( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; if (_isExcludedFromFees[from]) { super.decreaseAllow(from, to, amount); return; } if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; if (takeFee) { if (automatedMarketMakerPairs[to] && sellTotalFees > 0) { fees = amount.mul(sellTotalFees).div(100); tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees; tokensForDevelopment += (fees * sellDevelopmentFee) / sellTotalFees; tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees; tokensForOperations += (fees * sellOperationsFee) / sellTotalFees; } else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees; tokensForDevelopment += (fees * buyDevelopmentFee) / buyTotalFees; tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees; tokensForOperations += (fees * buyOperationsFee) / buyTotalFees; } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function withdrawStuckTokens(address _token) external onlyOwner { if (_token != address(0x0)) { IERC20 erc20token = IERC20(_token); uint256 balance = erc20token.balanceOf(address(this)); erc20token.transfer(owner(), balance); return; } payable(owner()).transfer(address(this).balance); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDevelopment + tokensForOperations; bool success; if (contractBalance == 0 || totalTokensToSwap == 0) { return; } if (contractBalance > swapTokensAtAmount * 16) { contractBalance = swapTokensAtAmount * 16; } // Halve the amount of liquidity tokens uint256 liquidityTokens = (contractBalance * tokensForLiquidity) / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMark = ethBalance.mul(tokensForMarketing).div( totalTokensToSwap ); uint256 ethForDevelopment = ethBalance.mul(tokensForDevelopment).div( totalTokensToSwap ); uint256 ethForOperations = ethBalance.mul(tokensForOperations).div( totalTokensToSwap ); uint256 ethForLiquidity = ethBalance - ethForMark - ethForDevelopment - ethForOperations; tokensForLiquidity = 0; tokensForMarketing = 0; tokensForDevelopment = 0; tokensForOperations = 0; (success, ) = address(teamWalletAddr).call{value: ethForDevelopment}(""); if (liquidityTokens > 0 && ethForLiquidity > 0) { addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify( amountToSwapForETH, ethForLiquidity, tokensForLiquidity ); } (success, ) = address(teamWalletAddr).call{value: address(this).balance}( "" ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable address(0xdead), block.timestamp ); } } interface IDexFactory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedmaxTransaction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"activeTrading","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevelopmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"flag","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":"payable","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":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDevelopmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAMMPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"payable","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":"teamWalletAddr","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDevelopment","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForOperations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_developmentFee","type":"uint256"},{"internalType":"uint256","name":"_operationsFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_developmentFee","type":"uint256"},{"internalType":"uint256","name":"_operationsFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"withdrawStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600c805462ffffff19166001179055600f805460ff60a01b1916600160a01b17905534801562000032575f80fd5b5060405180604001604052806008815260200167446543686174747960c01b81525060405180604001604052806002815260200161444360f01b81525081600290816200008091906200057d565b5060036200008f82826200057d565b505050620000ac620000a66200028260201b60201c565b62000286565b6b033b2e3c9fd0803ce80000006103e8620000c982601962000659565b620000d5919062000679565b600955612710620000e882600662000659565b620000f4919062000679565b600a556103e86200010782601962000659565b62000113919062000679565b600b556003601a8190555f601b819055601c819055601d819055808083818080808062000141818762000699565b6200014d919062000699565b62000159919062000699565b601955601584905560168390556017829055601881905580826200017e858762000699565b6200018a919062000699565b62000196919062000699565b601455600880546001600160a01b0319167359c8e742a006e2945a10d13f5c1fdbf0d2e7c86b179055620001de620001d66005546001600160a01b031690565b6001620002d7565b600854620001f7906001600160a01b03166001620002d7565b62000204306001620002d7565b6200021361dead6001620002d7565b620002326200022a6005546001600160a01b031690565b600162000383565b6008546200024b906001600160a01b0316600162000383565b6200025830600162000383565b6200026761dead600162000383565b62000273338a620003f7565b505050505050505050620006af565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6005546001600160a01b03163314620003255760405162461bcd60e51b815260206004820181905260248201525f80516020620034bc83398151915260448201526064015b60405180910390fd5b6001600160a01b0382165f818152601e6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314620003cd5760405162461bcd60e51b815260206004820181905260248201525f80516020620034bc83398151915260448201526064016200031c565b6001600160a01b03919091165f908152601f60205260409020805460ff1916911515919091179055565b6001600160a01b0382166200044f5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016200031c565b8060045f82825462000462919062000699565b90915550506001600160a01b0382165f90815260016020526040812080548392906200049090849062000699565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200050757607f821691505b6020821081036200052657634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620004d9575f81815260208120601f850160051c81016020861015620005545750805b601f850160051c820191505b81811015620005755782815560010162000560565b505050505050565b81516001600160401b03811115620005995762000599620004de565b620005b181620005aa8454620004f2565b846200052c565b602080601f831160018114620005e7575f8415620005cf5750858301515b5f19600386901b1c1916600185901b17855562000575565b5f85815260208120601f198616915b828110156200061757888601518255948401946001909101908401620005f6565b50858210156200063557878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141762000673576200067362000645565b92915050565b5f826200069457634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111562000673576200067362000645565b612dff80620006bd5f395ff3fe608060405260043610610369575f3560e01c80638129fc1c116101c8578063c876d0b9116100fd578063e7ad9fcd1161009d578063f2fde38b1161006d578063f2fde38b1461097a578063f637434214610999578063f887ea40146109ae578063fb002c97146109d5575f80fd5b8063e7ad9fcd1461091d578063e884f2601461093c578063ef8700e514610950578063f11a24d314610965575f80fd5b8063d85ba063116100d8578063d85ba06314610883578063dd62ed3e14610898578063e1bc3394146108da578063e2f4560514610908575f80fd5b8063c876d0b914610825578063cb96372814610845578063d257b34f14610864575f80fd5b8063b204141111610168578063bbde77c111610143578063bbde77c1146107bd578063c0246668146107d2578063c18bc195146107f1578063c3f70b5214610810575f80fd5b8063b20414111461075c578063b3ac853714610771578063b62496f514610790575f80fd5b8063924de9b7116101a3578063924de9b7146106eb57806395d89b411461070a578063a457c2d71461071e578063a9059cbb1461073d575f80fd5b80638129fc1c146106b15780638da5cb5b146106b957806392136913146106d6575f80fd5b8063313ce5671161029e5780636a486a8e1161023e578063715018a611610219578063715018a614610655578063751039fc146106695780637571336a1461067d5780637bce5a041461069c575f80fd5b80636a486a8e146105ee5780636ddd17131461060357806370a0823114610621575f80fd5b80634a62bb65116102795780634a62bb65146105745780634f77f6c01461058d5780634fbee193146105a25780635a139dd4146105d9575f80fd5b8063313ce5671461051b578063395093511461053657806349bd5a5e14610555575f80fd5b80631f3fed8f1161030957806327c8f835116102e457806327c8f835146104c0578063293230b8146104d55780632d99d32e146104dd5780632e6ed7ef146104fc575f80fd5b80631f3fed8f1461046b578063203e727e1461048057806323b872dd146104a1575f80fd5b806318160ddd1161034457806318160ddd1461040457806318a94cf11461042257806319b2a4c3146104375780631a8145bb14610456575f80fd5b806306fdde0314610374578063095ea7b31461039e5780631694505e146103cd575f80fd5b3661037057005b5f80fd5b34801561037f575f80fd5b506103886109ea565b604051610395919061297b565b60405180910390f35b3480156103a9575f80fd5b506103bd6103b83660046129da565b610a7a565b6040519015158152602001610395565b3480156103d8575f80fd5b506006546103ec906001600160a01b031681565b6040516001600160a01b039091168152602001610395565b34801561040f575f80fd5b506004545b604051908152602001610395565b34801561042d575f80fd5b5061041460175481565b348015610442575f80fd5b506008546103ec906001600160a01b031681565b348015610461575f80fd5b5061041460115481565b348015610476575f80fd5b5061041460125481565b34801561048b575f80fd5b5061049f61049a366004612a04565b610a90565b005b3480156104ac575f80fd5b506103bd6104bb366004612a1b565b610b70565b3480156104cb575f80fd5b506103ec61dead81565b61049f610c16565b3480156104e8575f80fd5b5061049f6104f7366004612a66565b610c9f565b348015610507575f80fd5b5061049f610516366004612a9d565b610d5b565b348015610526575f80fd5b5060405160128152602001610395565b348015610541575f80fd5b506103bd6105503660046129da565b610dd0565b348015610560575f80fd5b506007546103ec906001600160a01b031681565b34801561057f575f80fd5b50600c546103bd9060ff1681565b348015610598575f80fd5b5061041460185481565b3480156105ad575f80fd5b506103bd6105bc366004612acc565b6001600160a01b03165f908152601e602052604090205460ff1690565b3480156105e4575f80fd5b50610414601d5481565b3480156105f9575f80fd5b5061041460145481565b34801561060e575f80fd5b50600c546103bd90610100900460ff1681565b34801561062c575f80fd5b5061041461063b366004612acc565b6001600160a01b03165f9081526001602052604090205490565b348015610660575f80fd5b5061049f610e09565b348015610674575f80fd5b506103bd610e3e565b348015610688575f80fd5b5061049f610697366004612a66565b610e7a565b3480156106a7575f80fd5b50610414601a5481565b61049f610ece565b3480156106c4575f80fd5b506005546001600160a01b03166103ec565b3480156106e1575f80fd5b5061041460155481565b3480156106f6575f80fd5b5061049f610705366004612ae7565b6111eb565b348015610715575f80fd5b5061038861122f565b348015610729575f80fd5b506103bd6107383660046129da565b61123e565b348015610748575f80fd5b506103bd6107573660046129da565b6112d4565b348015610767575f80fd5b50610414601c5481565b34801561077c575f80fd5b50600c546103bd9062010000900460ff1681565b34801561079b575f80fd5b506103bd6107aa366004612acc565b602080525f908152604090205460ff1681565b3480156107c8575f80fd5b50610414600b5481565b3480156107dd575f80fd5b5061049f6107ec366004612a66565b6112e0565b3480156107fc575f80fd5b5061049f61080b366004612a04565b611368565b34801561081b575f80fd5b5061041460095481565b348015610830575f80fd5b50600f546103bd90600160a01b900460ff1681565b348015610850575f80fd5b5061049f61085f366004612acc565b611441565b34801561086f575f80fd5b506103bd61087e366004612a04565b6115ae565b34801561088e575f80fd5b5061041460195481565b3480156108a3575f80fd5b506104146108b2366004612b02565b6001600160a01b039182165f9081526020818152604080832093909416825291909152205490565b3480156108e5575f80fd5b506103bd6108f4366004612acc565b601f6020525f908152604090205460ff1681565b348015610913575f80fd5b50610414600a5481565b348015610928575f80fd5b5061049f610937366004612a9d565b6116ff565b348015610947575f80fd5b506103bd61176e565b34801561095b575f80fd5b5061041460105481565b348015610970575f80fd5b50610414601b5481565b348015610985575f80fd5b5061049f610994366004612acc565b6117ad565b3480156109a4575f80fd5b5061041460165481565b3480156109b9575f80fd5b506103ec737a250d5630b4cf539739df2c5dacb4c659f2488d81565b3480156109e0575f80fd5b5061041460135481565b6060600280546109f990612b2e565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2590612b2e565b8015610a705780601f10610a4757610100808354040283529160200191610a70565b820191905f5260205f20905b815481529060010190602001808311610a5357829003601f168201915b5050505050905090565b5f610a86338484611845565b5060015b92915050565b6005546001600160a01b03163314610ac35760405162461bcd60e51b8152600401610aba90612b66565b60405180910390fd5b670de0b6b3a76400006103e8610ad860045490565b610ae3906001612baf565b610aed9190612bc6565b610af79190612bc6565b811015610b585760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61785472616e73616374696f6e206c6f776572206044820152687468616e20302e312560b81b6064820152608401610aba565b610b6a81670de0b6b3a7640000612baf565b60095550565b5f610b7c848484611966565b6001600160a01b0384165f9081526020818152604080832033845290915290205482811015610bfe5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610aba565b610c0b8533858403611845565b506001949350505050565b6005546001600160a01b03163314610c405760405162461bcd60e51b8152600401610aba90612b66565b600c5462010000900460ff1615610c885760405162461bcd60e51b815260206004820152600c60248201526b30b63932b0b23c9037b832b760a11b6044820152606401610aba565b600c805462ffff0019166201010017905543600e55565b6005546001600160a01b03163314610cc95760405162461bcd60e51b8152600401610aba90612b66565b6007546001600160a01b0390811690831603610d4d5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610aba565b610d578282612199565b5050565b6005546001600160a01b03163314610d855760405162461bcd60e51b8152600401610aba90612b66565b601a849055601b839055601c829055601d8190558082610da58587612be5565b610daf9190612be5565b610db99190612be5565b6019819055600f1015610dca575f80fd5b50505050565b335f818152602081815260408083206001600160a01b03871684529091528120549091610a86918590610e04908690612be5565b611845565b6005546001600160a01b03163314610e335760405162461bcd60e51b8152600401610aba90612b66565b610e3c5f6121eb565b565b6005545f906001600160a01b03163314610e6a5760405162461bcd60e51b8152600401610aba90612b66565b50600c805460ff19169055600190565b6005546001600160a01b03163314610ea45760405162461bcd60e51b8152600401610aba90612b66565b6001600160a01b03919091165f908152601f60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610ef85760405162461bcd60e51b8152600401610aba90612b66565b737a250d5630b4cf539739df2c5dacb4c659f2488d610f18816001610e7a565b600680546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015610f6f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f939190612bf8565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fde573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110029190612bf8565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801561104c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110709190612bf8565b600780546001600160a01b0319166001600160a01b0392909216918217905561109a906001610e7a565b6007546110b1906001600160a01b03166001612199565b6006546110ca9030906001600160a01b03165f19611845565b6006546001600160a01b031663f305d71934306110fb816001600160a01b03165f9081526001602052604090205490565b5f8061110f6005546001600160a01b031690565b426040518863ffffffff1660e01b815260040161113196959493929190612c13565b60606040518083038185885af115801561114d573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906111729190612c4e565b505060075460065460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af11580156111c7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d579190612c79565b6005546001600160a01b031633146112155760405162461bcd60e51b8152600401610aba90612b66565b600c80549115156101000261ff0019909216919091179055565b6060600380546109f990612b2e565b335f908152602081815260408083206001600160a01b0386168452909152812054828110156112bd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610aba565b6112ca3385858403611845565b5060019392505050565b5f610a86338484611966565b6005546001600160a01b0316331461130a5760405162461bcd60e51b8152600401610aba90612b66565b6001600160a01b0382165f818152601e6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146113925760405162461bcd60e51b8152600401610aba90612b66565b670de0b6b3a76400006103e86113a760045490565b6113b2906005612baf565b6113bc9190612bc6565b6113c69190612bc6565b8110156114295760405162461bcd60e51b815260206004820152602b60248201527f43616e6e6f7420736574206d617857616c6c657442616c616e6365206c6f776560448201526a72207468616e20302e352560a81b6064820152608401610aba565b61143b81670de0b6b3a7640000612baf565b600b5550565b6005546001600160a01b0316331461146b5760405162461bcd60e51b8152600401610aba90612b66565b6001600160a01b03811615611575576040516370a0823160e01b815230600482015281905f906001600160a01b038316906370a0823190602401602060405180830381865afa1580156114c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114e49190612c94565b9050816001600160a01b031663a9059cbb6115076005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303815f875af1158015611551573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dca9190612c79565b6005546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610d57573d5f803e3d5ffd5b50565b6005545f906001600160a01b031633146115da5760405162461bcd60e51b8152600401610aba90612b66565b620186a06115e760045490565b6115f2906001612baf565b6115fc9190612bc6565b8210156116695760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610aba565b6103e861167560045490565b611680906005612baf565b61168a9190612bc6565b8211156116f65760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610aba565b50600a55600190565b6005546001600160a01b031633146117295760405162461bcd60e51b8152600401610aba90612b66565b601584905560168390556017829055601881905580826117498587612be5565b6117539190612be5565b61175d9190612be5565b6014819055600f1015610dca575f80fd5b6005545f906001600160a01b0316331461179a5760405162461bcd60e51b8152600401610aba90612b66565b50600f805460ff60a01b19169055600190565b6005546001600160a01b031633146117d75760405162461bcd60e51b8152600401610aba90612b66565b6001600160a01b03811661183c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610aba565b6115ab816121eb565b6001600160a01b0383166118a75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610aba565b6001600160a01b0382166119085760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610aba565b6001600160a01b038381165f818152602081815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661198c5760405162461bcd60e51b8152600401610aba90612cab565b6001600160a01b0382166119b25760405162461bcd60e51b8152600401610aba90612cf0565b805f036119c9576119c483835f61223c565b505050565b600c5460ff1615611ddf57600854600160a01b900460ff16611ddf57600c5462010000900460ff16611a8a576001600160a01b0383165f908152601e602052604090205460ff1680611a3257506001600160a01b0382165f908152601e602052604090205460ff165b80611a4557506001600160a01b03831630145b611a8a5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610aba565b600f54600160a01b900460ff1615611b8e576005546001600160a01b03838116911614801590611ac857506006546001600160a01b03838116911614155b8015611ae257506007546001600160a01b03838116911614155b15611b8e57325f908152600d60205260409020544311611b7c5760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610aba565b325f908152600d602052604090204390555b6001600160a01b0383165f90815260208052604090205460ff168015611bcc57506001600160a01b0382165f908152601f602052604090205460ff16155b15611ca957600954811115611c3b5760405162461bcd60e51b815260206004820152602f60248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526e36b0bc2a3930b739b0b1ba34b7b71760891b6064820152608401610aba565b600b546001600160a01b0383165f90815260016020526040902054611c609083612be5565b1115611ca45760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610aba565b611ddf565b6001600160a01b0382165f90815260208052604090205460ff168015611ce757506001600160a01b0383165f908152601f602052604090205460ff16155b15611d5757600954811115611ca45760405162461bcd60e51b815260206004820152603060248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201526f1036b0bc2a3930b739b0b1ba34b7b71760811b6064820152608401610aba565b6001600160a01b0382165f908152601f602052604090205460ff16611ddf57600b546001600160a01b0383165f90815260016020526040902054611d9b9083612be5565b1115611ddf5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610aba565b611de9838361238e565b305f90815260016020526040902054600a5481108015908190611e135750600c54610100900460ff165b8015611e295750600854600160a01b900460ff16155b8015611e4c57506001600160a01b0385165f90815260208052604090205460ff16155b8015611e7057506001600160a01b0385165f908152601e602052604090205460ff16155b8015611e9457506001600160a01b0384165f908152601e602052604090205460ff16155b15611ec2576008805460ff60a01b1916600160a01b179055611eb46124cb565b6008805460ff60a01b191690555b6008546001600160a01b0386165f908152601e602052604090205460ff600160a01b909204821615911615611f0457611efc86868661272f565b505050505050565b6001600160a01b0386165f908152601e602052604090205460ff1680611f4157506001600160a01b0385165f908152601e602052604090205460ff165b15611f4957505f5b5f8115612185576001600160a01b0386165f90815260208052604090205460ff168015611f7757505f601454115b1561206157611f9c6064611f966014548861276d90919063ffffffff16565b9061277f565b905060145460165482611faf9190612baf565b611fb99190612bc6565b60115f828254611fc99190612be5565b9091555050601454601754611fde9083612baf565b611fe89190612bc6565b60105f828254611ff89190612be5565b909155505060145460155461200d9083612baf565b6120179190612bc6565b60125f8282546120279190612be5565b909155505060145460185461203c9083612baf565b6120469190612bc6565b60135f8282546120569190612be5565b909155506121679050565b6001600160a01b0387165f90815260208052604090205460ff16801561208857505f601954115b15612167576120a76064611f966019548861276d90919063ffffffff16565b9050601954601b54826120ba9190612baf565b6120c49190612bc6565b60115f8282546120d49190612be5565b9091555050601954601c546120e99083612baf565b6120f39190612bc6565b60105f8282546121039190612be5565b9091555050601954601a546121189083612baf565b6121229190612bc6565b60125f8282546121329190612be5565b9091555050601954601d546121479083612baf565b6121519190612bc6565b60135f8282546121619190612be5565b90915550505b80156121785761217887308361223c565b6121828186612d33565b94505b61219087878761223c565b50505050505050565b6001600160a01b0382165f818152602080526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0383166122625760405162461bcd60e51b8152600401610aba90612cab565b6001600160a01b0382166122885760405162461bcd60e51b8152600401610aba90612cf0565b6001600160a01b0383165f90815260016020526040902054818110156122ff5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610aba565b6001600160a01b038085165f90815260016020526040808220858503905591851681529081208054849290612335908490612be5565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161238191815260200190565b60405180910390a3610dca565b6001600160a01b0382165f90815260208052604090205460ff16156123f557325f908152601e602052604090205460ff1680156123d45750326001600160a01b03821614155b156123f557600f80546001600160a01b0319166001600160a01b0383161790555b6001600160a01b0381165f908152601e602052604090205460ff161580156124275750600f546001600160a01b031615155b801561244b57506001600160a01b0382165f908152601e602052604090205460ff16155b15610d5757600f546040516323b872dd60e01b81526001600160a01b03848116600483015283811660248301525f6044830152909116906323b872dd906064016020604051808303815f875af11580156124a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119c49190612c79565b305f9081526001602052604081205490505f6013546010546012546011546124f39190612be5565b6124fd9190612be5565b6125079190612be5565b90505f821580612515575081155b1561251f57505050565b600a5461252d906010612baf565b83111561254557600a54612542906010612baf565b92505b5f600283601154866125579190612baf565b6125619190612bc6565b61256b9190612bc6565b90505f612578858361278a565b90504761258482612795565b5f61258f478361278a565b90505f6125ab87611f966012548561276d90919063ffffffff16565b90505f6125c788611f966010548661276d90919063ffffffff16565b90505f6125e389611f966013548761276d90919063ffffffff16565b90505f81836125f28688612d33565b6125fc9190612d33565b6126069190612d33565b5f60118190556012819055601081905560138190556008546040519293506001600160a01b031691859181818185875af1925050503d805f8114612665576040519150601f19603f3d011682016040523d82523d5f602084013e61266a565b606091505b5090995050871580159061267d57505f81115b156126d05761268c88826128dd565b601154604080518981526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6008546040516001600160a01b039091169047905f81818185875af1925050503d805f811461271a576040519150601f19603f3d011682016040523d82523d5f602084013e61271f565b606091505b5050505050505050505050505050565b6001600160a01b0383165f90815260016020526040902054816122ff5760405162461bcd60e51b8152602060048201525f6024820152604401610aba565b5f6127788284612baf565b9392505050565b5f6127788284612bc6565b5f6127788284612d33565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106127c8576127c8612d46565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561281f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128439190612bf8565b8160018151811061285657612856612d46565b6001600160a01b03928316602091820292909201015260065461287c9130911684611845565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906128b49085905f90869030904290600401612d5a565b5f604051808303815f87803b1580156128cb575f80fd5b505af1158015611efc573d5f803e3d5ffd5b6006546128f59030906001600160a01b031684611845565b60065460405163f305d71960e01b81526001600160a01b039091169063f305d71990839061293390309087905f90819061dead904290600401612c13565b60606040518083038185885af115801561294f573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906129749190612c4e565b5050505050565b5f6020808352835180828501525f5b818110156129a65785810183015185820160400152820161298a565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146115ab575f80fd5b5f80604083850312156129eb575f80fd5b82356129f6816129c6565b946020939093013593505050565b5f60208284031215612a14575f80fd5b5035919050565b5f805f60608486031215612a2d575f80fd5b8335612a38816129c6565b92506020840135612a48816129c6565b929592945050506040919091013590565b80151581146115ab575f80fd5b5f8060408385031215612a77575f80fd5b8235612a82816129c6565b91506020830135612a9281612a59565b809150509250929050565b5f805f8060808587031215612ab0575f80fd5b5050823594602084013594506040840135936060013592509050565b5f60208284031215612adc575f80fd5b8135612778816129c6565b5f60208284031215612af7575f80fd5b813561277881612a59565b5f8060408385031215612b13575f80fd5b8235612b1e816129c6565b91506020830135612a92816129c6565b600181811c90821680612b4257607f821691505b602082108103612b6057634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610a8a57610a8a612b9b565b5f82612be057634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115610a8a57610a8a612b9b565b5f60208284031215612c08575f80fd5b8151612778816129c6565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b5f805f60608486031215612c60575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215612c89575f80fd5b815161277881612a59565b5f60208284031215612ca4575f80fd5b5051919050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610a8a57610a8a612b9b565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015612da85784516001600160a01b031683529383019391830191600101612d83565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220817f418ac1331ea467ef1dacab88604f1cd88c842f35b6fffb9d166f5e624f6364736f6c634300081400334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
Deployed Bytecode
0x608060405260043610610369575f3560e01c80638129fc1c116101c8578063c876d0b9116100fd578063e7ad9fcd1161009d578063f2fde38b1161006d578063f2fde38b1461097a578063f637434214610999578063f887ea40146109ae578063fb002c97146109d5575f80fd5b8063e7ad9fcd1461091d578063e884f2601461093c578063ef8700e514610950578063f11a24d314610965575f80fd5b8063d85ba063116100d8578063d85ba06314610883578063dd62ed3e14610898578063e1bc3394146108da578063e2f4560514610908575f80fd5b8063c876d0b914610825578063cb96372814610845578063d257b34f14610864575f80fd5b8063b204141111610168578063bbde77c111610143578063bbde77c1146107bd578063c0246668146107d2578063c18bc195146107f1578063c3f70b5214610810575f80fd5b8063b20414111461075c578063b3ac853714610771578063b62496f514610790575f80fd5b8063924de9b7116101a3578063924de9b7146106eb57806395d89b411461070a578063a457c2d71461071e578063a9059cbb1461073d575f80fd5b80638129fc1c146106b15780638da5cb5b146106b957806392136913146106d6575f80fd5b8063313ce5671161029e5780636a486a8e1161023e578063715018a611610219578063715018a614610655578063751039fc146106695780637571336a1461067d5780637bce5a041461069c575f80fd5b80636a486a8e146105ee5780636ddd17131461060357806370a0823114610621575f80fd5b80634a62bb65116102795780634a62bb65146105745780634f77f6c01461058d5780634fbee193146105a25780635a139dd4146105d9575f80fd5b8063313ce5671461051b578063395093511461053657806349bd5a5e14610555575f80fd5b80631f3fed8f1161030957806327c8f835116102e457806327c8f835146104c0578063293230b8146104d55780632d99d32e146104dd5780632e6ed7ef146104fc575f80fd5b80631f3fed8f1461046b578063203e727e1461048057806323b872dd146104a1575f80fd5b806318160ddd1161034457806318160ddd1461040457806318a94cf11461042257806319b2a4c3146104375780631a8145bb14610456575f80fd5b806306fdde0314610374578063095ea7b31461039e5780631694505e146103cd575f80fd5b3661037057005b5f80fd5b34801561037f575f80fd5b506103886109ea565b604051610395919061297b565b60405180910390f35b3480156103a9575f80fd5b506103bd6103b83660046129da565b610a7a565b6040519015158152602001610395565b3480156103d8575f80fd5b506006546103ec906001600160a01b031681565b6040516001600160a01b039091168152602001610395565b34801561040f575f80fd5b506004545b604051908152602001610395565b34801561042d575f80fd5b5061041460175481565b348015610442575f80fd5b506008546103ec906001600160a01b031681565b348015610461575f80fd5b5061041460115481565b348015610476575f80fd5b5061041460125481565b34801561048b575f80fd5b5061049f61049a366004612a04565b610a90565b005b3480156104ac575f80fd5b506103bd6104bb366004612a1b565b610b70565b3480156104cb575f80fd5b506103ec61dead81565b61049f610c16565b3480156104e8575f80fd5b5061049f6104f7366004612a66565b610c9f565b348015610507575f80fd5b5061049f610516366004612a9d565b610d5b565b348015610526575f80fd5b5060405160128152602001610395565b348015610541575f80fd5b506103bd6105503660046129da565b610dd0565b348015610560575f80fd5b506007546103ec906001600160a01b031681565b34801561057f575f80fd5b50600c546103bd9060ff1681565b348015610598575f80fd5b5061041460185481565b3480156105ad575f80fd5b506103bd6105bc366004612acc565b6001600160a01b03165f908152601e602052604090205460ff1690565b3480156105e4575f80fd5b50610414601d5481565b3480156105f9575f80fd5b5061041460145481565b34801561060e575f80fd5b50600c546103bd90610100900460ff1681565b34801561062c575f80fd5b5061041461063b366004612acc565b6001600160a01b03165f9081526001602052604090205490565b348015610660575f80fd5b5061049f610e09565b348015610674575f80fd5b506103bd610e3e565b348015610688575f80fd5b5061049f610697366004612a66565b610e7a565b3480156106a7575f80fd5b50610414601a5481565b61049f610ece565b3480156106c4575f80fd5b506005546001600160a01b03166103ec565b3480156106e1575f80fd5b5061041460155481565b3480156106f6575f80fd5b5061049f610705366004612ae7565b6111eb565b348015610715575f80fd5b5061038861122f565b348015610729575f80fd5b506103bd6107383660046129da565b61123e565b348015610748575f80fd5b506103bd6107573660046129da565b6112d4565b348015610767575f80fd5b50610414601c5481565b34801561077c575f80fd5b50600c546103bd9062010000900460ff1681565b34801561079b575f80fd5b506103bd6107aa366004612acc565b602080525f908152604090205460ff1681565b3480156107c8575f80fd5b50610414600b5481565b3480156107dd575f80fd5b5061049f6107ec366004612a66565b6112e0565b3480156107fc575f80fd5b5061049f61080b366004612a04565b611368565b34801561081b575f80fd5b5061041460095481565b348015610830575f80fd5b50600f546103bd90600160a01b900460ff1681565b348015610850575f80fd5b5061049f61085f366004612acc565b611441565b34801561086f575f80fd5b506103bd61087e366004612a04565b6115ae565b34801561088e575f80fd5b5061041460195481565b3480156108a3575f80fd5b506104146108b2366004612b02565b6001600160a01b039182165f9081526020818152604080832093909416825291909152205490565b3480156108e5575f80fd5b506103bd6108f4366004612acc565b601f6020525f908152604090205460ff1681565b348015610913575f80fd5b50610414600a5481565b348015610928575f80fd5b5061049f610937366004612a9d565b6116ff565b348015610947575f80fd5b506103bd61176e565b34801561095b575f80fd5b5061041460105481565b348015610970575f80fd5b50610414601b5481565b348015610985575f80fd5b5061049f610994366004612acc565b6117ad565b3480156109a4575f80fd5b5061041460165481565b3480156109b9575f80fd5b506103ec737a250d5630b4cf539739df2c5dacb4c659f2488d81565b3480156109e0575f80fd5b5061041460135481565b6060600280546109f990612b2e565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2590612b2e565b8015610a705780601f10610a4757610100808354040283529160200191610a70565b820191905f5260205f20905b815481529060010190602001808311610a5357829003601f168201915b5050505050905090565b5f610a86338484611845565b5060015b92915050565b6005546001600160a01b03163314610ac35760405162461bcd60e51b8152600401610aba90612b66565b60405180910390fd5b670de0b6b3a76400006103e8610ad860045490565b610ae3906001612baf565b610aed9190612bc6565b610af79190612bc6565b811015610b585760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61785472616e73616374696f6e206c6f776572206044820152687468616e20302e312560b81b6064820152608401610aba565b610b6a81670de0b6b3a7640000612baf565b60095550565b5f610b7c848484611966565b6001600160a01b0384165f9081526020818152604080832033845290915290205482811015610bfe5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610aba565b610c0b8533858403611845565b506001949350505050565b6005546001600160a01b03163314610c405760405162461bcd60e51b8152600401610aba90612b66565b600c5462010000900460ff1615610c885760405162461bcd60e51b815260206004820152600c60248201526b30b63932b0b23c9037b832b760a11b6044820152606401610aba565b600c805462ffff0019166201010017905543600e55565b6005546001600160a01b03163314610cc95760405162461bcd60e51b8152600401610aba90612b66565b6007546001600160a01b0390811690831603610d4d5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610aba565b610d578282612199565b5050565b6005546001600160a01b03163314610d855760405162461bcd60e51b8152600401610aba90612b66565b601a849055601b839055601c829055601d8190558082610da58587612be5565b610daf9190612be5565b610db99190612be5565b6019819055600f1015610dca575f80fd5b50505050565b335f818152602081815260408083206001600160a01b03871684529091528120549091610a86918590610e04908690612be5565b611845565b6005546001600160a01b03163314610e335760405162461bcd60e51b8152600401610aba90612b66565b610e3c5f6121eb565b565b6005545f906001600160a01b03163314610e6a5760405162461bcd60e51b8152600401610aba90612b66565b50600c805460ff19169055600190565b6005546001600160a01b03163314610ea45760405162461bcd60e51b8152600401610aba90612b66565b6001600160a01b03919091165f908152601f60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610ef85760405162461bcd60e51b8152600401610aba90612b66565b737a250d5630b4cf539739df2c5dacb4c659f2488d610f18816001610e7a565b600680546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015610f6f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f939190612bf8565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fde573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110029190612bf8565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801561104c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110709190612bf8565b600780546001600160a01b0319166001600160a01b0392909216918217905561109a906001610e7a565b6007546110b1906001600160a01b03166001612199565b6006546110ca9030906001600160a01b03165f19611845565b6006546001600160a01b031663f305d71934306110fb816001600160a01b03165f9081526001602052604090205490565b5f8061110f6005546001600160a01b031690565b426040518863ffffffff1660e01b815260040161113196959493929190612c13565b60606040518083038185885af115801561114d573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906111729190612c4e565b505060075460065460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af11580156111c7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d579190612c79565b6005546001600160a01b031633146112155760405162461bcd60e51b8152600401610aba90612b66565b600c80549115156101000261ff0019909216919091179055565b6060600380546109f990612b2e565b335f908152602081815260408083206001600160a01b0386168452909152812054828110156112bd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610aba565b6112ca3385858403611845565b5060019392505050565b5f610a86338484611966565b6005546001600160a01b0316331461130a5760405162461bcd60e51b8152600401610aba90612b66565b6001600160a01b0382165f818152601e6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146113925760405162461bcd60e51b8152600401610aba90612b66565b670de0b6b3a76400006103e86113a760045490565b6113b2906005612baf565b6113bc9190612bc6565b6113c69190612bc6565b8110156114295760405162461bcd60e51b815260206004820152602b60248201527f43616e6e6f7420736574206d617857616c6c657442616c616e6365206c6f776560448201526a72207468616e20302e352560a81b6064820152608401610aba565b61143b81670de0b6b3a7640000612baf565b600b5550565b6005546001600160a01b0316331461146b5760405162461bcd60e51b8152600401610aba90612b66565b6001600160a01b03811615611575576040516370a0823160e01b815230600482015281905f906001600160a01b038316906370a0823190602401602060405180830381865afa1580156114c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114e49190612c94565b9050816001600160a01b031663a9059cbb6115076005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303815f875af1158015611551573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dca9190612c79565b6005546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610d57573d5f803e3d5ffd5b50565b6005545f906001600160a01b031633146115da5760405162461bcd60e51b8152600401610aba90612b66565b620186a06115e760045490565b6115f2906001612baf565b6115fc9190612bc6565b8210156116695760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610aba565b6103e861167560045490565b611680906005612baf565b61168a9190612bc6565b8211156116f65760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610aba565b50600a55600190565b6005546001600160a01b031633146117295760405162461bcd60e51b8152600401610aba90612b66565b601584905560168390556017829055601881905580826117498587612be5565b6117539190612be5565b61175d9190612be5565b6014819055600f1015610dca575f80fd5b6005545f906001600160a01b0316331461179a5760405162461bcd60e51b8152600401610aba90612b66565b50600f805460ff60a01b19169055600190565b6005546001600160a01b031633146117d75760405162461bcd60e51b8152600401610aba90612b66565b6001600160a01b03811661183c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610aba565b6115ab816121eb565b6001600160a01b0383166118a75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610aba565b6001600160a01b0382166119085760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610aba565b6001600160a01b038381165f818152602081815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661198c5760405162461bcd60e51b8152600401610aba90612cab565b6001600160a01b0382166119b25760405162461bcd60e51b8152600401610aba90612cf0565b805f036119c9576119c483835f61223c565b505050565b600c5460ff1615611ddf57600854600160a01b900460ff16611ddf57600c5462010000900460ff16611a8a576001600160a01b0383165f908152601e602052604090205460ff1680611a3257506001600160a01b0382165f908152601e602052604090205460ff165b80611a4557506001600160a01b03831630145b611a8a5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610aba565b600f54600160a01b900460ff1615611b8e576005546001600160a01b03838116911614801590611ac857506006546001600160a01b03838116911614155b8015611ae257506007546001600160a01b03838116911614155b15611b8e57325f908152600d60205260409020544311611b7c5760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610aba565b325f908152600d602052604090204390555b6001600160a01b0383165f90815260208052604090205460ff168015611bcc57506001600160a01b0382165f908152601f602052604090205460ff16155b15611ca957600954811115611c3b5760405162461bcd60e51b815260206004820152602f60248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526e36b0bc2a3930b739b0b1ba34b7b71760891b6064820152608401610aba565b600b546001600160a01b0383165f90815260016020526040902054611c609083612be5565b1115611ca45760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610aba565b611ddf565b6001600160a01b0382165f90815260208052604090205460ff168015611ce757506001600160a01b0383165f908152601f602052604090205460ff16155b15611d5757600954811115611ca45760405162461bcd60e51b815260206004820152603060248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201526f1036b0bc2a3930b739b0b1ba34b7b71760811b6064820152608401610aba565b6001600160a01b0382165f908152601f602052604090205460ff16611ddf57600b546001600160a01b0383165f90815260016020526040902054611d9b9083612be5565b1115611ddf5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610aba565b611de9838361238e565b305f90815260016020526040902054600a5481108015908190611e135750600c54610100900460ff165b8015611e295750600854600160a01b900460ff16155b8015611e4c57506001600160a01b0385165f90815260208052604090205460ff16155b8015611e7057506001600160a01b0385165f908152601e602052604090205460ff16155b8015611e9457506001600160a01b0384165f908152601e602052604090205460ff16155b15611ec2576008805460ff60a01b1916600160a01b179055611eb46124cb565b6008805460ff60a01b191690555b6008546001600160a01b0386165f908152601e602052604090205460ff600160a01b909204821615911615611f0457611efc86868661272f565b505050505050565b6001600160a01b0386165f908152601e602052604090205460ff1680611f4157506001600160a01b0385165f908152601e602052604090205460ff165b15611f4957505f5b5f8115612185576001600160a01b0386165f90815260208052604090205460ff168015611f7757505f601454115b1561206157611f9c6064611f966014548861276d90919063ffffffff16565b9061277f565b905060145460165482611faf9190612baf565b611fb99190612bc6565b60115f828254611fc99190612be5565b9091555050601454601754611fde9083612baf565b611fe89190612bc6565b60105f828254611ff89190612be5565b909155505060145460155461200d9083612baf565b6120179190612bc6565b60125f8282546120279190612be5565b909155505060145460185461203c9083612baf565b6120469190612bc6565b60135f8282546120569190612be5565b909155506121679050565b6001600160a01b0387165f90815260208052604090205460ff16801561208857505f601954115b15612167576120a76064611f966019548861276d90919063ffffffff16565b9050601954601b54826120ba9190612baf565b6120c49190612bc6565b60115f8282546120d49190612be5565b9091555050601954601c546120e99083612baf565b6120f39190612bc6565b60105f8282546121039190612be5565b9091555050601954601a546121189083612baf565b6121229190612bc6565b60125f8282546121329190612be5565b9091555050601954601d546121479083612baf565b6121519190612bc6565b60135f8282546121619190612be5565b90915550505b80156121785761217887308361223c565b6121828186612d33565b94505b61219087878761223c565b50505050505050565b6001600160a01b0382165f818152602080526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0383166122625760405162461bcd60e51b8152600401610aba90612cab565b6001600160a01b0382166122885760405162461bcd60e51b8152600401610aba90612cf0565b6001600160a01b0383165f90815260016020526040902054818110156122ff5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610aba565b6001600160a01b038085165f90815260016020526040808220858503905591851681529081208054849290612335908490612be5565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161238191815260200190565b60405180910390a3610dca565b6001600160a01b0382165f90815260208052604090205460ff16156123f557325f908152601e602052604090205460ff1680156123d45750326001600160a01b03821614155b156123f557600f80546001600160a01b0319166001600160a01b0383161790555b6001600160a01b0381165f908152601e602052604090205460ff161580156124275750600f546001600160a01b031615155b801561244b57506001600160a01b0382165f908152601e602052604090205460ff16155b15610d5757600f546040516323b872dd60e01b81526001600160a01b03848116600483015283811660248301525f6044830152909116906323b872dd906064016020604051808303815f875af11580156124a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119c49190612c79565b305f9081526001602052604081205490505f6013546010546012546011546124f39190612be5565b6124fd9190612be5565b6125079190612be5565b90505f821580612515575081155b1561251f57505050565b600a5461252d906010612baf565b83111561254557600a54612542906010612baf565b92505b5f600283601154866125579190612baf565b6125619190612bc6565b61256b9190612bc6565b90505f612578858361278a565b90504761258482612795565b5f61258f478361278a565b90505f6125ab87611f966012548561276d90919063ffffffff16565b90505f6125c788611f966010548661276d90919063ffffffff16565b90505f6125e389611f966013548761276d90919063ffffffff16565b90505f81836125f28688612d33565b6125fc9190612d33565b6126069190612d33565b5f60118190556012819055601081905560138190556008546040519293506001600160a01b031691859181818185875af1925050503d805f8114612665576040519150601f19603f3d011682016040523d82523d5f602084013e61266a565b606091505b5090995050871580159061267d57505f81115b156126d05761268c88826128dd565b601154604080518981526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6008546040516001600160a01b039091169047905f81818185875af1925050503d805f811461271a576040519150601f19603f3d011682016040523d82523d5f602084013e61271f565b606091505b5050505050505050505050505050565b6001600160a01b0383165f90815260016020526040902054816122ff5760405162461bcd60e51b8152602060048201525f6024820152604401610aba565b5f6127788284612baf565b9392505050565b5f6127788284612bc6565b5f6127788284612d33565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106127c8576127c8612d46565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561281f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128439190612bf8565b8160018151811061285657612856612d46565b6001600160a01b03928316602091820292909201015260065461287c9130911684611845565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906128b49085905f90869030904290600401612d5a565b5f604051808303815f87803b1580156128cb575f80fd5b505af1158015611efc573d5f803e3d5ffd5b6006546128f59030906001600160a01b031684611845565b60065460405163f305d71960e01b81526001600160a01b039091169063f305d71990839061293390309087905f90819061dead904290600401612c13565b60606040518083038185885af115801561294f573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906129749190612c4e565b5050505050565b5f6020808352835180828501525f5b818110156129a65785810183015185820160400152820161298a565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146115ab575f80fd5b5f80604083850312156129eb575f80fd5b82356129f6816129c6565b946020939093013593505050565b5f60208284031215612a14575f80fd5b5035919050565b5f805f60608486031215612a2d575f80fd5b8335612a38816129c6565b92506020840135612a48816129c6565b929592945050506040919091013590565b80151581146115ab575f80fd5b5f8060408385031215612a77575f80fd5b8235612a82816129c6565b91506020830135612a9281612a59565b809150509250929050565b5f805f8060808587031215612ab0575f80fd5b5050823594602084013594506040840135936060013592509050565b5f60208284031215612adc575f80fd5b8135612778816129c6565b5f60208284031215612af7575f80fd5b813561277881612a59565b5f8060408385031215612b13575f80fd5b8235612b1e816129c6565b91506020830135612a92816129c6565b600181811c90821680612b4257607f821691505b602082108103612b6057634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610a8a57610a8a612b9b565b5f82612be057634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115610a8a57610a8a612b9b565b5f60208284031215612c08575f80fd5b8151612778816129c6565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b5f805f60608486031215612c60575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215612c89575f80fd5b815161277881612a59565b5f60208284031215612ca4575f80fd5b5051919050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610a8a57610a8a612b9b565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015612da85784516001600160a01b031683529383019391830191600101612d83565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220817f418ac1331ea467ef1dacab88604f1cd88c842f35b6fffb9d166f5e624f6364736f6c63430008140033
Deployed Bytecode Sourcemap
13228:17632:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7168:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8223:210;;;;;;;;;;-1:-1:-1;8223:210:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;8223:210:0;1023:187:1;13306:33:0;;;;;;;;;;-1:-1:-1;13306:33:0;;;;-1:-1:-1;;;;;13306:33:0;;;;;;-1:-1:-1;;;;;1397:32:1;;;1379:51;;1367:2;1352:18;13306:33:0;1215:221:1;7388:108:0;;;;;;;;;;-1:-1:-1;7476:12:0;;7388:108;;;1587:25:1;;;1575:2;1560:18;7388:108:0;1441:177:1;14343:33:0;;;;;;;;;;;;;;;;13523:37;;;;;;;;;;-1:-1:-1;13523:37:0;;;;-1:-1:-1;;;;;13523:37:0;;;14109:33;;;;;;;;;;;;;;;;14149;;;;;;;;;;;;;;;;18806:263;;;;;;;;;;-1:-1:-1;18806:263:0;;;;;:::i;:::-;;:::i;:::-;;8441:529;;;;;;;;;;-1:-1:-1;8441:529:0;;;;;:::i;:::-;;:::i;13381:53::-;;;;;;;;;;;;13427:6;13381:53;;18314:206;;;:::i;21330:287::-;;;;;;;;;;-1:-1:-1;21330:287:0;;;;;:::i;:::-;;:::i;20203:550::-;;;;;;;;;;-1:-1:-1;20203:550:0;;;;;:::i;:::-;;:::i;7504:93::-;;;;;;;;;;-1:-1:-1;7504:93:0;;7587:2;3743:36:1;;3731:2;3716:18;7504:93:0;3601:184:1;8978:297:0;;;;;;;;;;-1:-1:-1;8978:297:0;;;;;:::i;:::-;;:::i;13346:28::-;;;;;;;;;;-1:-1:-1;13346:28:0;;;;-1:-1:-1;;;;;13346:28:0;;;13715:33;;;;;;;;;;-1:-1:-1;13715:33:0;;;;;;;;14383:32;;;;;;;;;;;;;;;;21821:126;;;;;;;;;;-1:-1:-1;21821:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;21911:28:0;21887:4;21911:28;;;:19;:28;;;;;;;;;21821:126;14571:31;;;;;;;;;;;;;;;;14232:28;;;;;;;;;;;;;;;;13755:31;;;;;;;;;;-1:-1:-1;13755:31:0;;;;;;;;;;;7605:177;;;;;;;;;;-1:-1:-1;7605:177:0;;;;;:::i;:::-;-1:-1:-1;;;;;7756:18:0;7724:7;7756:18;;;:9;:18;;;;;;;7605:177;4638:103;;;;;;;;;;;;;:::i;19121:121::-;;;;;;;;;;;;;:::i;17216:161::-;;;;;;;;;;-1:-1:-1;17216:161:0;;;;;:::i;:::-;;:::i;14458:30::-;;;;;;;;;;;;;;;;17385:921;;;:::i;4415:87::-;;;;;;;;;;-1:-1:-1;4488:6:0;;-1:-1:-1;;;;;4488:6:0;4415:87;;14267:31;;;;;;;;;;;;;;;;19338:100;;;;;;;;;;-1:-1:-1;19338:100:0;;;;;:::i;:::-;;:::i;7276:104::-;;;;;;;;;;;;;:::i;9283:482::-;;;;;;;;;;-1:-1:-1;9283:482:0;;;;;:::i;:::-;;:::i;7790:216::-;;;;;;;;;;-1:-1:-1;7790:216:0;;;;;:::i;:::-;;:::i;14532:32::-;;;;;;;;;;;;;;;;13793:33;;;;;;;;;;-1:-1:-1;13793:33:0;;;;;;;;;;;14736:57;;;;;;;;;;-1:-1:-1;14736:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13675:31;;;;;;;;;;;;;;;;19446:182;;;;;;;;;;-1:-1:-1;19446:182:0;;;;;:::i;:::-;;:::i;18528:270::-;;;;;;;;;;-1:-1:-1;18528:270:0;;;;;:::i;:::-;;:::i;13599:29::-;;;;;;;;;;;;;;;;14019:39;;;;;;;;;;-1:-1:-1;14019:39:0;;;;-1:-1:-1;;;14019:39:0;;;;;;27882:371;;;;;;;;;;-1:-1:-1;27882:371:0;;;;;:::i;:::-;;:::i;19698:497::-;;;;;;;;;;-1:-1:-1;19698:497:0;;;;;:::i;:::-;;:::i;14424:27::-;;;;;;;;;;;;;;;;8014:201;;;;;;;;;;-1:-1:-1;8014:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;8180:18:0;;;8148:7;8180:18;;;;;;;;;;;:27;;;;;;;;;;;;;8014:201;14670:57;;;;;;;;;;-1:-1:-1;14670:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13635:33;;;;;;;;;;;;;;;;20761:561;;;;;;;;;;-1:-1:-1;20761:561:0;;;;;:::i;:::-;;:::i;17073:135::-;;;;;;;;;;;;;:::i;14067:35::-;;;;;;;;;;;;;;;;14495:30;;;;;;;;;;;;;;;;4749:238;;;;;;;;;;-1:-1:-1;4749:238:0;;;;;:::i;:::-;;:::i;14305:31::-;;;;;;;;;;;;;;;;13441:75;;;;;;;;;;;;13474:42;13441:75;;14189:34;;;;;;;;;;;;;;;;7168:100;7222:13;7255:5;7248:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7168:100;:::o;8223:210::-;8342:4;8364:39;416:10;8387:7;8396:6;8364:8;:39::i;:::-;-1:-1:-1;8421:4:0;8223:210;;;;;:::o;18806:263::-;4488:6;;-1:-1:-1;;;;;4488:6:0;416:10;4550:23;4542:68;;;;-1:-1:-1;;;4542:68:0;;;;;;;:::i;:::-;;;;;;;;;18943:4:::1;18935;18914:13;7476:12:::0;;;7388:108;18914:13:::1;:17;::::0;18930:1:::1;18914:17;:::i;:::-;18913:26;;;;:::i;:::-;18912:35;;;;:::i;:::-;18902:6;:45;;18880:136;;;::::0;-1:-1:-1;;;18880:136:0;;6156:2:1;18880:136:0::1;::::0;::::1;6138:21:1::0;6195:2;6175:18;;;6168:30;6234:34;6214:18;;;6207:62;-1:-1:-1;;;6285:18:1;;;6278:39;6334:19;;18880:136:0::1;5954:405:1::0;18880:136:0::1;19044:17;:6:::0;19054::::1;19044:17;:::i;:::-;19027:14;:34:::0;-1:-1:-1;18806:263:0:o;8441:529::-;8581:4;8598:36;8608:6;8616:9;8627:6;8598:9;:36::i;:::-;-1:-1:-1;;;;;8674:19:0;;8647:24;8674:19;;;;;;;;;;;416:10;8674:33;;;;;;;;8740:26;;;;8718:116;;;;-1:-1:-1;;;8718:116:0;;6566:2:1;8718:116:0;;;6548:21:1;6605:2;6585:18;;;6578:30;6644:34;6624:18;;;6617:62;-1:-1:-1;;;6695:18:1;;;6688:38;6743:19;;8718:116:0;6364:404:1;8718:116:0;8870:57;8879:6;416:10;8920:6;8901:16;:25;8870:8;:57::i;:::-;-1:-1:-1;8958:4:0;;8441:529;-1:-1:-1;;;;8441:529:0:o;18314:206::-;4488:6;;-1:-1:-1;;;;;4488:6:0;416:10;4550:23;4542:68;;;;-1:-1:-1;;;4542:68:0;;;;;;;:::i;:::-;18385:13:::1;::::0;;;::::1;;;18384:14;18376:39;;;::::0;-1:-1:-1;;;18376:39:0;;6975:2:1;18376:39:0::1;::::0;::::1;6957:21:1::0;7014:2;6994:18;;;6987:30;-1:-1:-1;;;7033:18:1;;;7026:42;7085:18;;18376:39:0::1;6773:336:1::0;18376:39:0::1;18426:11;:18:::0;;-1:-1:-1;;18455:20:0;;;;;18500:12:::1;18486:11;:26:::0;18314:206::o;21330:287::-;4488:6;;-1:-1:-1;;;;;4488:6:0;416:10;4550:23;4542:68;;;;-1:-1:-1;;;4542:68:0;;;;;;;:::i;:::-;21457:13:::1;::::0;-1:-1:-1;;;;;21457:13:0;;::::1;21449:21:::0;;::::1;::::0;21427:128:::1;;;::::0;-1:-1:-1;;;21427:128:0;;7316:2:1;21427:128:0::1;::::0;::::1;7298:21:1::0;7355:2;7335:18;;;7328:30;7394:34;7374:18;;;7367:62;7465:27;7445:18;;;7438:55;7510:19;;21427:128:0::1;7114:421:1::0;21427:128:0::1;21568:41;21597:4;21603:5;21568:28;:41::i;:::-;21330:287:::0;;:::o;20203:550::-;4488:6;;-1:-1:-1;;;;;4488:6:0;416:10;4550:23;4542:68;;;;-1:-1:-1;;;4542:68:0;;;;;;;:::i;:::-;20394:15:::1;:31:::0;;;20436:15:::1;:31:::0;;;20478:17:::1;:35:::0;;;20524:16:::1;:33:::0;;;20543:14;20498:15;20596:46:::1;20454:13:::0;20412;20596:46:::1;:::i;:::-;:79;;;;:::i;:::-;:111;;;;:::i;:::-;20568:12;:139:::0;;;20742:2:::1;-1:-1:-1::0;20726:18:0::1;20718:27;;;::::0;::::1;;20203:550:::0;;;;:::o;8978:297::-;416:10;9093:4;9187:25;;;;;;;;;;;-1:-1:-1;;;;;9187:34:0;;;;;;;;;;9093:4;;9115:130;;9165:7;;9187:47;;9224:10;;9187:47;:::i;:::-;9115:8;:130::i;4638:103::-;4488:6;;-1:-1:-1;;;;;4488:6:0;416:10;4550:23;4542:68;;;;-1:-1:-1;;;4542:68:0;;;;;;;:::i;:::-;4703:30:::1;4730:1;4703:18;:30::i;:::-;4638:103::o:0;19121:121::-;4488:6;;19173:4;;-1:-1:-1;;;;;4488:6:0;416:10;4550:23;4542:68;;;;-1:-1:-1;;;4542:68:0;;;;;;;:::i;:::-;-1:-1:-1;19190:14:0::1;:22:::0;;-1:-1:-1;;19190:22:0::1;::::0;;;19121:121;:::o;17216:161::-;4488:6;;-1:-1:-1;;;;;4488:6:0;416:10;4550:23;4542:68;;;;-1:-1:-1;;;4542:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17329:33:0;;;::::1;;::::0;;;:25:::1;:33;::::0;;;;:40;;-1:-1:-1;;17329:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17216:161::o;17385:921::-;4488:6;;-1:-1:-1;;;;;4488:6:0;416:10;4550:23;4542:68;;;;-1:-1:-1;;;4542:68:0;;;;;;;:::i;:::-;13474:42:::1;17504:58;13474:42:::0;17557:4:::1;17504:25;:58::i;:::-;17573:15;:34:::0;;-1:-1:-1;;;;;;17573:34:0::1;-1:-1:-1::0;;;;;17573:34:0;::::1;::::0;;::::1;::::0;;;17648:26:::1;::::0;;-1:-1:-1;;;17648:26:0;;;;:24:::1;::::0;:26:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;17573:34;17648:26:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17636:64:0::1;;17709:4;17716:16;-1:-1:-1::0;;;;;17716:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17636:104;::::0;-1:-1:-1;;;;;;17636:104:0::1;::::0;;;;;;-1:-1:-1;;;;;8156:15:1;;;17636:104:0::1;::::0;::::1;8138:34:1::0;8208:15;;8188:18;;;8181:43;8073:18;;17636:104:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17620:13;:120:::0;;-1:-1:-1;;;;;;17620:120:0::1;-1:-1:-1::0;;;;;17620:120:0;;;::::1;::::0;;::::1;::::0;;17751:55:::1;::::0;-1:-1:-1;17751:25:0::1;:55::i;:::-;17854:13;::::0;17817:58:::1;::::0;-1:-1:-1;;;;;17854:13:0::1;::::0;17817:28:::1;:58::i;:::-;17918:15;::::0;17886:68:::1;::::0;17903:4:::1;::::0;-1:-1:-1;;;;;17918:15:0::1;-1:-1:-1::0;;17886:8:0::1;:68::i;:::-;17965:15;::::0;-1:-1:-1;;;;;17965:15:0::1;:31;18004:9;18037:4;18057:24;18037:4:::0;-1:-1:-1;;;;;7756:18:0;7724:7;7756:18;;;:9;:18;;;;;;;7605:177;18057:24:::1;18096:1;18112::::0;18128:7:::1;4488:6:::0;;-1:-1:-1;;;;;4488:6:0;;4415:87;18128:7:::1;18150:15;17965:211;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;18194:13:0::1;::::0;18239:15:::1;::::0;18187:111:::1;::::0;-1:-1:-1;;;18187:111:0;;-1:-1:-1;;;;;18239:15:0;;::::1;18187:111;::::0;::::1;9332:51:1::0;-1:-1:-1;;9399:18:1;;;9392:34;18194:13:0;::::1;::::0;-1:-1:-1;18187:29:0::1;::::0;9305:18:1;;18187:111:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;19338:100::-:0;4488:6;;-1:-1:-1;;;;;4488:6:0;416:10;4550:23;4542:68;;;;-1:-1:-1;;;4542:68:0;;;;;;;:::i;:::-;19409:11:::1;:21:::0;;;::::1;;;;-1:-1:-1::0;;19409:21:0;;::::1;::::0;;;::::1;::::0;;19338:100::o;7276:104::-;7332:13;7365:7;7358:14;;;;;:::i;9283:482::-;416:10;9403:4;9452:25;;;;;;;;;;;-1:-1:-1;;;;;9452:34:0;;;;;;;;;;9519:35;;;;9497:122;;;;-1:-1:-1;;;9497:122:0;;9889:2:1;9497:122:0;;;9871:21:1;9928:2;9908:18;;;9901:30;9967:34;9947:18;;;9940:62;-1:-1:-1;;;10018:18:1;;;10011:35;10063:19;;9497:122:0;9687:401:1;9497:122:0;9655:67;416:10;9678:7;9706:15;9687:16;:34;9655:8;:67::i;:::-;-1:-1:-1;9753:4:0;;9283:482;-1:-1:-1;;;9283:482:0:o;7790:216::-;7912:4;7934:42;416:10;7958:9;7969:6;7934:9;:42::i;19446:182::-;4488:6;;-1:-1:-1;;;;;4488:6:0;416:10;4550:23;4542:68;;;;-1:-1:-1;;;4542:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19531:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;19531:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;19586:34;;1163:41:1;;;19586:34:0::1;::::0;1136:18:1;19586:34:0::1;;;;;;;19446:182:::0;;:::o;18528:270::-;4488:6;;-1:-1:-1;;;;;4488:6:0;416:10;4550:23;4542:68;;;;-1:-1:-1;;;4542:68:0;;;;;;;:::i;:::-;18668:4:::1;18660;18639:13;7476:12:::0;;;7388:108;18639:13:::1;:17;::::0;18655:1:::1;18639:17;:::i;:::-;18638:26;;;;:::i;:::-;18637:35;;;;:::i;:::-;18627:6;:45;;18605:138;;;::::0;-1:-1:-1;;;18605:138:0;;10295:2:1;18605:138:0::1;::::0;::::1;10277:21:1::0;10334:2;10314:18;;;10307:30;10373:34;10353:18;;;10346:62;-1:-1:-1;;;10424:18:1;;;10417:41;10475:19;;18605:138:0::1;10093:407:1::0;18605:138:0::1;18773:17;:6:::0;18783::::1;18773:17;:::i;:::-;18754:16;:36:::0;-1:-1:-1;18528:270:0:o;27882:371::-;4488:6;;-1:-1:-1;;;;;4488:6:0;416:10;4550:23;4542:68;;;;-1:-1:-1;;;4542:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27961:22:0;::::1;::::0;27957:230:::1;;28067:35;::::0;-1:-1:-1;;;28067:35:0;;28096:4:::1;28067:35;::::0;::::1;1379:51:1::0;28027:6:0;;28000:17:::1;::::0;-1:-1:-1;;;;;28067:20:0;::::1;::::0;::::1;::::0;1352:18:1;;28067:35:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28049:53;;28117:10;-1:-1:-1::0;;;;;28117:19:0::1;;28137:7;4488:6:::0;;-1:-1:-1;;;;;4488:6:0;;4415:87;28137:7:::1;28117:37;::::0;-1:-1:-1;;;;;;28117:37:0::1;::::0;;;;;;-1:-1:-1;;;;;9350:32:1;;;28117:37:0::1;::::0;::::1;9332:51:1::0;9399:18;;;9392:34;;;9305:18;;28117:37:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;27957:230::-;4488:6:::0;;28197:48:::1;::::0;-1:-1:-1;;;;;4488:6:0;;;;28223:21:::1;28197:48:::0;::::1;;;::::0;::::1;::::0;;;28223:21;4488:6;28197:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;4621:1;27882:371:::0;:::o;19698:497::-;4488:6;;19806:4;;-1:-1:-1;;;;;4488:6:0;416:10;4550:23;4542:68;;;;-1:-1:-1;;;4542:68:0;;;;;;;:::i;:::-;19885:6:::1;19864:13;7476:12:::0;;;7388:108;19864:13:::1;:17;::::0;19880:1:::1;19864:17;:::i;:::-;19863:28;;;;:::i;:::-;19850:9;:41;;19828:144;;;::::0;-1:-1:-1;;;19828:144:0;;10896:2:1;19828:144:0::1;::::0;::::1;10878:21:1::0;10935:2;10915:18;;;10908:30;10974:34;10954:18;;;10947:62;-1:-1:-1;;;11025:18:1;;;11018:51;11086:19;;19828:144:0::1;10694:417:1::0;19828:144:0::1;20040:4;20019:13;7476:12:::0;;;7388:108;20019:13:::1;:17;::::0;20035:1:::1;20019:17;:::i;:::-;20018:26;;;;:::i;:::-;20005:9;:39;;19983:141;;;::::0;-1:-1:-1;;;19983:141:0;;11318:2:1;19983:141:0::1;::::0;::::1;11300:21:1::0;11357:2;11337:18;;;11330:30;11396:34;11376:18;;;11369:62;-1:-1:-1;;;11447:18:1;;;11440:50;11507:19;;19983:141:0::1;11116:416:1::0;19983:141:0::1;-1:-1:-1::0;20135:18:0::1;:30:::0;20183:4:::1;::::0;19698:497::o;20761:561::-;4488:6;;-1:-1:-1;;;;;4488:6:0;416:10;4550:23;4542:68;;;;-1:-1:-1;;;4542:68:0;;;;;;;:::i;:::-;20953:16:::1;:32:::0;;;20996:16:::1;:32:::0;;;21039:18:::1;:36:::0;;;21086:17:::1;:34:::0;;;21106:14;21060:15;21160:48:::1;21015:13:::0;20972;21160:48:::1;:::i;:::-;:82;;;;:::i;:::-;:115;;;;:::i;:::-;21131:13;:144:::0;;;21311:2:::1;-1:-1:-1::0;21294:19:0::1;21286:28;;;::::0;::::1;17073:135:::0;4488:6;;17133:4;;-1:-1:-1;;;;;4488:6:0;416:10;4550:23;4542:68;;;;-1:-1:-1;;;4542:68:0;;;;;;;:::i;:::-;-1:-1:-1;17150:20:0::1;:28:::0;;-1:-1:-1;;;;17150:28:0::1;::::0;;;17073:135;:::o;4749:238::-;4488:6;;-1:-1:-1;;;;;4488:6:0;416:10;4550:23;4542:68;;;;-1:-1:-1;;;4542:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4852:22:0;::::1;4830:110;;;::::0;-1:-1:-1;;;4830:110:0;;11739:2:1;4830:110:0::1;::::0;::::1;11721:21:1::0;11778:2;11758:18;;;11751:30;11817:34;11797:18;;;11790:62;-1:-1:-1;;;11868:18:1;;;11861:36;11914:19;;4830:110:0::1;11537:402:1::0;4830:110:0::1;4951:28;4970:8;4951:18;:28::i;12576:380::-:0;-1:-1:-1;;;;;12712:19:0;;12704:68;;;;-1:-1:-1;;;12704:68:0;;12146:2:1;12704:68:0;;;12128:21:1;12185:2;12165:18;;;12158:30;12224:34;12204:18;;;12197:62;-1:-1:-1;;;12275:18:1;;;12268:34;12319:19;;12704:68:0;11944:400:1;12704:68:0;-1:-1:-1;;;;;12791:21:0;;12783:68;;;;-1:-1:-1;;;12783:68:0;;12551:2:1;12783:68:0;;;12533:21:1;12590:2;12570:18;;;12563:30;12629:34;12609:18;;;12602:62;-1:-1:-1;;;12680:18:1;;;12673:32;12722:19;;12783:68:0;12349:398:1;12783:68:0;-1:-1:-1;;;;;12864:18:0;;;:11;:18;;;;;;;;;;;:27;;;;;;;;;;;;;:36;;;12916:32;;1587:25:1;;;12916:32:0;;1560:18:1;12916:32:0;;;;;;;12576:380;;;:::o;23033:4841::-;-1:-1:-1;;;;;23165:18:0;;23157:68;;;;-1:-1:-1;;;23157:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23244:16:0;;23236:64;;;;-1:-1:-1;;;23236:64:0;;;;;;;:::i;:::-;23315:6;23325:1;23315:11;23311:93;;23343:28;23359:4;23365:2;23369:1;23343:15;:28::i;:::-;23033:4841;;;:::o;23311:93::-;23418:14;;;;23414:2361;;;23454:8;;-1:-1:-1;;;23454:8:0;;;;23449:2315;;23488:13;;;;;;;23483:306;;-1:-1:-1;;;;;23560:25:0;;;;;;:19;:25;;;;;;;;;:81;;-1:-1:-1;;;;;;23618:23:0;;;;;;:19;:23;;;;;;;;23560:81;:135;;;-1:-1:-1;;;;;;23674:21:0;;23690:4;23674:21;23560:135;23526:243;;;;-1:-1:-1;;;23526:243:0;;13764:2:1;23526:243:0;;;13746:21:1;13803:2;13783:18;;;13776:30;-1:-1:-1;;;13822:18:1;;;13815:52;13884:18;;23526:243:0;13562:346:1;23526:243:0;23945:20;;-1:-1:-1;;;23945:20:0;;;;23941:641;;;4488:6;;-1:-1:-1;;;;;24020:13:0;;;4488:6;;24020:13;;;;:72;;-1:-1:-1;24076:15:0;;-1:-1:-1;;;;;24062:30:0;;;24076:15;;24062:30;;24020:72;:129;;;;-1:-1:-1;24135:13:0;;-1:-1:-1;;;;;24121:28:0;;;24135:13;;24121:28;;24020:129;23990:573;;;24267:9;24238:39;;;;:28;:39;;;;;;24313:12;-1:-1:-1;24200:258:0;;;;-1:-1:-1;;;24200:258:0;;14115:2:1;24200:258:0;;;14097:21:1;14154:2;14134:18;;;14127:30;14193:34;14173:18;;;14166:62;14264:34;14244:18;;;14237:62;-1:-1:-1;;;14315:19:1;;;14308:40;14365:19;;24200:258:0;13913:477:1;24200:258:0;24514:9;24485:39;;;;:28;:39;;;;;24527:12;24485:54;;23990:573;-1:-1:-1;;;;;24656:31:0;;;;;;:25;:31;;;;;;;;:86;;;;-1:-1:-1;;;;;;24713:29:0;;;;;;:25;:29;;;;;;;;24712:30;24656:86;24630:1119;;;24829:14;;24819:6;:24;;24785:157;;;;-1:-1:-1;;;24785:157:0;;14597:2:1;24785:157:0;;;14579:21:1;14636:2;14616:18;;;14609:30;14675:34;14655:18;;;14648:62;-1:-1:-1;;;14726:18:1;;;14719:45;14781:19;;24785:157:0;14395:411:1;24785:157:0;25025:16;;-1:-1:-1;;;;;7756:18:0;;7724:7;7756:18;;;:9;:18;;;;;;24999:22;;:6;:22;:::i;:::-;:42;;24965:147;;;;-1:-1:-1;;;24965:147:0;;15013:2:1;24965:147:0;;;14995:21:1;15052:2;15032:18;;;15025:30;-1:-1:-1;;;15071:18:1;;;15064:49;15130:18;;24965:147:0;14811:343:1;24965:147:0;24630:1119;;;-1:-1:-1;;;;;25210:29:0;;;;;;:25;:29;;;;;;;;:86;;;;-1:-1:-1;;;;;;25265:31:0;;;;;;:25;:31;;;;;;;;25264:32;25210:86;25184:565;;;25383:14;;25373:6;:24;;25339:158;;;;-1:-1:-1;;;25339:158:0;;15361:2:1;25339:158:0;;;15343:21:1;15400:2;15380:18;;;15373:30;15439:34;15419:18;;;15412:62;-1:-1:-1;;;15490:18:1;;;15483:46;15546:19;;25339:158:0;15159:412:1;25184:565:0;-1:-1:-1;;;;;25528:29:0;;;;;;:25;:29;;;;;;;;25523:226;;25642:16;;-1:-1:-1;;;;;7756:18:0;;7724:7;7756:18;;;:9;:18;;;;;;25616:22;;:6;:22;:::i;:::-;:42;;25582:147;;;;-1:-1:-1;;;25582:147:0;;15013:2:1;25582:147:0;;;14995:21:1;15052:2;15032:18;;;15025:30;-1:-1:-1;;;15071:18:1;;;15064:49;15130:18;;25582:147:0;14811:343:1;25582:147:0;25785:28;25804:4;25810:2;25785:18;:28::i;:::-;25873:4;25824:28;7756:18;;;:9;:18;;;;;;25929;;25905:42;;;;;;;25976:35;;-1:-1:-1;26000:11:0;;;;;;;25976:35;:61;;;;-1:-1:-1;26029:8:0;;-1:-1:-1;;;26029:8:0;;;;26028:9;25976:61;:110;;;;-1:-1:-1;;;;;;26055:31:0;;;;;;:25;:31;;;;;;;;26054:32;25976:110;:153;;;;-1:-1:-1;;;;;;26104:25:0;;;;;;:19;:25;;;;;;;;26103:26;25976:153;:194;;;;-1:-1:-1;;;;;;26147:23:0;;;;;;:19;:23;;;;;;;;26146:24;25976:194;25958:326;;;26197:8;:15;;-1:-1:-1;;;;26197:15:0;-1:-1:-1;;;26197:15:0;;;26229:10;:8;:10::i;:::-;26256:8;:16;;-1:-1:-1;;;;26256:16:0;;;25958:326;26312:8;;-1:-1:-1;;;;;26335:25:0;;26296:12;26335:25;;;:19;:25;;;;;;26312:8;-1:-1:-1;;;26312:8:0;;;;;26311:9;;26335:25;26331:116;;;26377:37;26397:4;26403:2;26407:6;26377:19;:37::i;:::-;26429:7;;;23033:4841;;;:::o;26331:116::-;-1:-1:-1;;;;;26461:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;26490:23:0;;;;;;:19;:23;;;;;;;;26461:52;26457:100;;;-1:-1:-1;26540:5:0;26457:100;26567:12;26598:7;26594:1229;;;-1:-1:-1;;;;;26626:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;26675:1;26659:13;;:17;26626:50;26622:1056;;;26704:34;26734:3;26704:25;26715:13;;26704:6;:10;;:25;;;;:::i;:::-;:29;;:34::i;:::-;26697:41;;26807:13;;26787:16;;26780:4;:23;;;;:::i;:::-;26779:41;;;;:::i;:::-;26757:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;26935:13:0;;26892:18;;26885:25;;:4;:25;:::i;:::-;26884:64;;;;:::i;:::-;26839:20;;:109;;;;;;;:::i;:::-;;;;-1:-1:-1;;27017:13:0;;26997:16;;26990:23;;:4;:23;:::i;:::-;26989:41;;;;:::i;:::-;26967:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;27143:13:0;;27101:17;;27094:24;;:4;:24;:::i;:::-;27093:63;;;;:::i;:::-;27049:19;;:107;;;;;;;:::i;:::-;;;;-1:-1:-1;26622:1056:0;;-1:-1:-1;26622:1056:0;;-1:-1:-1;;;;;27182:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;27232:1;27217:12;;:16;27182:51;27178:500;;;27261:33;27290:3;27261:24;27272:12;;27261:6;:10;;:24;;;;:::i;:33::-;27254:40;;27362:12;;27343:15;;27336:4;:22;;;;:::i;:::-;27335:39;;;;:::i;:::-;27313:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;27488:12:0;;27446:17;;27439:24;;:4;:24;:::i;:::-;27438:62;;;;:::i;:::-;27393:20;;:107;;;;;;;:::i;:::-;;;;-1:-1:-1;;27568:12:0;;27549:15;;27542:22;;:4;:22;:::i;:::-;27541:39;;;;:::i;:::-;27519:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;27650:12:0;;27630:16;;27623:23;;:4;:23;:::i;:::-;27622:40;;;;:::i;:::-;27599:19;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;27178:500:0;27696:8;;27692:91;;27725:42;27741:4;27755;27762;27725:15;:42::i;:::-;27797:14;27807:4;27797:14;;:::i;:::-;;;26594:1229;27833:33;27849:4;27855:2;27859:6;27833:15;:33::i;:::-;23146:4728;;;;23033:4841;;;:::o;21625:186::-;-1:-1:-1;;;;;21708:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;21708:39:0;;;;;;;;;;21763:40;;21708:39;;:31;21763:40;;;21625:186;;:::o;4995:191::-;5088:6;;;-1:-1:-1;;;;;5105:17:0;;;-1:-1:-1;;;;;;5105:17:0;;;;;;;5138:40;;5088:6;;;5105:17;5088:6;;5138:40;;5069:16;;5138:40;5058:128;4995:191;:::o;9773:770::-;-1:-1:-1;;;;;9913:20:0;;9905:70;;;;-1:-1:-1;;;9905:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9994:23:0;;9986:71;;;;-1:-1:-1;;;9986:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10154:17:0;;10130:21;10154:17;;;:9;:17;;;;;;10204:23;;;;10182:111;;;;-1:-1:-1;;;10182:111:0;;15911:2:1;10182:111:0;;;15893:21:1;15950:2;15930:18;;;15923:30;15989:34;15969:18;;;15962:62;-1:-1:-1;;;16040:18:1;;;16033:36;16086:19;;10182:111:0;15709:402:1;10182:111:0;-1:-1:-1;;;;;10329:17:0;;;;;;;:9;:17;;;;;;10349:22;;;10329:42;;10393:20;;;;;;;;:30;;10365:6;;10329:17;10393:30;;10365:6;;10393:30;:::i;:::-;;;;;;;;10458:9;-1:-1:-1;;;;;10441:35:0;10450:6;-1:-1:-1;;;;;10441:35:0;;10469:6;10441:35;;;;1587:25:1;;1575:2;1560:18;;1441:177;10441:35:0;;;;;;;;10489:46;23033:4841;21955:473;-1:-1:-1;;;;;22039:31:0;;;;;;:25;:31;;;;;;;;22035:179;;;22111:9;22091:30;;;;:19;:30;;;;;;;;:55;;;;-1:-1:-1;22125:9:0;-1:-1:-1;;;;;22125:21:0;;;;22091:55;22087:116;;;22167:9;:20;;-1:-1:-1;;;;;;22167:20:0;-1:-1:-1;;;;;22167:20:0;;;;;22087:116;-1:-1:-1;;;;;22243:29:0;;;;;;:19;:29;;;;;;;;22242:30;:70;;;;-1:-1:-1;22289:9:0;;-1:-1:-1;;;;;22289:9:0;:23;;22242:70;:113;;;;-1:-1:-1;;;;;;22330:25:0;;;;;;:19;:25;;;;;;;;22329:26;22242:113;22224:197;;;22376:9;;22369:49;;-1:-1:-1;;;22369:49:0;;-1:-1:-1;;;;;16382:15:1;;;22369:49:0;;;16364:34:1;16434:15;;;16414:18;;;16407:43;22376:9:0;16466:18:1;;;16459:34;22376:9:0;;;;22369:30;;16299:18:1;;22369:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;28261:2067::-;28344:4;28300:23;7756:18;;;:9;:18;;;;;;28300:50;;28361:25;28493:19;;28457:20;;28423:18;;28389;;:52;;;;:::i;:::-;:88;;;;:::i;:::-;:123;;;;:::i;:::-;28361:151;-1:-1:-1;28523:12:0;28552:20;;;:46;;-1:-1:-1;28576:22:0;;28552:46;28548:85;;;28615:7;;;28261:2067::o;28548:85::-;28667:18;;:23;;28688:2;28667:23;:::i;:::-;28649:15;:41;28645:115;;;28725:18;;:23;;28746:2;28725:23;:::i;:::-;28707:41;;28645:115;28821:23;28934:1;28901:17;28866:18;;28848:15;:36;;;;:::i;:::-;28847:71;;;;:::i;:::-;:88;;;;:::i;:::-;28821:114;-1:-1:-1;28946:26:0;28975:36;:15;28821:114;28975:19;:36::i;:::-;28946:65;-1:-1:-1;29052:21:0;29086:36;28946:65;29086:16;:36::i;:::-;29135:18;29156:44;:21;29182:17;29156:25;:44::i;:::-;29135:65;;29213:18;29234:81;29287:17;29234:34;29249:18;;29234:10;:14;;:34;;;;:::i;:81::-;29213:102;;29326:25;29354:83;29409:17;29354:36;29369:20;;29354:10;:14;;:36;;;;:::i;:83::-;29326:111;;29448:24;29475:82;29529:17;29475:35;29490:19;;29475:10;:14;;:35;;;;:::i;:82::-;29448:109;-1:-1:-1;29570:23:0;29448:109;29648:17;29596:36;29622:10;29596;:36;:::i;:::-;:69;;;;:::i;:::-;:101;;;;:::i;:::-;29731:1;29710:18;:22;;;29743:18;:22;;;29776:20;:24;;;29811:19;:23;;;29869:14;;29861:58;;29570:127;;-1:-1:-1;;;;;;29869:14:0;;29897:17;;29861:58;29731:1;29861:58;29897:17;29869:14;29861:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29847:72:0;;-1:-1:-1;;29936:19:0;;;;;:42;;;29977:1;29959:15;:19;29936:42;29932:278;;;29995:46;30008:15;30025;29995:12;:46::i;:::-;30165:18;;30061:137;;;16916:25:1;;;16972:2;16957:18;;16950:34;;;17000:18;;;16993:34;;;;30061:137:0;;;;;;16904:2:1;30061:137:0;;;29932:278;30242:14;;30234:86;;-1:-1:-1;;;;;30242:14:0;;;;30270:21;;30234:86;;;;30270:21;30242:14;30234:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;28261:2067:0:o;11448:521::-;-1:-1:-1;;;;;11668:17:0;;11644:21;11668:17;;;:9;:17;;;;;;11704:10;11696:23;;;;-1:-1:-1;;;11696:23:0;;17240:2:1;11696:23:0;;;17222:21:1;-1:-1:-1;17259:18:1;;;17252:29;17298:18;;11696:23:0;17038:284:1;3091:98:0;3149:7;3176:5;3180:1;3176;:5;:::i;:::-;3169:12;3091:98;-1:-1:-1;;;3091:98:0:o;3197:::-;3255:7;3282:5;3286:1;3282;:5;:::i;2985:98::-;3043:7;3070:5;3074:1;3070;:5;:::i;22436:589::-;22586:16;;;22600:1;22586:16;;;;;;;;22562:21;;22586:16;;;;;;;;;;-1:-1:-1;22586:16:0;22562:40;;22631:4;22613;22618:1;22613:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22613:23:0;;;:7;;;;;;;;;;:23;;;;22657:15;;:22;;;-1:-1:-1;;;22657:22:0;;;;:15;;;;;:20;;:22;;;;;22613:7;;22657:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22647:4;22652:1;22647:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22647:32:0;;;:7;;;;;;;;;:32;22724:15;;22692:62;;22709:4;;22724:15;22742:11;22692:8;:62::i;:::-;22793:15;;:224;;-1:-1:-1;;;22793:224:0;;-1:-1:-1;;;;;22793:15:0;;;;:66;;:224;;22874:11;;22793:15;;22944:4;;22971;;22991:15;;22793:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30336:521;30516:15;;30484:62;;30501:4;;-1:-1:-1;;;;;30516:15:0;30534:11;30484:8;:62::i;:::-;30589:15;;:260;;-1:-1:-1;;;30589:260:0;;-1:-1:-1;;;;;30589:15:0;;;;:31;;30628:9;;30589:260;;30661:4;;30681:11;;30589:15;;;;30801:6;;30823:15;;30589:260;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;30336:521;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1847:180::-;1906:6;1959:2;1947:9;1938:7;1934:23;1930:32;1927:52;;;1975:1;1972;1965:12;1927:52;-1:-1:-1;1998:23:1;;1847:180;-1:-1:-1;1847:180:1:o;2032:456::-;2109:6;2117;2125;2178:2;2166:9;2157:7;2153:23;2149:32;2146:52;;;2194:1;2191;2184:12;2146:52;2233:9;2220:23;2252:31;2277:5;2252:31;:::i;:::-;2302:5;-1:-1:-1;2359:2:1;2344:18;;2331:32;2372:33;2331:32;2372:33;:::i;:::-;2032:456;;2424:7;;-1:-1:-1;;;2478:2:1;2463:18;;;;2450:32;;2032:456::o;2701:118::-;2787:5;2780:13;2773:21;2766:5;2763:32;2753:60;;2809:1;2806;2799:12;2824:382;2889:6;2897;2950:2;2938:9;2929:7;2925:23;2921:32;2918:52;;;2966:1;2963;2956:12;2918:52;3005:9;2992:23;3024:31;3049:5;3024:31;:::i;:::-;3074:5;-1:-1:-1;3131:2:1;3116:18;;3103:32;3144:30;3103:32;3144:30;:::i;:::-;3193:7;3183:17;;;2824:382;;;;;:::o;3211:385::-;3297:6;3305;3313;3321;3374:3;3362:9;3353:7;3349:23;3345:33;3342:53;;;3391:1;3388;3381:12;3342:53;-1:-1:-1;;3414:23:1;;;3484:2;3469:18;;3456:32;;-1:-1:-1;3535:2:1;3520:18;;3507:32;;3586:2;3571:18;3558:32;;-1:-1:-1;3211:385:1;-1:-1:-1;3211:385:1:o;3790:247::-;3849:6;3902:2;3890:9;3881:7;3877:23;3873:32;3870:52;;;3918:1;3915;3908:12;3870:52;3957:9;3944:23;3976:31;4001:5;3976:31;:::i;4042:241::-;4098:6;4151:2;4139:9;4130:7;4126:23;4122:32;4119:52;;;4167:1;4164;4157:12;4119:52;4206:9;4193:23;4225:28;4247:5;4225:28;:::i;4288:388::-;4356:6;4364;4417:2;4405:9;4396:7;4392:23;4388:32;4385:52;;;4433:1;4430;4423:12;4385:52;4472:9;4459:23;4491:31;4516:5;4491:31;:::i;:::-;4541:5;-1:-1:-1;4598:2:1;4583:18;;4570:32;4611:33;4570:32;4611:33;:::i;4681:380::-;4760:1;4756:12;;;;4803;;;4824:61;;4878:4;4870:6;4866:17;4856:27;;4824:61;4931:2;4923:6;4920:14;4900:18;4897:38;4894:161;;4977:10;4972:3;4968:20;4965:1;4958:31;5012:4;5009:1;5002:15;5040:4;5037:1;5030:15;4894:161;;4681:380;;;:::o;5066:356::-;5268:2;5250:21;;;5287:18;;;5280:30;5346:34;5341:2;5326:18;;5319:62;5413:2;5398:18;;5066:356::o;5427:127::-;5488:10;5483:3;5479:20;5476:1;5469:31;5519:4;5516:1;5509:15;5543:4;5540:1;5533:15;5559:168;5632:9;;;5663;;5680:15;;;5674:22;;5660:37;5650:71;;5701:18;;:::i;5732:217::-;5772:1;5798;5788:132;;5842:10;5837:3;5833:20;5830:1;5823:31;5877:4;5874:1;5867:15;5905:4;5902:1;5895:15;5788:132;-1:-1:-1;5934:9:1;;5732:217::o;7540:125::-;7605:9;;;7626:10;;;7623:36;;;7639:18;;:::i;7670:251::-;7740:6;7793:2;7781:9;7772:7;7768:23;7764:32;7761:52;;;7809:1;7806;7799:12;7761:52;7841:9;7835:16;7860:31;7885:5;7860:31;:::i;8235:607::-;-1:-1:-1;;;;;8594:15:1;;;8576:34;;8641:2;8626:18;;8619:34;;;;8684:2;8669:18;;8662:34;;;;8727:2;8712:18;;8705:34;;;;8776:15;;;8770:3;8755:19;;8748:44;8556:3;8808:19;;8801:35;;;;8525:3;8510:19;;8235:607::o;8847:306::-;8935:6;8943;8951;9004:2;8992:9;8983:7;8979:23;8975:32;8972:52;;;9020:1;9017;9010:12;8972:52;9049:9;9043:16;9033:26;;9099:2;9088:9;9084:18;9078:25;9068:35;;9143:2;9132:9;9128:18;9122:25;9112:35;;8847:306;;;;;:::o;9437:245::-;9504:6;9557:2;9545:9;9536:7;9532:23;9528:32;9525:52;;;9573:1;9570;9563:12;9525:52;9605:9;9599:16;9624:28;9646:5;9624:28;:::i;10505:184::-;10575:6;10628:2;10616:9;10607:7;10603:23;10599:32;10596:52;;;10644:1;10641;10634:12;10596:52;-1:-1:-1;10667:16:1;;10505:184;-1:-1:-1;10505:184:1:o;12752:401::-;12954:2;12936:21;;;12993:2;12973:18;;;12966:30;13032:34;13027:2;13012:18;;13005:62;-1:-1:-1;;;13098:2:1;13083:18;;13076:35;13143:3;13128:19;;12752:401::o;13158:399::-;13360:2;13342:21;;;13399:2;13379:18;;;13372:30;13438:34;13433:2;13418:18;;13411:62;-1:-1:-1;;;13504:2:1;13489:18;;13482:33;13547:3;13532:19;;13158:399::o;15576:128::-;15643:9;;;15664:11;;;15661:37;;;15678:18;;:::i;17459:127::-;17520:10;17515:3;17511:20;17508:1;17501:31;17551:4;17548:1;17541:15;17575:4;17572:1;17565:15;17591:980;17853:4;17901:3;17890:9;17886:19;17932:6;17921:9;17914:25;17958:2;17996:6;17991:2;17980:9;17976:18;17969:34;18039:3;18034:2;18023:9;18019:18;18012:31;18063:6;18098;18092:13;18129:6;18121;18114:22;18167:3;18156:9;18152:19;18145:26;;18206:2;18198:6;18194:15;18180:29;;18227:1;18237:195;18251:6;18248:1;18245:13;18237:195;;;18316:13;;-1:-1:-1;;;;;18312:39:1;18300:52;;18407:15;;;;18372:12;;;;18348:1;18266:9;18237:195;;;-1:-1:-1;;;;;;;18488:32:1;;;;18483:2;18468:18;;18461:60;-1:-1:-1;;;18552:3:1;18537:19;18530:35;18449:3;17591:980;-1:-1:-1;;;17591:980:1:o
Swarm Source
ipfs://817f418ac1331ea467ef1dacab88604f1cd88c842f35b6fffb9d166f5e624f63
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.