Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 120 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 16729234 | 585 days ago | IN | 0 ETH | 0.00175213 | ||||
Approve | 16643165 | 597 days ago | IN | 0 ETH | 0.00187066 | ||||
Approve | 16637129 | 598 days ago | IN | 0 ETH | 0.00194799 | ||||
Approve | 16636959 | 598 days ago | IN | 0 ETH | 0.00229411 | ||||
Approve | 16636650 | 598 days ago | IN | 0 ETH | 0.0027175 | ||||
Approve | 16636426 | 598 days ago | IN | 0 ETH | 0.00278333 | ||||
Approve | 16636414 | 598 days ago | IN | 0 ETH | 0.00258349 | ||||
Approve | 16635432 | 598 days ago | IN | 0 ETH | 0.00221863 | ||||
Approve | 16634647 | 598 days ago | IN | 0 ETH | 0.001734 | ||||
Approve | 16632968 | 598 days ago | IN | 0 ETH | 0.00106294 | ||||
Approve | 16631669 | 599 days ago | IN | 0 ETH | 0.00164695 | ||||
Approve | 16631385 | 599 days ago | IN | 0 ETH | 0.00159037 | ||||
Approve | 16631167 | 599 days ago | IN | 0 ETH | 0.00172885 | ||||
Approve | 16630711 | 599 days ago | IN | 0 ETH | 0.00178614 | ||||
Approve | 16630613 | 599 days ago | IN | 0 ETH | 0.00218174 | ||||
Approve | 16630506 | 599 days ago | IN | 0 ETH | 0.0017823 | ||||
Approve | 16630497 | 599 days ago | IN | 0 ETH | 0.00176349 | ||||
Approve | 16630408 | 599 days ago | IN | 0 ETH | 0.00214262 | ||||
Approve | 16630369 | 599 days ago | IN | 0 ETH | 0.00231291 | ||||
Approve | 16630338 | 599 days ago | IN | 0 ETH | 0.00191291 | ||||
Approve | 16630309 | 599 days ago | IN | 0 ETH | 0.0011573 | ||||
Approve | 16630308 | 599 days ago | IN | 0 ETH | 0.00210542 | ||||
Approve | 16630286 | 599 days ago | IN | 0 ETH | 0.00228617 | ||||
Approve | 16630282 | 599 days ago | IN | 0 ETH | 0.00245197 | ||||
Approve | 16630275 | 599 days ago | IN | 0 ETH | 0.00217698 |
Latest 2 internal transactions
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
16630259 | 599 days ago | 0.0688 ETH | ||||
16630019 | 599 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Contract Name:
halfBLUR
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-02-14 */ /* https://t.me/halfblur_official */ // SPDX-License-Identifier: MIT pragma solidity 0.8.17; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); 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); } function _createInitialSupply(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, 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); } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() external virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface ILpPair { function sync() external; } interface IDexRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external; function swapExactETHForTokensSupportingFeeOnTransferTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable; function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external; function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity); function addLiquidity(address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline) external returns (uint amountA, uint amountB, uint liquidity); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); } interface IDexFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } contract TokenHandler is Ownable { function sendTokenToOwner(address token) external onlyOwner { if(IERC20(token).balanceOf(address(this)) > 0){ IERC20(token).transfer(owner(), IERC20(token).balanceOf(address(this))); } } } contract halfBLUR is ERC20, Ownable { uint256 public maxBuyAmount; uint256 public maxSellAmount; uint256 public maxWalletAmount; IDexRouter public immutable dexRouter; address public immutable lpPair; TokenHandler public immutable tokenHandler; bool private swapping; uint256 public swapTokensAtAmount; address public operationsAddress; address public marketingAddress; uint256 public tradingActiveBlock = 0; // 0 means trading is not active bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; // Anti-bot and anti-whale mappings and variables mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch bool public transferDelayEnabled = true; IERC20 public constant BLUR = IERC20(0x5283D291DBCF85356A21bA090E6db59121208b44); //Mainnet: 0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE uint256 public buyTotalFees; uint256 public buyOperationsFee; uint256 public buyMarketingFee; uint256 public buyLiquidityFee; uint256 public sellTotalFees; uint256 public sellOperationsFee; uint256 public sellMarketingFee; uint256 public sellLiquidityFee; uint256 public tokensForOperations; uint256 public tokensForMarketing; uint256 public tokensForLiquidity; bool public zeroTaxMode; /******************/ // exlcude from fees and max transaction amount mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) public _isExcludedMaxTransactionAmount; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount mapping (address => bool) public automatedMarketMakerPairs; event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event EnabledTrading(); event RemovedLimits(); event ExcludeFromFees(address indexed account, bool isExcluded); event UpdatedMaxBuyAmount(uint256 newAmount); event UpdatedMaxSellAmount(uint256 newAmount); event UpdatedMaxWalletAmount(uint256 newAmount); event UpdatedOperationsAddress(address indexed newWallet); event UpdatedMarketingAddress(address indexed newWallet); event MaxTransactionExclusion(address _address, bool excluded); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event TransferForeignToken(address token, uint256 amount); constructor() ERC20("halfBLUR", unicode"BLUR0.5") { address newOwner = msg.sender; // can leave alone if owner is deployer. IDexRouter _dexRouter = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); //uniswap router _excludeFromMaxTransaction(address(_dexRouter), true); dexRouter = _dexRouter; lpPair = IDexFactory(_dexRouter.factory()).createPair(address(this), address(BLUR)); _setAutomatedMarketMakerPair(address(lpPair), true); tokenHandler = new TokenHandler(); uint256 totalSupply = 1_000_000_000_000 * 1e18; maxBuyAmount = totalSupply * 2 / 100; maxSellAmount = totalSupply * 2 / 100; maxWalletAmount = totalSupply * 2 / 100; swapTokensAtAmount = totalSupply * 25 / 100000; // 0.025% swap amount buyOperationsFee = 14; buyMarketingFee = 14; buyLiquidityFee = 0; buyTotalFees = buyOperationsFee + buyMarketingFee + buyLiquidityFee; sellOperationsFee = 14; sellMarketingFee = 14; sellLiquidityFee = 0; sellTotalFees = sellOperationsFee + sellMarketingFee + sellLiquidityFee; zeroTaxMode = false; _excludeFromMaxTransaction(newOwner, true); _excludeFromMaxTransaction(address(this), true); _excludeFromMaxTransaction(address(0xdead), true); excludeFromFees(newOwner, true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); operationsAddress = address(0xBCd5E188a323e24b2B88409a2aF8fF452D21613F); marketingAddress = address(0xBCd5E188a323e24b2B88409a2aF8fF452D21613F); _createInitialSupply(newOwner, totalSupply); transferOwnership(newOwner); } receive() external payable {} // once enabled, can never be turned off function enableTrading() external onlyOwner { require(!tradingActive, "Cannot reenable trading"); tradingActive = true; swapEnabled = true; tradingActiveBlock = block.number; emit EnabledTrading(); } // remove limits after token is stable function removeLimits() external onlyOwner { limitsInEffect = false; transferDelayEnabled = false; emit RemovedLimits(); } // disable Transfer delay - cannot be reenabled function disableTransferDelay() external onlyOwner { transferDelayEnabled = false; } function updateMaxBuyAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set max buy amount lower than 0.1%"); maxBuyAmount = newNum * (10**18); emit UpdatedMaxBuyAmount(maxBuyAmount); } function updateMaxSellAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set max sell amount lower than 0.1%"); maxSellAmount = newNum * (10**18); emit UpdatedMaxSellAmount(maxSellAmount); } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 3 / 1000)/1e18, "Cannot set max wallet amount lower than 0.3%"); maxWalletAmount = newNum * (10**18); emit UpdatedMaxWalletAmount(maxWalletAmount); } // change the minimum amount of tokens to sell from fees function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner { require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply."); require(newAmount <= totalSupply() * 1 / 1000, "Swap amount cannot be higher than 0.1% total supply."); swapTokensAtAmount = newAmount; } function _excludeFromMaxTransaction(address updAds, bool isExcluded) private { _isExcludedMaxTransactionAmount[updAds] = isExcluded; emit MaxTransactionExclusion(updAds, isExcluded); } function airdrop(address[] memory wallets, uint256[] memory amountsInTokens) external onlyOwner { require(wallets.length == amountsInTokens.length, "arrays must be the same length"); require(wallets.length < 200, "Can only airdrop 200 wallets per txn due to gas limits"); for(uint256 i = 0; i < wallets.length; i++){ address wallet = wallets[i]; uint256 amount = amountsInTokens[i]*1e18; _transfer(msg.sender, wallet, amount); } } function excludeFromMaxTransaction(address updAds, bool isEx) external onlyOwner { if(!isEx){ require(updAds != lpPair, "Cannot remove uniswap pair from max txn"); } _isExcludedMaxTransactionAmount[updAds] = isEx; } function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner { require(pair != lpPair, "The pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; _excludeFromMaxTransaction(pair, value); emit SetAutomatedMarketMakerPair(pair, value); } function updateBuyFees(uint256 _operationsFee, uint256 _marketingFee, uint256 _liquidityFee) external onlyOwner { buyOperationsFee = _operationsFee; buyMarketingFee = _marketingFee; buyLiquidityFee = _liquidityFee; buyTotalFees = buyOperationsFee + buyMarketingFee + buyLiquidityFee; } function updateSellFees(uint256 _operationsFee, uint256 _marketingFee, uint256 _liquidityFee) external onlyOwner { sellOperationsFee = _operationsFee; sellMarketingFee = _marketingFee; sellLiquidityFee = _liquidityFee; sellTotalFees = sellOperationsFee + sellMarketingFee + sellLiquidityFee; } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } 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"); require(amount > 0, "amount must be greater than 0"); if(limitsInEffect){ if (from != owner() && to != owner() && to != address(0) && to != address(0xdead)){ if(!tradingActive){ require(_isExcludedMaxTransactionAmount[from] || _isExcludedMaxTransactionAmount[to], "Trading is not active."); } // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch. if (transferDelayEnabled){ if (to != address(dexRouter) && to != address(lpPair)){ require(_holderLastTransferTimestamp[tx.origin] < block.number - 4 && _holderLastTransferTimestamp[to] < block.number - 4, "_transfer:: Transfer Delay enabled. Try again later."); _holderLastTransferTimestamp[tx.origin] = block.number; _holderLastTransferTimestamp[to] = block.number; } } //when buy if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxBuyAmount, "Buy transfer amount exceeds the max buy."); require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet"); } //when sell else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxSellAmount, "Sell transfer amount exceeds the max sell."); } else if (!_isExcludedMaxTransactionAmount[to] && !_isExcludedMaxTransactionAmount[from]){ require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet"); } } } 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 = true; // if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; uint256 penaltyAmount = 0; // only take fees on buys/sells, do not take on wallet transfers if(takeFee && !zeroTaxMode){ // on sell if (automatedMarketMakerPairs[to] && sellTotalFees > 0){ fees = amount * sellTotalFees /100; tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees; tokensForOperations += fees * sellOperationsFee / sellTotalFees; tokensForMarketing += fees * sellMarketingFee / sellTotalFees; } // on buy else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount * buyTotalFees / 100; tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees; tokensForOperations += fees * buyOperationsFee / buyTotalFees; tokensForMarketing += fees * buyMarketingFee / buyTotalFees; } if(fees > 0){ super._transfer(from, address(this), fees); } amount -= fees + penaltyAmount; } super._transfer(from, to, amount); } function addLiquidity(uint256 tokenAmount, uint256 blurAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(dexRouter), tokenAmount); BLUR.approve(address(dexRouter), blurAmount); // add the liquidity dexRouter.addLiquidity(address(this), address(BLUR), tokenAmount, blurAmount, 0, 0, address(this), block.timestamp); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForOperations + tokensForMarketing; if(contractBalance == 0 || totalTokensToSwap == 0) {return;} if(contractBalance > swapTokensAtAmount * 10){ contractBalance = swapTokensAtAmount * 10; } // Halve the amount of liquidity tokens uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2; swapTokensForBLUR(contractBalance - liquidityTokens); tokenHandler.sendTokenToOwner(address(BLUR)); uint256 blurBalance = BLUR.balanceOf(address(this)); uint256 blurForLiquidity = blurBalance; uint256 blurForOperations = blurBalance * tokensForOperations / (totalTokensToSwap - (tokensForLiquidity/2)); uint256 blurForMarketing = blurBalance * tokensForMarketing / (totalTokensToSwap - (tokensForLiquidity/2)); blurForLiquidity -= blurForOperations + blurForMarketing; tokensForLiquidity = 0; tokensForOperations = 0; tokensForMarketing = 0; if(liquidityTokens > 0 && blurForLiquidity > 0){ addLiquidity(liquidityTokens, blurForLiquidity); } if(BLUR.balanceOf(address(this)) > 0){ BLUR.transfer(operationsAddress, BLUR.balanceOf(address(this))); } } function swapTokensForBLUR(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = address(BLUR); _approve(address(this), address(dexRouter), tokenAmount); // make the swap dexRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(tokenHandler), block.timestamp ); } function withdrawStuckForeignTokens(address _token, address _to) external onlyOwner returns (bool _sent) { require(_token != address(0), "_token address cannot be 0"); require(_token != address(this), "Can't withdraw native tokens"); uint256 _contractBalance = IERC20(_token).balanceOf(address(this)); _sent = IERC20(_token).transfer(_to, _contractBalance); emit TransferForeignToken(_token, _contractBalance); } // withdraw ETH if stuck or someone sends to the address function withdrawStuckETH() external onlyOwner { bool success; (success,) = address(msg.sender).call{value: address(this).balance}(""); } function setOperationsAddress(address _operationsAddress) external onlyOwner { require(_operationsAddress != address(0), "_operationsAddress address cannot be 0"); operationsAddress = payable(_operationsAddress); emit UpdatedOperationsAddress(_operationsAddress); } function setMarketingAddress(address _marketingAddress) external onlyOwner { require(_marketingAddress != address(0), "_marketingAddress address cannot be 0"); marketingAddress = payable(_marketingAddress); emit UpdatedMarketingAddress(_marketingAddress); } function setZeroTaxMode(bool _zeroTaxMode) external onlyOwner { zeroTaxMode = _zeroTaxMode; } }
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":[],"name":"EnabledTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","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":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedMarketingAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedOperationsAddress","type":"event"},{"inputs":[],"name":"BLUR","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"uint256[]","name":"amountsInTokens","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","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":"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":"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":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","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":"operationsAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingAddress","type":"address"}],"name":"setMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operationsAddress","type":"address"}],"name":"setOperationsAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_zeroTaxMode","type":"bool"}],"name":"setZeroTaxMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenHandler","outputs":[{"internalType":"contract TokenHandler","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForOperations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","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":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"withdrawStuckForeignTokens","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"zeroTaxMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60e06040526000600d55600e805462ffffff191660019081179091556010805460ff191690911790553480156200003557600080fd5b50604051806040016040528060088152602001673430b63321262aa960c11b81525060405180604001604052806007815260200166424c5552302e3560c81b815250816003908162000088919062000807565b50600462000097828262000807565b5050506000620000ac620003f160201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000906000805160206200453d833981519152908290a35033737a250d5630b4cf539739df2c5dacb4c659f2488d6200010c816001620003f5565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000157573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200017d9190620008d3565b6040516364e329cb60e11b8152306004820152735283d291dbcf85356a21ba090e6db59121208b4460248201526001600160a01b03919091169063c9c65396906044016020604051808303816000875af1158015620001e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002069190620008d3565b6001600160a01b031660a08190526200022190600162000458565b6040516200022f9062000754565b604051809103906000f0801580156200024c573d6000803e3d6000fd5b506001600160a01b031660c0526c0c9f2c9cd04674edea400000006064620002768260026200091b565b6200028291906200093b565b6006556064620002948260026200091b565b620002a091906200093b565b6007556064620002b28260026200091b565b620002be91906200093b565b600855620186a0620002d28260196200091b565b620002de91906200093b565b600a55600e6012819055601381905560006014819055906200030190806200095e565b6200030d91906200095e565b601155600e6016819055601781905560006018819055906200033090806200095e565b6200033c91906200095e565b601555601c805460ff1916905562000356836001620003f5565b62000363306001620003f5565b6200037261dead6001620003f5565b6200037f836001620004c4565b6200038c306001620004c4565b6200039b61dead6001620004c4565b600b805473bcd5e188a323e24b2b88409a2af8ff452d21613f6001600160a01b03199182168117909255600c80549091169091179055620003dd838262000572565b620003e88362000657565b50505062000974565b3390565b6001600160a01b0382166000818152601e6020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6001600160a01b0382166000908152601f60205260409020805460ff1916821515179055620004888282620003f5565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6005546001600160a01b03163314620005135760405162461bcd60e51b815260206004820181905260248201526000805160206200451d83398151915260448201526064015b60405180910390fd5b6001600160a01b0382166000818152601d6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620005ca5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016200050a565b8060026000828254620005de91906200095e565b90915550506001600160a01b038216600090815260208190526040812080548392906200060d9084906200095e565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b03163314620006a25760405162461bcd60e51b815260206004820181905260248201526000805160206200451d83398151915260448201526064016200050a565b6001600160a01b038116620007095760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016200050a565b6005546040516001600160a01b038084169216906000805160206200453d83398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6104d6806200404783390190565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200078d57607f821691505b602082108103620007ae57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200080257600081815260208120601f850160051c81016020861015620007dd5750805b601f850160051c820191505b81811015620007fe57828155600101620007e9565b5050505b505050565b81516001600160401b0381111562000823576200082362000762565b6200083b8162000834845462000778565b84620007b4565b602080601f8311600181146200087357600084156200085a5750858301515b600019600386901b1c1916600185901b178555620007fe565b600085815260208120601f198616915b82811015620008a45788860151825594840194600190910190840162000883565b5085821015620008c35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620008e657600080fd5b81516001600160a01b0381168114620008fe57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141762000935576200093562000905565b92915050565b6000826200095957634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562000935576200093562000905565b60805160a05160c051613656620009f1600039600081816104d0015281816128710152612e460152600081816105980152818161112001528181611405015261207a0152600081816103ef0152818161203d01528181612dd601528181612e1201528181612eac01528181612ee80152612fce01526136566000f3fe6080604052600436106103a65760003560e01c8063906e9dd0116101e7578063c876d0b91161010d578063e884f260116100a0578063f2fde38b1161006f578063f2fde38b14610aca578063f5648a4f14610aea578063f637434214610aff578063fb002c9714610b1557600080fd5b8063e884f26014610a69578063ea4cfe1214610a7e578063ee40166e14610a9e578063f11a24d314610ab457600080fd5b8063d85ba063116100dc578063d85ba063146109d7578063dc3f0d0f146109ed578063dd62ed3e14610a0d578063e2f4560514610a5357600080fd5b8063c876d0b91461095b578063d257b34f14610975578063d5414ee914610995578063d7984257146109bd57600080fd5b8063aa4bde2811610185578063bbc0c74211610154578063bbc0c742146108dc578063c0246668146108fb578063c17b5b8c1461091b578063c18bc1951461093b57600080fd5b8063aa4bde2814610856578063b3bcca551461086c578063b561fe611461088c578063b62496f5146108ac57600080fd5b80639a7a23d6116101c15780639a7a23d6146107d6578063a457c2d7146107f6578063a5ece94114610816578063a9059cbb1461083657600080fd5b8063906e9dd01461078b57806392136913146107ab57806395d89b41146107c157600080fd5b80634f77f6c0116102cc578063715018a61161026a5780638095d564116102395780638095d5641461072257806388e765ff146107425780638a8c523c146107585780638da5cb5b1461076d57600080fd5b8063715018a6146106c2578063751039fc146106d75780637571336a146106ec5780637bce5a041461070c57600080fd5b806367243482116102a657806367243482146106365780636a486a8e146106565780636ddd17131461066c57806370a082311461068c57600080fd5b80634f77f6c0146105f45780635a139dd41461060a57806366d602ae1461062057600080fd5b80631f3fed8f1161034457806339509351116103135780633950935114610566578063452ed4f114610586578063499b8394146105ba5780634a62bb65146105da57600080fd5b80631f3fed8f146104f257806323b872dd146105085780632be32b6114610528578063313ce5671461054a57600080fd5b806310d5de531161038057806310d5de531461045957806318160ddd146104895780631a8145bb146104a85780631b3d6e87146104be57600080fd5b806306fdde03146103b25780630758d924146103dd578063095ea7b31461042957600080fd5b366103ad57005b600080fd5b3480156103be57600080fd5b506103c7610b2b565b6040516103d4919061304b565b60405180910390f35b3480156103e957600080fd5b506104117f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103d4565b34801561043557600080fd5b506104496104443660046130b5565b610bbd565b60405190151581526020016103d4565b34801561046557600080fd5b506104496104743660046130df565b601e6020526000908152604090205460ff1681565b34801561049557600080fd5b506002545b6040519081526020016103d4565b3480156104b457600080fd5b5061049a601b5481565b3480156104ca57600080fd5b506104117f000000000000000000000000000000000000000000000000000000000000000081565b3480156104fe57600080fd5b5061049a601a5481565b34801561051457600080fd5b50610449610523366004613101565b610bd4565b34801561053457600080fd5b5061054861054336600461313d565b610c83565b005b34801561055657600080fd5b50604051601281526020016103d4565b34801561057257600080fd5b506104496105813660046130b5565b610d90565b34801561059257600080fd5b506104117f000000000000000000000000000000000000000000000000000000000000000081565b3480156105c657600080fd5b506105486105d53660046130df565b610dcc565b3480156105e657600080fd5b50600e546104499060ff1681565b34801561060057600080fd5b5061049a60165481565b34801561061657600080fd5b5061049a60125481565b34801561062c57600080fd5b5061049a60075481565b34801561064257600080fd5b5061054861065136600461322c565b610ea5565b34801561066257600080fd5b5061049a60155481565b34801561067857600080fd5b50600e546104499062010000900460ff1681565b34801561069857600080fd5b5061049a6106a73660046130df565b6001600160a01b031660009081526020819052604090205490565b3480156106ce57600080fd5b50610548611010565b3480156106e357600080fd5b50610548611084565b3480156106f857600080fd5b506105486107073660046132fd565b6110ef565b34801561071857600080fd5b5061049a60135481565b34801561072e57600080fd5b5061054861073d366004613334565b6111da565b34801561074e57600080fd5b5061049a60065481565b34801561076457600080fd5b50610548611230565b34801561077957600080fd5b506005546001600160a01b0316610411565b34801561079757600080fd5b506105486107a63660046130df565b6112f2565b3480156107b757600080fd5b5061049a60175481565b3480156107cd57600080fd5b506103c76113ca565b3480156107e257600080fd5b506105486107f13660046132fd565b6113d9565b34801561080257600080fd5b506104496108113660046130b5565b6114b8565b34801561082257600080fd5b50600c54610411906001600160a01b031681565b34801561084257600080fd5b506104496108513660046130b5565b611551565b34801561086257600080fd5b5061049a60085481565b34801561087857600080fd5b50610449610887366004613360565b61155e565b34801561089857600080fd5b506105486108a7366004613393565b611767565b3480156108b857600080fd5b506104496108c73660046130df565b601f6020526000908152604090205460ff1681565b3480156108e857600080fd5b50600e5461044990610100900460ff1681565b34801561090757600080fd5b506105486109163660046132fd565b6117a4565b34801561092757600080fd5b50610548610936366004613334565b61182d565b34801561094757600080fd5b5061054861095636600461313d565b611883565b34801561096757600080fd5b506010546104499060ff1681565b34801561098157600080fd5b5061054861099036600461313d565b61198c565b3480156109a157600080fd5b50610411735283d291dbcf85356a21ba090e6db59121208b4481565b3480156109c957600080fd5b50601c546104499060ff1681565b3480156109e357600080fd5b5061049a60115481565b3480156109f957600080fd5b50610548610a0836600461313d565b611ad7565b348015610a1957600080fd5b5061049a610a28366004613360565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610a5f57600080fd5b5061049a600a5481565b348015610a7557600080fd5b50610548611bde565b348015610a8a57600080fd5b50600b54610411906001600160a01b031681565b348015610aaa57600080fd5b5061049a600d5481565b348015610ac057600080fd5b5061049a60145481565b348015610ad657600080fd5b50610548610ae53660046130df565b611c14565b348015610af657600080fd5b50610548611cff565b348015610b0b57600080fd5b5061049a60185481565b348015610b2157600080fd5b5061049a60195481565b606060038054610b3a906133b0565b80601f0160208091040260200160405190810160405280929190818152602001828054610b66906133b0565b8015610bb35780601f10610b8857610100808354040283529160200191610bb3565b820191906000526020600020905b815481529060010190602001808311610b9657829003601f168201915b5050505050905090565b6000610bca338484611d76565b5060015b92915050565b6000610be1848484611e9a565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610c6b5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b610c788533858403611d76565b506001949350505050565b6005546001600160a01b03163314610cad5760405162461bcd60e51b8152600401610c62906133ea565b670de0b6b3a76400006103e8610cc260025490565b610ccd906001613435565b610cd7919061344c565b610ce1919061344c565b811015610d425760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e312560b81b6064820152608401610c62565b610d5481670de0b6b3a7640000613435565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610bca918590610dc790869061346e565b611d76565b6005546001600160a01b03163314610df65760405162461bcd60e51b8152600401610c62906133ea565b6001600160a01b038116610e5b5760405162461bcd60e51b815260206004820152602660248201527f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60448201526507420626520360d41b6064820152608401610c62565b600b80546001600160a01b0319166001600160a01b0383169081179091556040517f4efa56652237561d0f1fd31311aeaaa41f3b754a461545ed3cf6ced5876d298290600090a250565b6005546001600160a01b03163314610ecf5760405162461bcd60e51b8152600401610c62906133ea565b8051825114610f205760405162461bcd60e51b815260206004820152601e60248201527f617272617973206d757374206265207468652073616d65206c656e67746800006044820152606401610c62565b60c8825110610f905760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203230302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b6064820152608401610c62565b60005b825181101561100b576000838281518110610fb057610fb0613481565b602002602001015190506000838381518110610fce57610fce613481565b6020026020010151670de0b6b3a7640000610fe99190613435565b9050610ff6338383611e9a565b5050808061100390613497565b915050610f93565b505050565b6005546001600160a01b0316331461103a5760405162461bcd60e51b8152600401610c62906133ea565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146110ae5760405162461bcd60e51b8152600401610c62906133ea565b600e805460ff199081169091556010805490911690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6005546001600160a01b031633146111195760405162461bcd60e51b8152600401610c62906133ea565b806111af577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036111af5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610c62565b6001600160a01b03919091166000908152601e60205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146112045760405162461bcd60e51b8152600401610c62906133ea565b6012839055601382905560148190558061121e838561346e565b611228919061346e565b601155505050565b6005546001600160a01b0316331461125a5760405162461bcd60e51b8152600401610c62906133ea565b600e54610100900460ff16156112b25760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610c62565b600e805462ffff0019166201010017905543600d556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb790600090a1565b6005546001600160a01b0316331461131c5760405162461bcd60e51b8152600401610c62906133ea565b6001600160a01b0381166113805760405162461bcd60e51b815260206004820152602560248201527f5f6d61726b6574696e674164647265737320616464726573732063616e6e6f74604482015264020626520360dc1b6064820152608401610c62565b600c80546001600160a01b0319166001600160a01b0383169081179091556040517fd1e7d6a3390dd5008bd1c57798817b9f806e4c417264e7d3d67e42e784dc24a990600090a250565b606060048054610b3a906133b0565b6005546001600160a01b031633146114035760405162461bcd60e51b8152600401610c62906133ea565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036114aa5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610c62565b6114b48282612738565b5050565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561153a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610c62565b6115473385858403611d76565b5060019392505050565b6000610bca338484611e9a565b6005546000906001600160a01b0316331461158b5760405162461bcd60e51b8152600401610c62906133ea565b6001600160a01b0383166115e15760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610c62565b306001600160a01b038416036116395760405162461bcd60e51b815260206004820152601c60248201527f43616e2774207769746864726177206e617469766520746f6b656e73000000006044820152606401610c62565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa158015611680573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a491906134b0565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af11580156116f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171b91906134c9565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b6005546001600160a01b031633146117915760405162461bcd60e51b8152600401610c62906133ea565b601c805460ff1916911515919091179055565b6005546001600160a01b031633146117ce5760405162461bcd60e51b8152600401610c62906133ea565b6001600160a01b0382166000818152601d6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146118575760405162461bcd60e51b8152600401610c62906133ea565b60168390556017829055601881905580611871838561346e565b61187b919061346e565b601555505050565b6005546001600160a01b031633146118ad5760405162461bcd60e51b8152600401610c62906133ea565b670de0b6b3a76400006103e86118c260025490565b6118cd906003613435565b6118d7919061344c565b6118e1919061344c565b8110156119455760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e332560a01b6064820152608401610c62565b61195781670de0b6b3a7640000613435565b60088190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc90602001610d85565b6005546001600160a01b031633146119b65760405162461bcd60e51b8152600401610c62906133ea565b620186a06119c360025490565b6119ce906001613435565b6119d8919061344c565b811015611a455760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610c62565b6103e8611a5160025490565b611a5c906001613435565b611a66919061344c565b811115611ad25760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610c62565b600a55565b6005546001600160a01b03163314611b015760405162461bcd60e51b8152600401610c62906133ea565b670de0b6b3a76400006103e8611b1660025490565b611b21906001613435565b611b2b919061344c565b611b35919061344c565b811015611b975760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e312560b01b6064820152608401610c62565b611ba981670de0b6b3a7640000613435565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610d85565b6005546001600160a01b03163314611c085760405162461bcd60e51b8152600401610c62906133ea565b6010805460ff19169055565b6005546001600160a01b03163314611c3e5760405162461bcd60e51b8152600401610c62906133ea565b6001600160a01b038116611ca35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c62565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314611d295760405162461bcd60e51b8152600401610c62906133ea565b604051600090339047908381818185875af1925050503d8060008114611d6b576040519150601f19603f3d011682016040523d82523d6000602084013e611d70565b606091505b50505050565b6001600160a01b038316611dd85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c62565b6001600160a01b038216611e395760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c62565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611ec05760405162461bcd60e51b8152600401610c62906134e6565b6001600160a01b038216611ee65760405162461bcd60e51b8152600401610c629061352b565b60008111611f365760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610c62565b600e5460ff161561240a576005546001600160a01b03848116911614801590611f6d57506005546001600160a01b03838116911614155b8015611f8157506001600160a01b03821615155b8015611f9857506001600160a01b03821661dead14155b1561240a57600e54610100900460ff16612030576001600160a01b0383166000908152601e602052604090205460ff1680611feb57506001600160a01b0382166000908152601e602052604090205460ff165b6120305760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610c62565b60105460ff161561218c577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316141580156120af57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b1561218c576120bf60044361356e565b326000908152600f60205260409020541080156120fd57506120e260044361356e565b6001600160a01b0383166000908152600f6020526040902054105b6121675760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b6064820152608401610c62565b326000908152600f602052604080822043908190556001600160a01b03851683529120555b6001600160a01b0383166000908152601f602052604090205460ff1680156121cd57506001600160a01b0382166000908152601e602052604090205460ff16155b156122a9576006548111156122355760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610c62565b6008546001600160a01b03831660009081526020819052604090205461225b908361346e565b11156122a45760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610c62565b61240a565b6001600160a01b0382166000908152601f602052604090205460ff1680156122ea57506001600160a01b0383166000908152601e602052604090205460ff16155b15612354576007548111156122a45760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610c62565b6001600160a01b0382166000908152601e602052604090205460ff1615801561239657506001600160a01b0383166000908152601e602052604090205460ff16155b1561240a576008546001600160a01b0383166000908152602081905260409020546123c1908361346e565b111561240a5760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610c62565b30600090815260208190526040902054600a54811080159081906124365750600e5462010000900460ff165b8015612445575060095460ff16155b801561246a57506001600160a01b0385166000908152601f602052604090205460ff16155b801561248f57506001600160a01b0385166000908152601d602052604090205460ff16155b80156124b457506001600160a01b0384166000908152601d602052604090205460ff16155b156124d9576009805460ff191660011790556124ce6127a2565b6009805460ff191690555b6001600160a01b0385166000908152601d602052604090205460019060ff168061251b57506001600160a01b0385166000908152601d602052604090205460ff165b15612524575060005b6000808280156125375750601c5460ff16155b15612723576001600160a01b0387166000908152601f602052604090205460ff16801561256657506000601554115b1561261e5760646015548761257b9190613435565b612585919061344c565b9150601554601854836125989190613435565b6125a2919061344c565b601b60008282546125b3919061346e565b90915550506015546016546125c89084613435565b6125d2919061344c565b601960008282546125e3919061346e565b90915550506015546017546125f89084613435565b612602919061344c565b601a6000828254612613919061346e565b909155506126fb9050565b6001600160a01b0388166000908152601f602052604090205460ff16801561264857506000601154115b156126fb5760646011548761265d9190613435565b612667919061344c565b91506011546014548361267a9190613435565b612684919061344c565b601b6000828254612695919061346e565b90915550506011546012546126aa9084613435565b6126b4919061344c565b601960008282546126c5919061346e565b90915550506011546013546126da9084613435565b6126e4919061344c565b601a60008282546126f5919061346e565b90915550505b811561270c5761270c883084612b7b565b612716818361346e565b612720908761356e565b95505b61272e888888612b7b565b5050505050505050565b6001600160a01b0382166000908152601f60205260409020805460ff19168215151790556127668282612cd0565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b3060009081526020819052604081205490506000601a54601954601b546127c9919061346e565b6127d3919061346e565b90508115806127e0575080155b156127e9575050565b600a80546127f691613435565b82111561280d57600a805461280a91613435565b91505b6000600282601b54856128209190613435565b61282a919061344c565b612834919061344c565b9050612848612843828561356e565b612d33565b6040516304fa881160e21b8152735283d291dbcf85356a21ba090e6db59121208b4460048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906313ea204490602401600060405180830381600087803b1580156128bd57600080fd5b505af11580156128d1573d6000803e3d6000fd5b50506040516370a0823160e01b815230600482015260009250735283d291dbcf85356a21ba090e6db59121208b4491506370a0823190602401602060405180830381865afa158015612927573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061294b91906134b0565b9050600081905060006002601b54612963919061344c565b61296d908661356e565b60195461297a9085613435565b612984919061344c565b905060006002601b54612997919061344c565b6129a1908761356e565b601a546129ae9086613435565b6129b8919061344c565b90506129c4818361346e565b6129ce908461356e565b6000601b8190556019819055601a55925084158015906129ee5750600083115b156129fd576129fd8584612ea6565b6040516370a0823160e01b8152306004820152600090735283d291dbcf85356a21ba090e6db59121208b44906370a0823190602401602060405180830381865afa158015612a4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a7391906134b0565b1115612b7257600b546040516370a0823160e01b8152306004820152735283d291dbcf85356a21ba090e6db59121208b449163a9059cbb916001600160a01b039091169083906370a0823190602401602060405180830381865afa158015612adf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0391906134b0565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015612b4e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061272e91906134c9565b50505050505050565b6001600160a01b038316612ba15760405162461bcd60e51b8152600401610c62906134e6565b6001600160a01b038216612bc75760405162461bcd60e51b8152600401610c629061352b565b6001600160a01b03831660009081526020819052604090205481811015612c3f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610c62565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612c7690849061346e565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612cc291815260200190565b60405180910390a350505050565b6001600160a01b0382166000818152601e6020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612d6857612d68613481565b60200260200101906001600160a01b031690816001600160a01b031681525050735283d291dbcf85356a21ba090e6db59121208b4481600181518110612db057612db0613481565b60200260200101906001600160a01b031690816001600160a01b031681525050612dfb307f000000000000000000000000000000000000000000000000000000000000000084611d76565b604051635c11d79560e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635c11d79590612e7090859060009086907f0000000000000000000000000000000000000000000000000000000000000000904290600401613581565b600060405180830381600087803b158015612e8a57600080fd5b505af1158015612e9e573d6000803e3d6000fd5b505050505050565b612ed1307f000000000000000000000000000000000000000000000000000000000000000084611d76565b60405163095ea7b360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015260248101829052735283d291dbcf85356a21ba090e6db59121208b449063095ea7b3906044016020604051808303816000875af1158015612f52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f7691906134c9565b5060405162e8e33760e81b81523060048201819052735283d291dbcf85356a21ba090e6db59121208b446024830152604482018490526064820183905260006084830181905260a483015260c48201524260e48201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e8e3370090610104016060604051808303816000875af1158015613020573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061304491906135f2565b5050505050565b600060208083528351808285015260005b818110156130785785810183015185820160400152820161305c565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146130b057600080fd5b919050565b600080604083850312156130c857600080fd5b6130d183613099565b946020939093013593505050565b6000602082840312156130f157600080fd5b6130fa82613099565b9392505050565b60008060006060848603121561311657600080fd5b61311f84613099565b925061312d60208501613099565b9150604084013590509250925092565b60006020828403121561314f57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561319557613195613156565b604052919050565b600067ffffffffffffffff8211156131b7576131b7613156565b5060051b60200190565b600082601f8301126131d257600080fd5b813560206131e76131e28361319d565b61316c565b82815260059290921b8401810191818101908684111561320657600080fd5b8286015b84811015613221578035835291830191830161320a565b509695505050505050565b6000806040838503121561323f57600080fd5b823567ffffffffffffffff8082111561325757600080fd5b818501915085601f83011261326b57600080fd5b8135602061327b6131e28361319d565b82815260059290921b8401810191818101908984111561329a57600080fd5b948201945b838610156132bf576132b086613099565b8252948201949082019061329f565b965050860135925050808211156132d557600080fd5b506132e2858286016131c1565b9150509250929050565b80151581146132fa57600080fd5b50565b6000806040838503121561331057600080fd5b61331983613099565b91506020830135613329816132ec565b809150509250929050565b60008060006060848603121561334957600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561337357600080fd5b61337c83613099565b915061338a60208401613099565b90509250929050565b6000602082840312156133a557600080fd5b81356130fa816132ec565b600181811c908216806133c457607f821691505b6020821081036133e457634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610bce57610bce61341f565b60008261346957634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610bce57610bce61341f565b634e487b7160e01b600052603260045260246000fd5b6000600182016134a9576134a961341f565b5060010190565b6000602082840312156134c257600080fd5b5051919050565b6000602082840312156134db57600080fd5b81516130fa816132ec565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610bce57610bce61341f565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156135d15784516001600160a01b0316835293830193918301916001016135ac565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561360757600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122053b44181aaad6a10fc7ce49abe51d9253f57393f7ce7785e9144139c9e17f9a664736f6c63430008110033608060405234801561001057600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610475806100616000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806313ea204414610051578063715018a6146100665780638da5cb5b1461006e578063f2fde38b1461008d575b600080fd5b61006461005f36600461039f565b6100a0565b005b610064610241565b600054604080516001600160a01b039092168252519081900360200190f35b61006461009b36600461039f565b6102b5565b6000546001600160a01b031633146100d35760405162461bcd60e51b81526004016100ca906103cf565b60405180910390fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa15801561011a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061013e9190610404565b111561023e57806001600160a01b031663a9059cbb6101656000546001600160a01b031690565b6040516370a0823160e01b81523060048201526001600160a01b038516906370a0823190602401602060405180830381865afa1580156101a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101cd9190610404565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610218573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061023c919061041d565b505b50565b6000546001600160a01b0316331461026b5760405162461bcd60e51b81526004016100ca906103cf565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146102df5760405162461bcd60e51b81526004016100ca906103cf565b6001600160a01b0381166103445760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016100ca565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000602082840312156103b157600080fd5b81356001600160a01b03811681146103c857600080fd5b9392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561041657600080fd5b5051919050565b60006020828403121561042f57600080fd5b815180151581146103c857600080fdfea26469706673582212208b6ef77c99515a81f260c988fc8cbd88a122f0df7be111323599e0ab1eeb7dfa64736f6c634300081100334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
Deployed Bytecode
0x6080604052600436106103a65760003560e01c8063906e9dd0116101e7578063c876d0b91161010d578063e884f260116100a0578063f2fde38b1161006f578063f2fde38b14610aca578063f5648a4f14610aea578063f637434214610aff578063fb002c9714610b1557600080fd5b8063e884f26014610a69578063ea4cfe1214610a7e578063ee40166e14610a9e578063f11a24d314610ab457600080fd5b8063d85ba063116100dc578063d85ba063146109d7578063dc3f0d0f146109ed578063dd62ed3e14610a0d578063e2f4560514610a5357600080fd5b8063c876d0b91461095b578063d257b34f14610975578063d5414ee914610995578063d7984257146109bd57600080fd5b8063aa4bde2811610185578063bbc0c74211610154578063bbc0c742146108dc578063c0246668146108fb578063c17b5b8c1461091b578063c18bc1951461093b57600080fd5b8063aa4bde2814610856578063b3bcca551461086c578063b561fe611461088c578063b62496f5146108ac57600080fd5b80639a7a23d6116101c15780639a7a23d6146107d6578063a457c2d7146107f6578063a5ece94114610816578063a9059cbb1461083657600080fd5b8063906e9dd01461078b57806392136913146107ab57806395d89b41146107c157600080fd5b80634f77f6c0116102cc578063715018a61161026a5780638095d564116102395780638095d5641461072257806388e765ff146107425780638a8c523c146107585780638da5cb5b1461076d57600080fd5b8063715018a6146106c2578063751039fc146106d75780637571336a146106ec5780637bce5a041461070c57600080fd5b806367243482116102a657806367243482146106365780636a486a8e146106565780636ddd17131461066c57806370a082311461068c57600080fd5b80634f77f6c0146105f45780635a139dd41461060a57806366d602ae1461062057600080fd5b80631f3fed8f1161034457806339509351116103135780633950935114610566578063452ed4f114610586578063499b8394146105ba5780634a62bb65146105da57600080fd5b80631f3fed8f146104f257806323b872dd146105085780632be32b6114610528578063313ce5671461054a57600080fd5b806310d5de531161038057806310d5de531461045957806318160ddd146104895780631a8145bb146104a85780631b3d6e87146104be57600080fd5b806306fdde03146103b25780630758d924146103dd578063095ea7b31461042957600080fd5b366103ad57005b600080fd5b3480156103be57600080fd5b506103c7610b2b565b6040516103d4919061304b565b60405180910390f35b3480156103e957600080fd5b506104117f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016103d4565b34801561043557600080fd5b506104496104443660046130b5565b610bbd565b60405190151581526020016103d4565b34801561046557600080fd5b506104496104743660046130df565b601e6020526000908152604090205460ff1681565b34801561049557600080fd5b506002545b6040519081526020016103d4565b3480156104b457600080fd5b5061049a601b5481565b3480156104ca57600080fd5b506104117f00000000000000000000000077c2eba3bb05401b350113b2383e38755293169b81565b3480156104fe57600080fd5b5061049a601a5481565b34801561051457600080fd5b50610449610523366004613101565b610bd4565b34801561053457600080fd5b5061054861054336600461313d565b610c83565b005b34801561055657600080fd5b50604051601281526020016103d4565b34801561057257600080fd5b506104496105813660046130b5565b610d90565b34801561059257600080fd5b506104117f0000000000000000000000001046101a40195e040b2dd343d866f3a296552dcb81565b3480156105c657600080fd5b506105486105d53660046130df565b610dcc565b3480156105e657600080fd5b50600e546104499060ff1681565b34801561060057600080fd5b5061049a60165481565b34801561061657600080fd5b5061049a60125481565b34801561062c57600080fd5b5061049a60075481565b34801561064257600080fd5b5061054861065136600461322c565b610ea5565b34801561066257600080fd5b5061049a60155481565b34801561067857600080fd5b50600e546104499062010000900460ff1681565b34801561069857600080fd5b5061049a6106a73660046130df565b6001600160a01b031660009081526020819052604090205490565b3480156106ce57600080fd5b50610548611010565b3480156106e357600080fd5b50610548611084565b3480156106f857600080fd5b506105486107073660046132fd565b6110ef565b34801561071857600080fd5b5061049a60135481565b34801561072e57600080fd5b5061054861073d366004613334565b6111da565b34801561074e57600080fd5b5061049a60065481565b34801561076457600080fd5b50610548611230565b34801561077957600080fd5b506005546001600160a01b0316610411565b34801561079757600080fd5b506105486107a63660046130df565b6112f2565b3480156107b757600080fd5b5061049a60175481565b3480156107cd57600080fd5b506103c76113ca565b3480156107e257600080fd5b506105486107f13660046132fd565b6113d9565b34801561080257600080fd5b506104496108113660046130b5565b6114b8565b34801561082257600080fd5b50600c54610411906001600160a01b031681565b34801561084257600080fd5b506104496108513660046130b5565b611551565b34801561086257600080fd5b5061049a60085481565b34801561087857600080fd5b50610449610887366004613360565b61155e565b34801561089857600080fd5b506105486108a7366004613393565b611767565b3480156108b857600080fd5b506104496108c73660046130df565b601f6020526000908152604090205460ff1681565b3480156108e857600080fd5b50600e5461044990610100900460ff1681565b34801561090757600080fd5b506105486109163660046132fd565b6117a4565b34801561092757600080fd5b50610548610936366004613334565b61182d565b34801561094757600080fd5b5061054861095636600461313d565b611883565b34801561096757600080fd5b506010546104499060ff1681565b34801561098157600080fd5b5061054861099036600461313d565b61198c565b3480156109a157600080fd5b50610411735283d291dbcf85356a21ba090e6db59121208b4481565b3480156109c957600080fd5b50601c546104499060ff1681565b3480156109e357600080fd5b5061049a60115481565b3480156109f957600080fd5b50610548610a0836600461313d565b611ad7565b348015610a1957600080fd5b5061049a610a28366004613360565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610a5f57600080fd5b5061049a600a5481565b348015610a7557600080fd5b50610548611bde565b348015610a8a57600080fd5b50600b54610411906001600160a01b031681565b348015610aaa57600080fd5b5061049a600d5481565b348015610ac057600080fd5b5061049a60145481565b348015610ad657600080fd5b50610548610ae53660046130df565b611c14565b348015610af657600080fd5b50610548611cff565b348015610b0b57600080fd5b5061049a60185481565b348015610b2157600080fd5b5061049a60195481565b606060038054610b3a906133b0565b80601f0160208091040260200160405190810160405280929190818152602001828054610b66906133b0565b8015610bb35780601f10610b8857610100808354040283529160200191610bb3565b820191906000526020600020905b815481529060010190602001808311610b9657829003601f168201915b5050505050905090565b6000610bca338484611d76565b5060015b92915050565b6000610be1848484611e9a565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610c6b5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b610c788533858403611d76565b506001949350505050565b6005546001600160a01b03163314610cad5760405162461bcd60e51b8152600401610c62906133ea565b670de0b6b3a76400006103e8610cc260025490565b610ccd906001613435565b610cd7919061344c565b610ce1919061344c565b811015610d425760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e312560b81b6064820152608401610c62565b610d5481670de0b6b3a7640000613435565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610bca918590610dc790869061346e565b611d76565b6005546001600160a01b03163314610df65760405162461bcd60e51b8152600401610c62906133ea565b6001600160a01b038116610e5b5760405162461bcd60e51b815260206004820152602660248201527f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60448201526507420626520360d41b6064820152608401610c62565b600b80546001600160a01b0319166001600160a01b0383169081179091556040517f4efa56652237561d0f1fd31311aeaaa41f3b754a461545ed3cf6ced5876d298290600090a250565b6005546001600160a01b03163314610ecf5760405162461bcd60e51b8152600401610c62906133ea565b8051825114610f205760405162461bcd60e51b815260206004820152601e60248201527f617272617973206d757374206265207468652073616d65206c656e67746800006044820152606401610c62565b60c8825110610f905760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203230302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b6064820152608401610c62565b60005b825181101561100b576000838281518110610fb057610fb0613481565b602002602001015190506000838381518110610fce57610fce613481565b6020026020010151670de0b6b3a7640000610fe99190613435565b9050610ff6338383611e9a565b5050808061100390613497565b915050610f93565b505050565b6005546001600160a01b0316331461103a5760405162461bcd60e51b8152600401610c62906133ea565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146110ae5760405162461bcd60e51b8152600401610c62906133ea565b600e805460ff199081169091556010805490911690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6005546001600160a01b031633146111195760405162461bcd60e51b8152600401610c62906133ea565b806111af577f0000000000000000000000001046101a40195e040b2dd343d866f3a296552dcb6001600160a01b0316826001600160a01b0316036111af5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610c62565b6001600160a01b03919091166000908152601e60205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146112045760405162461bcd60e51b8152600401610c62906133ea565b6012839055601382905560148190558061121e838561346e565b611228919061346e565b601155505050565b6005546001600160a01b0316331461125a5760405162461bcd60e51b8152600401610c62906133ea565b600e54610100900460ff16156112b25760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610c62565b600e805462ffff0019166201010017905543600d556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb790600090a1565b6005546001600160a01b0316331461131c5760405162461bcd60e51b8152600401610c62906133ea565b6001600160a01b0381166113805760405162461bcd60e51b815260206004820152602560248201527f5f6d61726b6574696e674164647265737320616464726573732063616e6e6f74604482015264020626520360dc1b6064820152608401610c62565b600c80546001600160a01b0319166001600160a01b0383169081179091556040517fd1e7d6a3390dd5008bd1c57798817b9f806e4c417264e7d3d67e42e784dc24a990600090a250565b606060048054610b3a906133b0565b6005546001600160a01b031633146114035760405162461bcd60e51b8152600401610c62906133ea565b7f0000000000000000000000001046101a40195e040b2dd343d866f3a296552dcb6001600160a01b0316826001600160a01b0316036114aa5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610c62565b6114b48282612738565b5050565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561153a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610c62565b6115473385858403611d76565b5060019392505050565b6000610bca338484611e9a565b6005546000906001600160a01b0316331461158b5760405162461bcd60e51b8152600401610c62906133ea565b6001600160a01b0383166115e15760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610c62565b306001600160a01b038416036116395760405162461bcd60e51b815260206004820152601c60248201527f43616e2774207769746864726177206e617469766520746f6b656e73000000006044820152606401610c62565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa158015611680573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a491906134b0565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af11580156116f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171b91906134c9565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b6005546001600160a01b031633146117915760405162461bcd60e51b8152600401610c62906133ea565b601c805460ff1916911515919091179055565b6005546001600160a01b031633146117ce5760405162461bcd60e51b8152600401610c62906133ea565b6001600160a01b0382166000818152601d6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146118575760405162461bcd60e51b8152600401610c62906133ea565b60168390556017829055601881905580611871838561346e565b61187b919061346e565b601555505050565b6005546001600160a01b031633146118ad5760405162461bcd60e51b8152600401610c62906133ea565b670de0b6b3a76400006103e86118c260025490565b6118cd906003613435565b6118d7919061344c565b6118e1919061344c565b8110156119455760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e332560a01b6064820152608401610c62565b61195781670de0b6b3a7640000613435565b60088190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc90602001610d85565b6005546001600160a01b031633146119b65760405162461bcd60e51b8152600401610c62906133ea565b620186a06119c360025490565b6119ce906001613435565b6119d8919061344c565b811015611a455760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610c62565b6103e8611a5160025490565b611a5c906001613435565b611a66919061344c565b811115611ad25760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610c62565b600a55565b6005546001600160a01b03163314611b015760405162461bcd60e51b8152600401610c62906133ea565b670de0b6b3a76400006103e8611b1660025490565b611b21906001613435565b611b2b919061344c565b611b35919061344c565b811015611b975760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e312560b01b6064820152608401610c62565b611ba981670de0b6b3a7640000613435565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610d85565b6005546001600160a01b03163314611c085760405162461bcd60e51b8152600401610c62906133ea565b6010805460ff19169055565b6005546001600160a01b03163314611c3e5760405162461bcd60e51b8152600401610c62906133ea565b6001600160a01b038116611ca35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c62565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314611d295760405162461bcd60e51b8152600401610c62906133ea565b604051600090339047908381818185875af1925050503d8060008114611d6b576040519150601f19603f3d011682016040523d82523d6000602084013e611d70565b606091505b50505050565b6001600160a01b038316611dd85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c62565b6001600160a01b038216611e395760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c62565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611ec05760405162461bcd60e51b8152600401610c62906134e6565b6001600160a01b038216611ee65760405162461bcd60e51b8152600401610c629061352b565b60008111611f365760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610c62565b600e5460ff161561240a576005546001600160a01b03848116911614801590611f6d57506005546001600160a01b03838116911614155b8015611f8157506001600160a01b03821615155b8015611f9857506001600160a01b03821661dead14155b1561240a57600e54610100900460ff16612030576001600160a01b0383166000908152601e602052604090205460ff1680611feb57506001600160a01b0382166000908152601e602052604090205460ff165b6120305760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610c62565b60105460ff161561218c577f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b0316141580156120af57507f0000000000000000000000001046101a40195e040b2dd343d866f3a296552dcb6001600160a01b0316826001600160a01b031614155b1561218c576120bf60044361356e565b326000908152600f60205260409020541080156120fd57506120e260044361356e565b6001600160a01b0383166000908152600f6020526040902054105b6121675760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b6064820152608401610c62565b326000908152600f602052604080822043908190556001600160a01b03851683529120555b6001600160a01b0383166000908152601f602052604090205460ff1680156121cd57506001600160a01b0382166000908152601e602052604090205460ff16155b156122a9576006548111156122355760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610c62565b6008546001600160a01b03831660009081526020819052604090205461225b908361346e565b11156122a45760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610c62565b61240a565b6001600160a01b0382166000908152601f602052604090205460ff1680156122ea57506001600160a01b0383166000908152601e602052604090205460ff16155b15612354576007548111156122a45760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610c62565b6001600160a01b0382166000908152601e602052604090205460ff1615801561239657506001600160a01b0383166000908152601e602052604090205460ff16155b1561240a576008546001600160a01b0383166000908152602081905260409020546123c1908361346e565b111561240a5760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610c62565b30600090815260208190526040902054600a54811080159081906124365750600e5462010000900460ff165b8015612445575060095460ff16155b801561246a57506001600160a01b0385166000908152601f602052604090205460ff16155b801561248f57506001600160a01b0385166000908152601d602052604090205460ff16155b80156124b457506001600160a01b0384166000908152601d602052604090205460ff16155b156124d9576009805460ff191660011790556124ce6127a2565b6009805460ff191690555b6001600160a01b0385166000908152601d602052604090205460019060ff168061251b57506001600160a01b0385166000908152601d602052604090205460ff165b15612524575060005b6000808280156125375750601c5460ff16155b15612723576001600160a01b0387166000908152601f602052604090205460ff16801561256657506000601554115b1561261e5760646015548761257b9190613435565b612585919061344c565b9150601554601854836125989190613435565b6125a2919061344c565b601b60008282546125b3919061346e565b90915550506015546016546125c89084613435565b6125d2919061344c565b601960008282546125e3919061346e565b90915550506015546017546125f89084613435565b612602919061344c565b601a6000828254612613919061346e565b909155506126fb9050565b6001600160a01b0388166000908152601f602052604090205460ff16801561264857506000601154115b156126fb5760646011548761265d9190613435565b612667919061344c565b91506011546014548361267a9190613435565b612684919061344c565b601b6000828254612695919061346e565b90915550506011546012546126aa9084613435565b6126b4919061344c565b601960008282546126c5919061346e565b90915550506011546013546126da9084613435565b6126e4919061344c565b601a60008282546126f5919061346e565b90915550505b811561270c5761270c883084612b7b565b612716818361346e565b612720908761356e565b95505b61272e888888612b7b565b5050505050505050565b6001600160a01b0382166000908152601f60205260409020805460ff19168215151790556127668282612cd0565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b3060009081526020819052604081205490506000601a54601954601b546127c9919061346e565b6127d3919061346e565b90508115806127e0575080155b156127e9575050565b600a80546127f691613435565b82111561280d57600a805461280a91613435565b91505b6000600282601b54856128209190613435565b61282a919061344c565b612834919061344c565b9050612848612843828561356e565b612d33565b6040516304fa881160e21b8152735283d291dbcf85356a21ba090e6db59121208b4460048201527f00000000000000000000000077c2eba3bb05401b350113b2383e38755293169b6001600160a01b0316906313ea204490602401600060405180830381600087803b1580156128bd57600080fd5b505af11580156128d1573d6000803e3d6000fd5b50506040516370a0823160e01b815230600482015260009250735283d291dbcf85356a21ba090e6db59121208b4491506370a0823190602401602060405180830381865afa158015612927573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061294b91906134b0565b9050600081905060006002601b54612963919061344c565b61296d908661356e565b60195461297a9085613435565b612984919061344c565b905060006002601b54612997919061344c565b6129a1908761356e565b601a546129ae9086613435565b6129b8919061344c565b90506129c4818361346e565b6129ce908461356e565b6000601b8190556019819055601a55925084158015906129ee5750600083115b156129fd576129fd8584612ea6565b6040516370a0823160e01b8152306004820152600090735283d291dbcf85356a21ba090e6db59121208b44906370a0823190602401602060405180830381865afa158015612a4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a7391906134b0565b1115612b7257600b546040516370a0823160e01b8152306004820152735283d291dbcf85356a21ba090e6db59121208b449163a9059cbb916001600160a01b039091169083906370a0823190602401602060405180830381865afa158015612adf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0391906134b0565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015612b4e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061272e91906134c9565b50505050505050565b6001600160a01b038316612ba15760405162461bcd60e51b8152600401610c62906134e6565b6001600160a01b038216612bc75760405162461bcd60e51b8152600401610c629061352b565b6001600160a01b03831660009081526020819052604090205481811015612c3f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610c62565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612c7690849061346e565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612cc291815260200190565b60405180910390a350505050565b6001600160a01b0382166000818152601e6020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612d6857612d68613481565b60200260200101906001600160a01b031690816001600160a01b031681525050735283d291dbcf85356a21ba090e6db59121208b4481600181518110612db057612db0613481565b60200260200101906001600160a01b031690816001600160a01b031681525050612dfb307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611d76565b604051635c11d79560e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d1690635c11d79590612e7090859060009086907f00000000000000000000000077c2eba3bb05401b350113b2383e38755293169b904290600401613581565b600060405180830381600087803b158015612e8a57600080fd5b505af1158015612e9e573d6000803e3d6000fd5b505050505050565b612ed1307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611d76565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d16600482015260248101829052735283d291dbcf85356a21ba090e6db59121208b449063095ea7b3906044016020604051808303816000875af1158015612f52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f7691906134c9565b5060405162e8e33760e81b81523060048201819052735283d291dbcf85356a21ba090e6db59121208b446024830152604482018490526064820183905260006084830181905260a483015260c48201524260e48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03169063e8e3370090610104016060604051808303816000875af1158015613020573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061304491906135f2565b5050505050565b600060208083528351808285015260005b818110156130785785810183015185820160400152820161305c565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146130b057600080fd5b919050565b600080604083850312156130c857600080fd5b6130d183613099565b946020939093013593505050565b6000602082840312156130f157600080fd5b6130fa82613099565b9392505050565b60008060006060848603121561311657600080fd5b61311f84613099565b925061312d60208501613099565b9150604084013590509250925092565b60006020828403121561314f57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561319557613195613156565b604052919050565b600067ffffffffffffffff8211156131b7576131b7613156565b5060051b60200190565b600082601f8301126131d257600080fd5b813560206131e76131e28361319d565b61316c565b82815260059290921b8401810191818101908684111561320657600080fd5b8286015b84811015613221578035835291830191830161320a565b509695505050505050565b6000806040838503121561323f57600080fd5b823567ffffffffffffffff8082111561325757600080fd5b818501915085601f83011261326b57600080fd5b8135602061327b6131e28361319d565b82815260059290921b8401810191818101908984111561329a57600080fd5b948201945b838610156132bf576132b086613099565b8252948201949082019061329f565b965050860135925050808211156132d557600080fd5b506132e2858286016131c1565b9150509250929050565b80151581146132fa57600080fd5b50565b6000806040838503121561331057600080fd5b61331983613099565b91506020830135613329816132ec565b809150509250929050565b60008060006060848603121561334957600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561337357600080fd5b61337c83613099565b915061338a60208401613099565b90509250929050565b6000602082840312156133a557600080fd5b81356130fa816132ec565b600181811c908216806133c457607f821691505b6020821081036133e457634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610bce57610bce61341f565b60008261346957634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610bce57610bce61341f565b634e487b7160e01b600052603260045260246000fd5b6000600182016134a9576134a961341f565b5060010190565b6000602082840312156134c257600080fd5b5051919050565b6000602082840312156134db57600080fd5b81516130fa816132ec565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610bce57610bce61341f565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156135d15784516001600160a01b0316835293830193918301916001016135ac565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561360757600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122053b44181aaad6a10fc7ce49abe51d9253f57393f7ce7785e9144139c9e17f9a664736f6c63430008110033
Deployed Bytecode Sourcemap
10259:16895:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4129:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10412:37;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;749:32:1;;;731:51;;719:2;704:18;10412:37:0;567:221:1;5043:169:0;;;;;;;;;;-1:-1:-1;5043:169:0;;;;;:::i;:::-;;:::i;:::-;;;1395:14:1;;1388:22;1370:41;;1358:2;1343:18;5043:169:0;1230:187:1;11870:64:0;;;;;;;;;;-1:-1:-1;11870:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4450:108;;;;;;;;;;-1:-1:-1;4538:12:0;;4450:108;;;1759:25:1;;;1747:2;1732:18;4450:108:0;1613:177:1;11651:33:0;;;;;;;;;;;;;;;;10496:42;;;;;;;;;;;;;;;11611:33;;;;;;;;;;;;;;;;5220:492;;;;;;;;;;-1:-1:-1;5220:492:0;;;;;:::i;:::-;;:::i;15505:269::-;;;;;;;;;;-1:-1:-1;15505:269:0;;;;;:::i;:::-;;:::i;:::-;;4349:93;;;;;;;;;;-1:-1:-1;4349:93:0;;4432:2;2683:36:1;;2671:2;2656:18;4349:93:0;2541:184:1;5720:215:0;;;;;;;;;;-1:-1:-1;5720:215:0;;;;;:::i;:::-;;:::i;10456:31::-;;;;;;;;;;;;;;;26438:297;;;;;;;;;;-1:-1:-1;26438:297:0;;;;;:::i;:::-;;:::i;10775:33::-;;;;;;;;;;-1:-1:-1;10775:33:0;;;;;;;;11453:32;;;;;;;;;;;;;;;;11304:31;;;;;;;;;;;;;;;;10338:28;;;;;;;;;;;;;;;;16995:510;;;;;;;;;;-1:-1:-1;16995:510:0;;;;;:::i;:::-;;:::i;11418:28::-;;;;;;;;;;;;;;;;10855:31;;;;;;;;;;-1:-1:-1;10855:31:0;;;;;;;;;;;4566:127;;;;;;;;;;-1:-1:-1;4566:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;4667:18:0;4640:7;4667:18;;;;;;;;;;;;4566:127;8210:150;;;;;;;;;;;;;:::i;15171:154::-;;;;;;;;;;;;;:::i;17517:260::-;;;;;;;;;;-1:-1:-1;17517:260:0;;;;;:::i;:::-;;:::i;11342:30::-;;;;;;;;;;;;;;;;18288:326;;;;;;;;;;-1:-1:-1;18288:326:0;;;;;:::i;:::-;;:::i;10304:27::-;;;;;;;;;;;;;;;;14866:249;;;;;;;;;;;;;:::i;7996:79::-;;;;;;;;;;-1:-1:-1;8061:6:0;;-1:-1:-1;;;;;8061:6:0;7996:79;;26744:289;;;;;;;;;;-1:-1:-1;26744:289:0;;;;;:::i;:::-;;:::i;11492:31::-;;;;;;;;;;;;;;;;4237:104;;;;;;;;;;;;;:::i;17785:239::-;;;;;;;;;;-1:-1:-1;17785:239:0;;;;;:::i;:::-;;:::i;5943:413::-;;;;;;;;;;-1:-1:-1;5943:413:0;;;;;:::i;:::-;;:::i;10656:31::-;;;;;;;;;;-1:-1:-1;10656:31:0;;;;-1:-1:-1;;;;;10656:31:0;;;4701:175;;;;;;;;;;-1:-1:-1;4701:175:0;;;;;:::i;:::-;;:::i;10373:30::-;;;;;;;;;;;;;;;;25738:462;;;;;;;;;;-1:-1:-1;25738:462:0;;;;;:::i;:::-;;:::i;27042:107::-;;;;;;;;;;-1:-1:-1;27042:107:0;;;;;:::i;:::-;;:::i;12092:58::-;;;;;;;;;;-1:-1:-1;12092:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10815:33;;;;;;;;;;-1:-1:-1;10815:33:0;;;;;;;;;;;18964:182;;;;;;;;;;-1:-1:-1;18964:182:0;;;;;:::i;:::-;;:::i;18622:334::-;;;;;;;;;;-1:-1:-1;18622:334:0;;;;;:::i;:::-;;:::i;16068:284::-;;;;;;;;;;-1:-1:-1;16068:284:0;;;;;:::i;:::-;;:::i;11078:39::-;;;;;;;;;;-1:-1:-1;11078:39:0;;;;;;;;16422:346;;;;;;;;;;-1:-1:-1;16422:346:0;;;;;:::i;:::-;;:::i;11126:80::-;;;;;;;;;;;;11163:42;11126:80;;11693:23;;;;;;;;;;-1:-1:-1;11693:23:0;;;;;;;;11270:27;;;;;;;;;;;;;;;;15786:274;;;;;;;;;;-1:-1:-1;15786:274:0;;;;;:::i;:::-;;:::i;4884:151::-;;;;;;;;;;-1:-1:-1;4884:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;5000:18:0;;;4973:7;5000:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4884:151;10575:33;;;;;;;;;;;;;;;;15395:98;;;;;;;;;;;;;:::i;10617:32::-;;;;;;;;;;-1:-1:-1;10617:32:0;;;;-1:-1:-1;;;;;10617:32:0;;;10696:37;;;;;;;;;;;;;;;;11379:30;;;;;;;;;;;;;;;;8368:244;;;;;;;;;;-1:-1:-1;8368:244:0;;;;;:::i;:::-;;:::i;26270:160::-;;;;;;;;;;;;;:::i;11530:31::-;;;;;;;;;;;;;;;;11570:34;;;;;;;;;;;;;;;;4129:100;4183:13;4216:5;4209:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4129:100;:::o;5043:169::-;5126:4;5143:39;358:10;5166:7;5175:6;5143:8;:39::i;:::-;-1:-1:-1;5200:4:0;5043:169;;;;;:::o;5220:492::-;5360:4;5377:36;5387:6;5395:9;5406:6;5377:9;:36::i;:::-;-1:-1:-1;;;;;5453:19:0;;5426:24;5453:19;;;:11;:19;;;;;;;;358:10;5453:33;;;;;;;;5505:26;;;;5497:79;;;;-1:-1:-1;;;5497:79:0;;7439:2:1;5497:79:0;;;7421:21:1;7478:2;7458:18;;;7451:30;7517:34;7497:18;;;7490:62;-1:-1:-1;;;7568:18:1;;;7561:38;7616:19;;5497:79:0;;;;;;;;;5612:57;5621:6;358:10;5662:6;5643:16;:25;5612:8;:57::i;:::-;-1:-1:-1;5700:4:0;;5220:492;-1:-1:-1;;;;5220:492:0:o;15505:269::-;8123:6;;-1:-1:-1;;;;;8123:6:0;358:10;8123:22;8115:67;;;;-1:-1:-1;;;8115:67:0;;;;;;;:::i;:::-;15624:4:::1;15618;15598:13;4538:12:::0;;;4450:108;15598:13:::1;:17;::::0;15614:1:::1;15598:17;:::i;:::-;:24;;;;:::i;:::-;15597:31;;;;:::i;:::-;15587:6;:41;;15579:95;;;::::0;-1:-1:-1;;;15579:95:0;;8736:2:1;15579:95:0::1;::::0;::::1;8718:21:1::0;8775:2;8755:18;;;8748:30;8814:34;8794:18;;;8787:62;-1:-1:-1;;;8865:18:1;;;8858:39;8914:19;;15579:95:0::1;8534:405:1::0;15579:95:0::1;15700:17;:6:::0;15710::::1;15700:17;:::i;:::-;15685:12;:32:::0;;;15733:33:::1;::::0;1759:25:1;;;15733:33:0::1;::::0;1747:2:1;1732:18;15733:33:0::1;;;;;;;;15505:269:::0;:::o;5720:215::-;358:10;5808:4;5857:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5857:34:0;;;;;;;;;;5808:4;;5825:80;;5848:7;;5857:47;;5894:10;;5857:47;:::i;:::-;5825:8;:80::i;26438:297::-;8123:6;;-1:-1:-1;;;;;8123:6:0;358:10;8123:22;8115:67;;;;-1:-1:-1;;;8115:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26534:32:0;::::1;26526:83;;;::::0;-1:-1:-1;;;26526:83:0;;9276:2:1;26526:83:0::1;::::0;::::1;9258:21:1::0;9315:2;9295:18;;;9288:30;9354:34;9334:18;;;9327:62;-1:-1:-1;;;9405:18:1;;;9398:36;9451:19;;26526:83:0::1;9074:402:1::0;26526:83:0::1;26620:17;:47:::0;;-1:-1:-1;;;;;;26620:47:0::1;-1:-1:-1::0;;;;;26620:47:0;::::1;::::0;;::::1;::::0;;;26683:44:::1;::::0;::::1;::::0;-1:-1:-1;;26683:44:0::1;26438:297:::0;:::o;16995:510::-;8123:6;;-1:-1:-1;;;;;8123:6:0;358:10;8123:22;8115:67;;;;-1:-1:-1;;;8115:67:0;;;;;;;:::i;:::-;17128:15:::1;:22;17110:7;:14;:40;17102:83;;;::::0;-1:-1:-1;;;17102:83:0;;9683:2:1;17102:83:0::1;::::0;::::1;9665:21:1::0;9722:2;9702:18;;;9695:30;9761:32;9741:18;;;9734:60;9811:18;;17102:83:0::1;9481:354:1::0;17102:83:0::1;17221:3;17204:7;:14;:20;17196:87;;;::::0;-1:-1:-1;;;17196:87:0;;10042:2:1;17196:87:0::1;::::0;::::1;10024:21:1::0;10081:2;10061:18;;;10054:30;10120:34;10100:18;;;10093:62;-1:-1:-1;;;10171:18:1;;;10164:52;10233:19;;17196:87:0::1;9840:418:1::0;17196:87:0::1;17298:9;17294:204;17317:7;:14;17313:1;:18;17294:204;;;17352:14;17369:7;17377:1;17369:10;;;;;;;;:::i;:::-;;;;;;;17352:27;;17394:14;17411:15;17427:1;17411:18;;;;;;;;:::i;:::-;;;;;;;17430:4;17411:23;;;;:::i;:::-;17394:40;;17449:37;17459:10;17471:6;17479;17449:9;:37::i;:::-;17337:161;;17333:3;;;;;:::i;:::-;;;;17294:204;;;;16995:510:::0;;:::o;8210:150::-;8123:6;;-1:-1:-1;;;;;8123:6:0;358:10;8123:22;8115:67;;;;-1:-1:-1;;;8115:67:0;;;;;;;:::i;:::-;8303:6:::1;::::0;8282:40:::1;::::0;8319:1:::1;::::0;-1:-1:-1;;;;;8303:6:0::1;::::0;8282:40:::1;::::0;8319:1;;8282:40:::1;8333:6;:19:::0;;-1:-1:-1;;;;;;8333:19:0::1;::::0;;8210:150::o;15171:154::-;8123:6;;-1:-1:-1;;;;;8123:6:0;358:10;8123:22;8115:67;;;;-1:-1:-1;;;8115:67:0;;;;;;;:::i;:::-;15225:14:::1;:22:::0;;-1:-1:-1;;15225:22:0;;::::1;::::0;;;15258:20:::1;:28:::0;;;;::::1;::::0;;15302:15:::1;::::0;::::1;::::0;15242:5:::1;::::0;15302:15:::1;15171:154::o:0;17517:260::-;8123:6;;-1:-1:-1;;;;;8123:6:0;358:10;8123:22;8115:67;;;;-1:-1:-1;;;8115:67:0;;;;;;;:::i;:::-;17613:4:::1;17609:104;;17651:6;-1:-1:-1::0;;;;;17641:16:0::1;:6;-1:-1:-1::0;;;;;17641:16:0::1;::::0;17633:68:::1;;;::::0;-1:-1:-1;;;17633:68:0;;10737:2:1;17633:68:0::1;::::0;::::1;10719:21:1::0;10776:2;10756:18;;;10749:30;10815:34;10795:18;;;10788:62;-1:-1:-1;;;10866:18:1;;;10859:37;10913:19;;17633:68:0::1;10535:403:1::0;17633:68:0::1;-1:-1:-1::0;;;;;17723:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;17723:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17517:260::o;18288:326::-;8123:6;;-1:-1:-1;;;;;8123:6:0;358:10;8123:22;8115:67;;;;-1:-1:-1;;;8115:67:0;;;;;;;:::i;:::-;18411:16:::1;:33:::0;;;18455:15:::1;:31:::0;;;18497:15:::1;:31:::0;;;18515:13;18554:34:::1;18473:13:::0;18430:14;18554:34:::1;:::i;:::-;:52;;;;:::i;:::-;18539:12;:67:::0;-1:-1:-1;;;18288:326:0:o;14866:249::-;8123:6;;-1:-1:-1;;;;;8123:6:0;358:10;8123:22;8115:67;;;;-1:-1:-1;;;8115:67:0;;;;;;;:::i;:::-;14930:13:::1;::::0;::::1;::::0;::::1;;;14929:14;14921:50;;;::::0;-1:-1:-1;;;14921:50:0;;11145:2:1;14921:50:0::1;::::0;::::1;11127:21:1::0;11184:2;11164:18;;;11157:30;11223:25;11203:18;;;11196:53;11266:18;;14921:50:0::1;10943:347:1::0;14921:50:0::1;14982:13;:20:::0;;-1:-1:-1;;15013:18:0;;;;;15063:12:::1;15042:18;:33:::0;15091:16:::1;::::0;::::1;::::0;-1:-1:-1;;15091:16:0::1;14866:249::o:0;26744:289::-;8123:6;;-1:-1:-1;;;;;8123:6:0;358:10;8123:22;8115:67;;;;-1:-1:-1;;;8115:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26838:31:0;::::1;26830:81;;;::::0;-1:-1:-1;;;26830:81:0;;11497:2:1;26830:81:0::1;::::0;::::1;11479:21:1::0;11536:2;11516:18;;;11509:30;11575:34;11555:18;;;11548:62;-1:-1:-1;;;11626:18:1;;;11619:35;11671:19;;26830:81:0::1;11295:401:1::0;26830:81:0::1;26922:16;:45:::0;;-1:-1:-1;;;;;;26922:45:0::1;-1:-1:-1::0;;;;;26922:45:0;::::1;::::0;;::::1;::::0;;;26983:42:::1;::::0;::::1;::::0;-1:-1:-1;;26983:42:0::1;26744:289:::0;:::o;4237:104::-;4293:13;4326:7;4319:14;;;;;:::i;17785:239::-;8123:6;;-1:-1:-1;;;;;8123:6:0;358:10;8123:22;8115:67;;;;-1:-1:-1;;;8115:67:0;;;;;;;:::i;:::-;17894:6:::1;-1:-1:-1::0;;;;;17886:14:0::1;:4;-1:-1:-1::0;;;;;17886:14:0::1;::::0;17878:84:::1;;;::::0;-1:-1:-1;;;17878:84:0;;11903:2:1;17878:84:0::1;::::0;::::1;11885:21:1::0;11942:2;11922:18;;;11915:30;11981:34;11961:18;;;11954:62;12052:27;12032:18;;;12025:55;12097:19;;17878:84:0::1;11701:421:1::0;17878:84:0::1;17975:41;18004:4;18010:5;17975:28;:41::i;:::-;17785:239:::0;;:::o;5943:413::-;358:10;6036:4;6080:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6080:34:0;;;;;;;;;;6133:35;;;;6125:85;;;;-1:-1:-1;;;6125:85:0;;12329:2:1;6125:85:0;;;12311:21:1;12368:2;12348:18;;;12341:30;12407:34;12387:18;;;12380:62;-1:-1:-1;;;12458:18:1;;;12451:35;12503:19;;6125:85:0;12127:401:1;6125:85:0;6246:67;358:10;6269:7;6297:15;6278:16;:34;6246:8;:67::i;:::-;-1:-1:-1;6344:4:0;;5943:413;-1:-1:-1;;;5943:413:0:o;4701:175::-;4787:4;4804:42;358:10;4828:9;4839:6;4804:9;:42::i;25738:462::-;8123:6;;25831:10;;-1:-1:-1;;;;;8123:6:0;358:10;8123:22;8115:67;;;;-1:-1:-1;;;8115:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25862:20:0;::::1;25854:59;;;::::0;-1:-1:-1;;;25854:59:0;;12735:2:1;25854:59:0::1;::::0;::::1;12717:21:1::0;12774:2;12754:18;;;12747:30;12813:28;12793:18;;;12786:56;12859:18;;25854:59:0::1;12533:350:1::0;25854:59:0::1;25950:4;-1:-1:-1::0;;;;;25932:23:0;::::1;::::0;25924:64:::1;;;::::0;-1:-1:-1;;;25924:64:0;;13090:2:1;25924:64:0::1;::::0;::::1;13072:21:1::0;13129:2;13109:18;;;13102:30;13168;13148:18;;;13141:58;13216:18;;25924:64:0::1;12888:352:1::0;25924:64:0::1;26026:39;::::0;-1:-1:-1;;;26026:39:0;;26059:4:::1;26026:39;::::0;::::1;731:51:1::0;25999:24:0::1;::::0;-1:-1:-1;;;;;26026:24:0;::::1;::::0;::::1;::::0;704:18:1;;26026:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26084:46;::::0;-1:-1:-1;;;26084:46:0;;-1:-1:-1;;;;;13626:32:1;;;26084:46:0::1;::::0;::::1;13608:51:1::0;13675:18;;;13668:34;;;25999:66:0;;-1:-1:-1;26084:23:0;;::::1;::::0;::::1;::::0;13581:18:1;;26084:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26146;::::0;;-1:-1:-1;;;;;13626:32:1;;13608:51;;13690:2;13675:18;;13668:34;;;26076:54:0;;-1:-1:-1;26146:46:0::1;::::0;13581:18:1;26146:46:0::1;;;;;;;25843:357;25738:462:::0;;;;:::o;27042:107::-;8123:6;;-1:-1:-1;;;;;8123:6:0;358:10;8123:22;8115:67;;;;-1:-1:-1;;;8115:67:0;;;;;;;:::i;:::-;27115:11:::1;:26:::0;;-1:-1:-1;;27115:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27042:107::o;18964:182::-;8123:6;;-1:-1:-1;;;;;8123:6:0;358:10;8123:22;8115:67;;;;-1:-1:-1;;;8115:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19049:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;19049:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;19104:34;;1370:41:1;;;19104:34:0::1;::::0;1343:18:1;19104:34:0::1;;;;;;;18964:182:::0;;:::o;18622:334::-;8123:6;;-1:-1:-1;;;;;8123:6:0;358:10;8123:22;8115:67;;;;-1:-1:-1;;;8115:67:0;;;;;;;:::i;:::-;18746:17:::1;:34:::0;;;18791:16:::1;:32:::0;;;18834:16:::1;:32:::0;;;18853:13;18893:36:::1;18810:13:::0;18766:14;18893:36:::1;:::i;:::-;:55;;;;:::i;:::-;18877:13;:71:::0;-1:-1:-1;;;18622:334:0:o;16068:284::-;8123:6;;-1:-1:-1;;;;;8123:6:0;358:10;8123:22;8115:67;;;;-1:-1:-1;;;8115:67:0;;;;;;;:::i;:::-;16190:4:::1;16184;16164:13;4538:12:::0;;;4450:108;16164:13:::1;:17;::::0;16180:1:::1;16164:17;:::i;:::-;:24;;;;:::i;:::-;16163:31;;;;:::i;:::-;16153:6;:41;;16145:98;;;::::0;-1:-1:-1;;;16145:98:0;;14165:2:1;16145:98:0::1;::::0;::::1;14147:21:1::0;14204:2;14184:18;;;14177:30;14243:34;14223:18;;;14216:62;-1:-1:-1;;;14294:18:1;;;14287:42;14346:19;;16145:98:0::1;13963:408:1::0;16145:98:0::1;16272:17;:6:::0;16282::::1;16272:17;:::i;:::-;16254:15;:35:::0;;;16305:39:::1;::::0;1759:25:1;;;16305:39:0::1;::::0;1747:2:1;1732:18;16305:39:0::1;1613:177:1::0;16422:346:0;8123:6;;-1:-1:-1;;;;;8123:6:0;358:10;8123:22;8115:67;;;;-1:-1:-1;;;8115:67:0;;;;;;;:::i;:::-;16545:6:::1;16525:13;4538:12:::0;;;4450:108;16525:13:::1;:17;::::0;16541:1:::1;16525:17;:::i;:::-;:26;;;;:::i;:::-;16512:9;:39;;16504:105;;;::::0;-1:-1:-1;;;16504:105:0;;14578:2:1;16504:105:0::1;::::0;::::1;14560:21:1::0;14617:2;14597:18;;;14590:30;14656:34;14636:18;;;14629:62;-1:-1:-1;;;14707:18:1;;;14700:51;14768:19;;16504:105:0::1;14376:417:1::0;16504:105:0::1;16660:4;16640:13;4538:12:::0;;;4450:108;16640:13:::1;:17;::::0;16656:1:::1;16640:17;:::i;:::-;:24;;;;:::i;:::-;16627:9;:37;;16619:102;;;::::0;-1:-1:-1;;;16619:102:0;;15000:2:1;16619:102:0::1;::::0;::::1;14982:21:1::0;15039:2;15019:18;;;15012:30;15078:34;15058:18;;;15051:62;-1:-1:-1;;;15129:18:1;;;15122:50;15189:19;;16619:102:0::1;14798:416:1::0;16619:102:0::1;16731:18;:30:::0;16422:346::o;15786:274::-;8123:6;;-1:-1:-1;;;;;8123:6:0;358:10;8123:22;8115:67;;;;-1:-1:-1;;;8115:67:0;;;;;;;:::i;:::-;15906:4:::1;15900;15880:13;4538:12:::0;;;4450:108;15880:13:::1;:17;::::0;15896:1:::1;15880:17;:::i;:::-;:24;;;;:::i;:::-;15879:31;;;;:::i;:::-;15869:6;:41;;15861:96;;;::::0;-1:-1:-1;;;15861:96:0;;15421:2:1;15861:96:0::1;::::0;::::1;15403:21:1::0;15460:2;15440:18;;;15433:30;15499:34;15479:18;;;15472:62;-1:-1:-1;;;15550:18:1;;;15543:40;15600:19;;15861:96:0::1;15219:406:1::0;15861:96:0::1;15984:17;:6:::0;15994::::1;15984:17;:::i;:::-;15968:13;:33:::0;;;16017:35:::1;::::0;1759:25:1;;;16017:35:0::1;::::0;1747:2:1;1732:18;16017:35:0::1;1613:177:1::0;15395:98:0;8123:6;;-1:-1:-1;;;;;8123:6:0;358:10;8123:22;8115:67;;;;-1:-1:-1;;;8115:67:0;;;;;;;:::i;:::-;15457:20:::1;:28:::0;;-1:-1:-1;;15457:28:0::1;::::0;;15395:98::o;8368:244::-;8123:6;;-1:-1:-1;;;;;8123:6:0;358:10;8123:22;8115:67;;;;-1:-1:-1;;;8115:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8457:22:0;::::1;8449:73;;;::::0;-1:-1:-1;;;8449:73:0;;15832:2:1;8449:73:0::1;::::0;::::1;15814:21:1::0;15871:2;15851:18;;;15844:30;15910:34;15890:18;;;15883:62;-1:-1:-1;;;15961:18:1;;;15954:36;16007:19;;8449:73:0::1;15630:402:1::0;8449:73:0::1;8559:6;::::0;8538:38:::1;::::0;-1:-1:-1;;;;;8538:38:0;;::::1;::::0;8559:6:::1;::::0;8538:38:::1;::::0;8559:6:::1;::::0;8538:38:::1;8587:6;:17:::0;;-1:-1:-1;;;;;;8587:17:0::1;-1:-1:-1::0;;;;;8587:17:0;;;::::1;::::0;;;::::1;::::0;;8368:244::o;26270:160::-;8123:6;;-1:-1:-1;;;;;8123:6:0;358:10;8123:22;8115:67;;;;-1:-1:-1;;;8115:67:0;;;;;;;:::i;:::-;26364:58:::1;::::0;26328:12:::1;::::0;26372:10:::1;::::0;26396:21:::1;::::0;26328:12;26364:58;26328:12;26364:58;26396:21;26372:10;26364:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;26270:160:0:o;7285:380::-;-1:-1:-1;;;;;7421:19:0;;7413:68;;;;-1:-1:-1;;;7413:68:0;;16449:2:1;7413:68:0;;;16431:21:1;16488:2;16468:18;;;16461:30;16527:34;16507:18;;;16500:62;-1:-1:-1;;;16578:18:1;;;16571:34;16622:19;;7413:68:0;16247:400:1;7413:68:0;-1:-1:-1;;;;;7500:21:0;;7492:68;;;;-1:-1:-1;;;7492:68:0;;16854:2:1;7492:68:0;;;16836:21:1;16893:2;16873:18;;;16866:30;16932:34;16912:18;;;16905:62;-1:-1:-1;;;16983:18:1;;;16976:32;17025:19;;7492:68:0;16652:398:1;7492:68:0;-1:-1:-1;;;;;7573:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7625:32;;1759:25:1;;;7625:32:0;;1732:18:1;7625:32:0;;;;;;;7285:380;;;:::o;19154:4033::-;-1:-1:-1;;;;;19254:18:0;;19246:68;;;;-1:-1:-1;;;19246:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19333:16:0;;19325:64;;;;-1:-1:-1;;;19325:64:0;;;;;;;:::i;:::-;19417:1;19408:6;:10;19400:52;;;;-1:-1:-1;;;19400:52:0;;18067:2:1;19400:52:0;;;18049:21:1;18106:2;18086:18;;;18079:30;18145:31;18125:18;;;18118:59;18194:18;;19400:52:0;17865:353:1;19400:52:0;19486:14;;;;19483:1860;;;8061:6;;-1:-1:-1;;;;;19520:15:0;;;8061:6;;19520:15;;;;:32;;-1:-1:-1;8061:6:0;;-1:-1:-1;;;;;19539:13:0;;;8061:6;;19539:13;;19520:32;:52;;;;-1:-1:-1;;;;;;19556:16:0;;;;19520:52;:77;;;;-1:-1:-1;;;;;;19576:21:0;;19590:6;19576:21;;19520:77;19516:1816;;;19621:13;;;;;;;19617:172;;-1:-1:-1;;;;;19666:37:0;;;;;;:31;:37;;;;;;;;;:76;;-1:-1:-1;;;;;;19707:35:0;;;;;;:31;:35;;;;;;;;19666:76;19658:111;;;;-1:-1:-1;;;19658:111:0;;18425:2:1;19658:111:0;;;18407:21:1;18464:2;18444:18;;;18437:30;-1:-1:-1;;;18483:18:1;;;18476:52;18545:18;;19658:111:0;18223:346:1;19658:111:0;19963:20;;;;19959:506;;;20025:9;-1:-1:-1;;;;;20011:24:0;:2;-1:-1:-1;;;;;20011:24:0;;;:49;;;;;20053:6;-1:-1:-1;;;;;20039:21:0;:2;-1:-1:-1;;;;;20039:21:0;;;20011:49;20007:439;;;20138:16;20153:1;20138:12;:16;:::i;:::-;20125:9;20096:39;;;;:28;:39;;;;;;:58;:113;;;;-1:-1:-1;20193:16:0;20208:1;20193:12;:16;:::i;:::-;-1:-1:-1;;;;;20158:32:0;;;;;;:28;:32;;;;;;:51;20096:113;20088:179;;;;-1:-1:-1;;;20088:179:0;;18909:2:1;20088:179:0;;;18891:21:1;18948:2;18928:18;;;18921:30;18987:34;18967:18;;;18960:62;-1:-1:-1;;;19038:18:1;;;19031:51;19099:19;;20088:179:0;18707:417:1;20088:179:0;20323:9;20294:39;;;;:28;:39;;;;;;20336:12;20294:54;;;;-1:-1:-1;;;;;20375:32:0;;;;;;:47;20007:439;-1:-1:-1;;;;;20534:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;20570:35:0;;;;;;:31;:35;;;;;;;;20569:36;20534:71;20530:787;;;20652:12;;20642:6;:22;;20634:75;;;;-1:-1:-1;;;20634:75:0;;19331:2:1;20634:75:0;;;19313:21:1;19370:2;19350:18;;;19343:30;19409:34;19389:18;;;19382:62;-1:-1:-1;;;19460:18:1;;;19453:38;19508:19;;20634:75:0;19129:404:1;20634:75:0;20770:15;;-1:-1:-1;;;;;4667:18:0;;4640:7;4667:18;;;;;;;;;;;20744:22;;:6;:22;:::i;:::-;:41;;20736:78;;;;-1:-1:-1;;;20736:78:0;;19740:2:1;20736:78:0;;;19722:21:1;19779:2;19759:18;;;19752:30;-1:-1:-1;;;19798:18:1;;;19791:54;19862:18;;20736:78:0;19538:348:1;20736:78:0;20530:787;;;-1:-1:-1;;;;;20891:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;20925:37:0;;;;;;:31;:37;;;;;;;;20924:38;20891:71;20887:430;;;21009:13;;20999:6;:23;;20991:78;;;;-1:-1:-1;;;20991:78:0;;20093:2:1;20991:78:0;;;20075:21:1;20132:2;20112:18;;;20105:30;20171:34;20151:18;;;20144:62;-1:-1:-1;;;20222:18:1;;;20215:40;20272:19;;20991:78:0;19891:406:1;20887:430:0;-1:-1:-1;;;;;21118:35:0;;;;;;:31;:35;;;;;;;;21117:36;:78;;;;-1:-1:-1;;;;;;21158:37:0;;;;;;:31;:37;;;;;;;;21157:38;21117:78;21113:204;;;21253:15;;-1:-1:-1;;;;;4667:18:0;;4640:7;4667:18;;;;;;;;;;;21227:22;;:6;:22;:::i;:::-;:41;;21219:78;;;;-1:-1:-1;;;21219:78:0;;19740:2:1;21219:78:0;;;19722:21:1;19779:2;19759:18;;;19752:30;-1:-1:-1;;;19798:18:1;;;19791:54;19862:18;;21219:78:0;19538:348:1;21219:78:0;21404:4;21355:28;4667:18;;;;;;;;;;;21470;;21446:42;;;;;;;21504:22;;-1:-1:-1;21515:11:0;;;;;;;21504:22;:35;;;;-1:-1:-1;21531:8:0;;;;21530:9;21504:35;:71;;;;-1:-1:-1;;;;;;21544:31:0;;;;;;:25;:31;;;;;;;;21543:32;21504:71;:101;;;;-1:-1:-1;;;;;;21580:25:0;;;;;;:19;:25;;;;;;;;21579:26;21504:101;:129;;;;-1:-1:-1;;;;;;21610:23:0;;;;;;:19;:23;;;;;;;;21609:24;21504:129;21501:236;;;21650:8;:15;;-1:-1:-1;;21650:15:0;21661:4;21650:15;;;21682:10;:8;:10::i;:::-;21709:8;:16;;-1:-1:-1;;21709:16:0;;;21501:236;-1:-1:-1;;;;;21867:25:0;;21749:12;21867:25;;;:19;:25;;;;;;21764:4;;21867:25;;;:52;;-1:-1:-1;;;;;;21896:23:0;;;;;;:19;:23;;;;;;;;21867:52;21864:99;;;-1:-1:-1;21946:5:0;21864:99;21983:12;22010:21;22123:7;:23;;;;-1:-1:-1;22135:11:0;;;;22134:12;22123:23;22120:1014;;;-1:-1:-1;;;;;22190:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;22239:1;22223:13;;:17;22190:50;22186:763;;;22291:3;22276:13;;22267:6;:22;;;;:::i;:::-;:27;;;;:::i;:::-;22260:34;;22361:13;;22342:16;;22335:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;22313:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;22443:13:0;;22423:17;;22416:24;;:4;:24;:::i;:::-;:40;;;;:::i;:::-;22393:19;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;22523:13:0;;22504:16;;22497:23;;:4;:23;:::i;:::-;:39;;;;:::i;:::-;22475:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;22186:763:0;;-1:-1:-1;22186:763:0;;-1:-1:-1;;;;;22597:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;22647:1;22632:12;;:16;22597:51;22594:355;;;22697:3;22682:12;;22673:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;22666:34;;22763:12;;22745:15;;22738:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;22716:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;22843:12:0;;22824:16;;22817:23;;:4;:23;:::i;:::-;:38;;;;:::i;:::-;22794:19;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;22921:12:0;;22903:15;;22896:22;;:4;:22;:::i;:::-;:37;;;;:::i;:::-;22874:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;22594:355:0;22980:8;;22977:93;;23012:42;23028:4;23042;23049;23012:15;:42::i;:::-;23102:20;23109:13;23102:4;:20;:::i;:::-;23092:30;;;;:::i;:::-;;;22120:1014;23146:33;23162:4;23168:2;23172:6;23146:15;:33::i;:::-;19233:3954;;;;;19154:4033;;;:::o;18032:248::-;-1:-1:-1;;;;;18115:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;18115:39:0;;;;;;;18175;18115:31;:39;18175:26;:39::i;:::-;18232:40;;;;;;-1:-1:-1;;;;;18232:40:0;;;;;;;;18032:248;;:::o;23635:1511::-;23718:4;23674:23;4667:18;;;;;;;;;;;23674:50;;23735:25;23806:18;;23784:19;;23763:18;;:40;;;;:::i;:::-;:61;;;;:::i;:::-;23735:89;-1:-1:-1;23848:20:0;;;:46;;-1:-1:-1;23872:22:0;;23848:46;23845:60;;;23897:7;;23635:1511::o;23845:60::-;23938:18;;;:23;;;:::i;:::-;23920:15;:41;23917:113;;;23995:18;;;:23;;;:::i;:::-;23977:41;;23917:113;24099:23;24184:1;24164:17;24143:18;;24125:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;24099:86;-1:-1:-1;24206:52:0;24224:33;24099:86;24224:15;:33;:::i;:::-;24206:17;:52::i;:::-;24272:44;;-1:-1:-1;;;24272:44:0;;11163:42;24272:44;;;731:51:1;24272:12:0;-1:-1:-1;;;;;24272:29:0;;;;704:18:1;;24272:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24359:29:0;;-1:-1:-1;;;24359:29:0;;24382:4;24359:29;;;731:51:1;24337:19:0;;-1:-1:-1;11163:42:0;;-1:-1:-1;24359:14:0;;704:18:1;;24359:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24337:51;;24399:24;24426:11;24399:38;;24450:25;24555:1;24536:18;;:20;;;;:::i;:::-;24515:42;;:17;:42;:::i;:::-;24492:19;;24478:33;;:11;:33;:::i;:::-;:80;;;;:::i;:::-;24450:108;;24569:24;24672:1;24653:18;;:20;;;;:::i;:::-;24632:42;;:17;:42;:::i;:::-;24610:18;;24596:32;;:11;:32;:::i;:::-;:79;;;;:::i;:::-;24569:106;-1:-1:-1;24708:36:0;24569:106;24708:17;:36;:::i;:::-;24688:56;;;;:::i;:::-;24790:1;24769:18;:22;;;24802:19;:23;;;24836:18;:22;24688:56;-1:-1:-1;24882:19:0;;;;;:43;;;24924:1;24905:16;:20;24882:43;24879:121;;;24941:47;24954:15;24971:16;24941:12;:47::i;:::-;25015:29;;-1:-1:-1;;;25015:29:0;;25038:4;25015:29;;;731:51:1;25047:1:0;;11163:42;;25015:14;;704:18:1;;25015:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:33;25012:127;;;25078:17;;25097:29;;-1:-1:-1;;;25097:29:0;;25120:4;25097:29;;;731:51:1;11163:42:0;;25064:13;;-1:-1:-1;;;;;25078:17:0;;;;11163:42;;25097:14;;704:18:1;;25097:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25064:63;;-1:-1:-1;;;;;;25064:63:0;;;;;;;-1:-1:-1;;;;;13626:32:1;;;25064:63:0;;;13608:51:1;13675:18;;;13668:34;13581:18;;25064:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;25012:127::-;23663:1483;;;;;;;23635:1511::o;6364:614::-;-1:-1:-1;;;;;6504:20:0;;6496:70;;;;-1:-1:-1;;;6496:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6585:23:0;;6577:71;;;;-1:-1:-1;;;6577:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6685:17:0;;6661:21;6685:17;;;;;;;;;;;6721:23;;;;6713:74;;;;-1:-1:-1;;;6713:74:0;;20504:2:1;6713:74:0;;;20486:21:1;20543:2;20523:18;;;20516:30;20582:34;20562:18;;;20555:62;-1:-1:-1;;;20633:18:1;;;20626:36;20679:19;;6713:74:0;20302:402:1;6713:74:0;-1:-1:-1;;;;;6823:17:0;;;:9;:17;;;;;;;;;;;6843:22;;;6823:42;;6887:20;;;;;;;;:30;;6859:6;;6823:9;6887:30;;6859:6;;6887:30;:::i;:::-;;;;;;;;6952:9;-1:-1:-1;;;;;6935:35:0;6944:6;-1:-1:-1;;;;;6935:35:0;;6963:6;6935:35;;;;1759:25:1;;1747:2;1732:18;;1613:177;6935:35:0;;;;;;;;6485:493;6364:614;;;:::o;16780:207::-;-1:-1:-1;;;;;16868:39:0;;;;;;:31;:39;;;;;;;;;:52;;-1:-1:-1;;16868:52:0;;;;;;;;;;16936:43;;20877:51:1;;;20944:18;;;20937:50;16936:43:0;;20850:18:1;16936:43:0;;;;;;;16780:207;;:::o;25154:578::-;25305:16;;;25319:1;25305:16;;;;;;;;25281:21;;25305:16;;;;;;;;;;-1:-1:-1;25305:16:0;25281:40;;25350:4;25332;25337:1;25332:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;25332:23:0;;;-1:-1:-1;;;;;25332:23:0;;;;;11163:42;25366:4;25371:1;25366:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;25366:23:0;;;-1:-1:-1;;;;;25366:23:0;;;;;25400:56;25417:4;25432:9;25444:11;25400:8;:56::i;:::-;25495:229;;-1:-1:-1;;;25495:229:0;;-1:-1:-1;;;;;25495:9:0;:63;;;;:229;;25573:11;;25599:1;;25643:4;;25670:12;;25698:15;;25495:229;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25210:522;25154:578;:::o;23199:428::-;23348:56;23365:4;23380:9;23392:11;23348:8;:56::i;:::-;23415:44;;-1:-1:-1;;;23415:44:0;;-1:-1:-1;;;;;23436:9:0;13626:32:1;23415:44:0;;;13608:51:1;13675:18;;;13668:34;;;11163:42:0;;23415:12;;13581:18:1;;23415:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;23502:117:0;;-1:-1:-1;;;23502:117:0;;23533:4;23502:117;;;22380:34:1;;;11163:42:0;22430:18:1;;;22423:43;22482:18;;;22475:34;;;22525:18;;;22518:34;;;23580:1:0;22568:19:1;;;22561:35;;;22612:19;;;22605:35;22656:19;;;22649:44;23603:15:0;22709:19:1;;;22702:35;23502:9:0;-1:-1:-1;;;;;23502:22:0;;;;22314:19:1;;23502:117:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;23199:428;;:::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;793:173::-;861:20;;-1:-1:-1;;;;;910:31:1;;900:42;;890:70;;956:1;953;946:12;890:70;793:173;;;:::o;971:254::-;1039:6;1047;1100:2;1088:9;1079:7;1075:23;1071:32;1068:52;;;1116:1;1113;1106:12;1068:52;1139:29;1158:9;1139:29;:::i;:::-;1129:39;1215:2;1200:18;;;;1187:32;;-1:-1:-1;;;971:254:1:o;1422:186::-;1481:6;1534:2;1522:9;1513:7;1509:23;1505:32;1502:52;;;1550:1;1547;1540:12;1502:52;1573:29;1592:9;1573:29;:::i;:::-;1563:39;1422:186;-1:-1:-1;;;1422:186:1:o;2023:328::-;2100:6;2108;2116;2169:2;2157:9;2148:7;2144:23;2140:32;2137:52;;;2185:1;2182;2175:12;2137:52;2208:29;2227:9;2208:29;:::i;:::-;2198:39;;2256:38;2290:2;2279:9;2275:18;2256:38;:::i;:::-;2246:48;;2341:2;2330:9;2326:18;2313:32;2303:42;;2023:328;;;;;:::o;2356:180::-;2415:6;2468:2;2456:9;2447:7;2443:23;2439:32;2436:52;;;2484:1;2481;2474:12;2436:52;-1:-1:-1;2507:23:1;;2356:180;-1:-1:-1;2356:180:1:o;2938:127::-;2999:10;2994:3;2990:20;2987:1;2980:31;3030:4;3027:1;3020:15;3054:4;3051:1;3044:15;3070:275;3141:2;3135:9;3206:2;3187:13;;-1:-1:-1;;3183:27:1;3171:40;;3241:18;3226:34;;3262:22;;;3223:62;3220:88;;;3288:18;;:::i;:::-;3324:2;3317:22;3070:275;;-1:-1:-1;3070:275:1:o;3350:183::-;3410:4;3443:18;3435:6;3432:30;3429:56;;;3465:18;;:::i;:::-;-1:-1:-1;3510:1:1;3506:14;3522:4;3502:25;;3350:183::o;3538:662::-;3592:5;3645:3;3638:4;3630:6;3626:17;3622:27;3612:55;;3663:1;3660;3653:12;3612:55;3699:6;3686:20;3725:4;3749:60;3765:43;3805:2;3765:43;:::i;:::-;3749:60;:::i;:::-;3843:15;;;3929:1;3925:10;;;;3913:23;;3909:32;;;3874:12;;;;3953:15;;;3950:35;;;3981:1;3978;3971:12;3950:35;4017:2;4009:6;4005:15;4029:142;4045:6;4040:3;4037:15;4029:142;;;4111:17;;4099:30;;4149:12;;;;4062;;4029:142;;;-1:-1:-1;4189:5:1;3538:662;-1:-1:-1;;;;;;3538:662:1:o;4205:1146::-;4323:6;4331;4384:2;4372:9;4363:7;4359:23;4355:32;4352:52;;;4400:1;4397;4390:12;4352:52;4440:9;4427:23;4469:18;4510:2;4502:6;4499:14;4496:34;;;4526:1;4523;4516:12;4496:34;4564:6;4553:9;4549:22;4539:32;;4609:7;4602:4;4598:2;4594:13;4590:27;4580:55;;4631:1;4628;4621:12;4580:55;4667:2;4654:16;4689:4;4713:60;4729:43;4769:2;4729:43;:::i;4713:60::-;4807:15;;;4889:1;4885:10;;;;4877:19;;4873:28;;;4838:12;;;;4913:19;;;4910:39;;;4945:1;4942;4935:12;4910:39;4969:11;;;;4989:148;5005:6;5000:3;4997:15;4989:148;;;5071:23;5090:3;5071:23;:::i;:::-;5059:36;;5022:12;;;;5115;;;;4989:148;;;5156:5;-1:-1:-1;;5199:18:1;;5186:32;;-1:-1:-1;;5230:16:1;;;5227:36;;;5259:1;5256;5249:12;5227:36;;5282:63;5337:7;5326:8;5315:9;5311:24;5282:63;:::i;:::-;5272:73;;;4205:1146;;;;;:::o;5356:118::-;5442:5;5435:13;5428:21;5421:5;5418:32;5408:60;;5464:1;5461;5454:12;5408:60;5356:118;:::o;5479:315::-;5544:6;5552;5605:2;5593:9;5584:7;5580:23;5576:32;5573:52;;;5621:1;5618;5611:12;5573:52;5644:29;5663:9;5644:29;:::i;:::-;5634:39;;5723:2;5712:9;5708:18;5695:32;5736:28;5758:5;5736:28;:::i;:::-;5783:5;5773:15;;;5479:315;;;;;:::o;5799:316::-;5876:6;5884;5892;5945:2;5933:9;5924:7;5920:23;5916:32;5913:52;;;5961:1;5958;5951:12;5913:52;-1:-1:-1;;5984:23:1;;;6054:2;6039:18;;6026:32;;-1:-1:-1;6105:2:1;6090:18;;;6077:32;;5799:316;-1:-1:-1;5799:316:1:o;6120:260::-;6188:6;6196;6249:2;6237:9;6228:7;6224:23;6220:32;6217:52;;;6265:1;6262;6255:12;6217:52;6288:29;6307:9;6288:29;:::i;:::-;6278:39;;6336:38;6370:2;6359:9;6355:18;6336:38;:::i;:::-;6326:48;;6120:260;;;;;:::o;6385:241::-;6441:6;6494:2;6482:9;6473:7;6469:23;6465:32;6462:52;;;6510:1;6507;6500:12;6462:52;6549:9;6536:23;6568:28;6590:5;6568:28;:::i;6852:380::-;6931:1;6927:12;;;;6974;;;6995:61;;7049:4;7041:6;7037:17;7027:27;;6995:61;7102:2;7094:6;7091:14;7071:18;7068:38;7065:161;;7148:10;7143:3;7139:20;7136:1;7129:31;7183:4;7180:1;7173:15;7211:4;7208:1;7201:15;7065:161;;6852:380;;;:::o;7646:356::-;7848:2;7830:21;;;7867:18;;;7860:30;7926:34;7921:2;7906:18;;7899:62;7993:2;7978:18;;7646:356::o;8007:127::-;8068:10;8063:3;8059:20;8056:1;8049:31;8099:4;8096:1;8089:15;8123:4;8120:1;8113:15;8139:168;8212:9;;;8243;;8260:15;;;8254:22;;8240:37;8230:71;;8281:18;;:::i;8312:217::-;8352:1;8378;8368:132;;8422:10;8417:3;8413:20;8410:1;8403:31;8457:4;8454:1;8447:15;8485:4;8482:1;8475:15;8368:132;-1:-1:-1;8514:9:1;;8312:217::o;8944:125::-;9009:9;;;9030:10;;;9027:36;;;9043:18;;:::i;10263:127::-;10324:10;10319:3;10315:20;10312:1;10305:31;10355:4;10352:1;10345:15;10379:4;10376:1;10369:15;10395:135;10434:3;10455:17;;;10452:43;;10475:18;;:::i;:::-;-1:-1:-1;10522:1:1;10511:13;;10395:135::o;13245:184::-;13315:6;13368:2;13356:9;13347:7;13343:23;13339:32;13336:52;;;13384:1;13381;13374:12;13336:52;-1:-1:-1;13407:16:1;;13245:184;-1:-1:-1;13245:184:1:o;13713:245::-;13780:6;13833:2;13821:9;13812:7;13808:23;13804:32;13801:52;;;13849:1;13846;13839:12;13801:52;13881:9;13875:16;13900:28;13922:5;13900:28;:::i;17055:401::-;17257:2;17239:21;;;17296:2;17276:18;;;17269:30;17335:34;17330:2;17315:18;;17308:62;-1:-1:-1;;;17401:2:1;17386:18;;17379:35;17446:3;17431:19;;17055:401::o;17461:399::-;17663:2;17645:21;;;17702:2;17682:18;;;17675:30;17741:34;17736:2;17721:18;;17714:62;-1:-1:-1;;;17807:2:1;17792:18;;17785:33;17850:3;17835:19;;17461:399::o;18574:128::-;18641:9;;;18662:11;;;18659:37;;;18676:18;;:::i;20998:980::-;21260:4;21308:3;21297:9;21293:19;21339:6;21328:9;21321:25;21365:2;21403:6;21398:2;21387:9;21383:18;21376:34;21446:3;21441:2;21430:9;21426:18;21419:31;21470:6;21505;21499:13;21536:6;21528;21521:22;21574:3;21563:9;21559:19;21552:26;;21613:2;21605:6;21601:15;21587:29;;21634:1;21644:195;21658:6;21655:1;21652:13;21644:195;;;21723:13;;-1:-1:-1;;;;;21719:39:1;21707:52;;21814:15;;;;21779:12;;;;21755:1;21673:9;21644:195;;;-1:-1:-1;;;;;;;21895:32:1;;;;21890:2;21875:18;;21868:60;-1:-1:-1;;;21959:3:1;21944:19;21937:35;21856:3;20998:980;-1:-1:-1;;;20998:980:1:o;22748:306::-;22836:6;22844;22852;22905:2;22893:9;22884:7;22880:23;22876:32;22873:52;;;22921:1;22918;22911:12;22873:52;22950:9;22944:16;22934:26;;23000:2;22989:9;22985:18;22979:25;22969:35;;23044:2;23033:9;23029:18;23023:25;23013:35;;22748:306;;;;;:::o
Swarm Source
ipfs://8b6ef77c99515a81f260c988fc8cbd88a122f0df7be111323599e0ab1eeb7dfa
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 27 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.