Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 18 from a total of 18 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 16780277 | 561 days ago | IN | 0 ETH | 0.00488785 | ||||
Set Sell Fees | 16780268 | 561 days ago | IN | 0 ETH | 0.00172147 | ||||
Approve | 16780268 | 561 days ago | IN | 0 ETH | 0.0013957 | ||||
Approve | 16780256 | 561 days ago | IN | 0 ETH | 0.001571 | ||||
Approve | 16780251 | 561 days ago | IN | 0 ETH | 0.00195514 | ||||
Approve | 16780249 | 561 days ago | IN | 0 ETH | 0.00166509 | ||||
Approve | 16780248 | 561 days ago | IN | 0 ETH | 0.00145974 | ||||
Approve | 16780247 | 561 days ago | IN | 0 ETH | 0.00156496 | ||||
Approve | 16780246 | 561 days ago | IN | 0 ETH | 0.00162001 | ||||
Approve | 16780246 | 561 days ago | IN | 0 ETH | 0.00162001 | ||||
Approve | 16780246 | 561 days ago | IN | 0 ETH | 0.00172242 | ||||
Approve | 16780246 | 561 days ago | IN | 0 ETH | 0.00175966 | ||||
Approve | 16780246 | 561 days ago | IN | 0 ETH | 0.00175966 | ||||
Approve | 16780246 | 561 days ago | IN | 0 ETH | 0.00281333 | ||||
Start Trading | 16780222 | 561 days ago | IN | 0 ETH | 0.0016062 | ||||
Transfer | 16780137 | 561 days ago | IN | 0 ETH | 0.00317125 | ||||
Approve | 16780126 | 561 days ago | IN | 0 ETH | 0.00179625 | ||||
0x60a06040 | 16780117 | 561 days ago | IN | 0 ETH | 0.16844167 |
Loading...
Loading
Contract Name:
PulsechainNameService
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-03-08 */ /** t.me/pls_pulsechain_name_service */ //SPDX-License-Identifier: MIT pragma solidity 0.8.18; // Just the basic IERC20 interface interface IERC20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address _owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } // We use the Auth contract mainly to have two devs able to interacet with the contract abstract contract Auth { address internal owner; mapping (address => bool) internal authorizations; constructor(address _owner) { owner = _owner; authorizations[_owner] = true; } modifier onlyOwner() { require(isOwner(msg.sender), "!OWNER"); _; } modifier authorized() { require(isAuthorized(msg.sender), "!AUTHORIZED"); _; } function authorize(address adr) public onlyOwner { authorizations[adr] = true; } function unauthorize(address adr) public onlyOwner { authorizations[adr] = false; } function isOwner(address account) public view returns (bool) { return account == owner; } function isAuthorized(address adr) public view returns (bool) { return authorizations[adr]; } function transferOwnership(address payable adr) public onlyOwner { owner = adr; authorizations[adr] = true; emit OwnershipTransferred(adr); } event OwnershipTransferred(address owner); } interface IDEXFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IDEXRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract PulsechainNameService is IERC20, Auth { // Constant addresses address constant DEAD = 0x000000000000000000000000000000000000dEaD; address constant ZERO = 0x0000000000000000000000000000000000000000; IDEXRouter public constant router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // Immutable vars address public immutable pair; // After we set the pair we don't have to change it again // Token info is constant string constant _name = "Pulsechain Name Service"; string constant _symbol = ".PLS"; uint8 constant _decimals = 18; // Total supply is 1 billion uint256 _totalSupply = 1 * (10**9) * (10 ** _decimals); // The tax divisor is also constant (and hence immutable) // 1000 so we can also use halves, like 2.5% uint256 constant taxDivisor = 1_000; // 10 / 1000 = 0.01 = 1% uint256 public _maxTxAmount = _totalSupply * 20 / taxDivisor; uint256 public _maxWalletToken = _totalSupply * 20 / taxDivisor; // Keep track of wallet balances and approvals (allowance) mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) _allowances; // Mapping to keep track of what wallets/contracts are exempt // from fees mapping (address => bool) isFeeExempt; mapping (address => bool) isTxLimitExempt; // Both wallet + max TX // Also, to keep it organized, a seperate mapping to exclude the presale // and locker from limits mapping (address => bool) presaleOrlock; //fees are mulitplied by 10 to allow decimals, and therefore dividied by 1000 (see takefee) uint256 marketingBuyFee = 20; uint256 liquidityBuyFee = 0; uint256 developmentBuyFee = 20; uint256 public totalBuyFee = marketingBuyFee + liquidityBuyFee + developmentBuyFee; uint256 marketingSellFee = 20; uint256 liquiditySellFee = 0; uint256 developmentSellFee = 20; uint256 public totalSellFee = marketingSellFee + liquiditySellFee + developmentSellFee; // For the sniper friends uint256 private sniperTaxTill; // In case anything would go wrong with fees we can just disable them bool feesEnabled = true; // Whether tx limits should apply or not bool limits = true; // To keep track of the tokens collected to swap uint256 private tokensForMarketing; uint256 private tokensForLiquidity; uint256 private tokensForDev; // Wallets used to send the fees to address public liquidityWallet; address public marketingWallet; address public developmentWallet; // One time trade lock bool tradeBlock = true; bool lockUsed = false; // Contract cant be tricked into spam selling exploit uint256 lastSellTime; // When to swap contract tokens, and how many to swap bool public swapEnabled = true; uint256 public swapThreshold = _totalSupply * 10 / 100_000; // 0.01% event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity); // This will just check if the transferf is called from within // the token -> ETH swap when processing the fees (and adding LP) bool inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } constructor () Auth(msg.sender) { // Create the lp pair pair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this)); // Exclude the contract isFeeExempt[address(this)] = true; isTxLimitExempt[address(this)] = true; // Exclude the owner isFeeExempt[msg.sender] = true; isTxLimitExempt[msg.sender] = true; // Exclude the pair isTxLimitExempt[address(pair)] = true; // Exclude the router isTxLimitExempt[address(router)] = true; // Set fee receivers liquidityWallet = 0xB69d89155172CF3E109E2e90Ecc5439aE1a33999; marketingWallet = 0xB69d89155172CF3E109E2e90Ecc5439aE1a33999; developmentWallet = 0xB69d89155172CF3E109E2e90Ecc5439aE1a33999; // Approve this contract & owner to interact with the // router and pair contract (for swapping) _approve(address(this), address(router), _totalSupply); _approve(msg.sender, address(pair), _totalSupply); // Mint the tokens _balances[msg.sender] = _totalSupply; emit Transfer(address(0), msg.sender, _totalSupply); } receive() external payable { } function totalSupply() external view override returns (uint256) { return _totalSupply; } function decimals() external pure override returns (uint8) { return _decimals; } function symbol() external pure override returns (string memory) { return _symbol; } function name() external pure override returns (string memory) { return _name; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function getPair() external view returns (address){return pair;} // Internal approve function _approve(address owner, address spender, uint256 amount) internal virtual { _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } // Regular approve the contract function approve(address spender, uint256 amount) public override returns (bool) { _allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function approveMax(address spender) external returns (bool) { return approve(spender, _totalSupply); } // We actually only need to exempt any locks or presale addresses // we could use a feeexempt or authorize it, but this is a bit cleaner function excludeLockorPresale(address add) external authorized { // Exclude from fees isFeeExempt[add] = true; isTxLimitExempt[add] = true; // We want to allow transfers to locks and from the presale // address when trading is not yet enabled. presaleOrlock[add] = true; } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { uint256 senderBalance = _balances[sender]; // Check if the sender has sufficient balance require(senderBalance >= amount, "Insufficient Balance"); // Update balances _balances[sender] = _balances[sender] - amount; _balances[recipient] = _balances[recipient] + amount; emit Transfer(sender, recipient, amount); return true; } // Set the buy fees, this can not exceed 15%, 150 / 1000 = 0.15 = 15% function setBuyFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _developFee) external authorized{ require(_marketingFee + _liquidityFee + _developFee <= 100); // max 10% marketingBuyFee = _marketingFee; liquidityBuyFee = _liquidityFee; developmentBuyFee = _developFee; totalBuyFee = _marketingFee + _liquidityFee + _developFee; } // Set the sell fees, this can not exceed 15%, 150 / 1000 = 0.15 = 15% function setSellFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _developFee) external authorized{ require(_marketingFee + _liquidityFee + _developFee <= 250); // max 25% marketingSellFee = _marketingFee; liquiditySellFee = _liquidityFee; developmentSellFee = _developFee; totalSellFee = _marketingFee + _liquidityFee + _developFee; } // To change the tax receiving wallets function setWallets(address _marketingWallet, address _liquidityWallet, address _developWallet) external authorized { marketingWallet = _marketingWallet; liquidityWallet = _liquidityWallet; developmentWallet = _developWallet; } // To limit the number of tokens a wallet can buy, especially relevant at launch function setMaxWallet(uint256 percent) external authorized { require(percent >= 10); //should be at least 1% of the total supply (note divisor is 1000) _maxWalletToken = ( _totalSupply * percent ) / taxDivisor; } // To limit the number of tokens per transactions function setTxLimit(uint256 percent) external authorized { require(percent >= 10); //should be at least 1% of the total supply (note divisor is 1000) _maxTxAmount = ( _totalSupply * percent ) / taxDivisor; } function checkLimits(address sender,address recipient, uint256 amount) internal view { // If both sender and recipient are excluded we don't have to limit if (isTxLimitExempt[sender] && isTxLimitExempt[recipient]){return;} // In any other case we will check whether this is a buy or sell // to determine the tx limit // buy if (sender == pair && !isTxLimitExempt[recipient]) { require(amount <= _maxTxAmount, "Max tx limit"); // sell } else if(recipient == pair && !isTxLimitExempt[sender] ) { require(amount <= _maxTxAmount, "Max tx limit"); } // Also check max wallet if (!isTxLimitExempt[recipient]) { require(amount + balanceOf(recipient) <= _maxWalletToken, "Max wallet"); } } // We will lift the transaction limits just after launch function liftLimits() external authorized { limits = false; } // This would make the token fee-less in case taking fees // would at any point block transfers. This is reversible function setFeeTaking(bool takeFees) external authorized { feesEnabled = takeFees; } // Enable trading - this can only be called once (by just the owner) function startTrading() external onlyOwner { require(lockUsed == false); tradeBlock = false; sniperTaxTill = block.number + 2; // (<sniperTaxTill, so first block) lockUsed = true; } // When and if to swap the tokens in the contract function setTokenSwapSettings(bool _enabled, uint256 _threshold) external authorized { swapEnabled = _enabled; swapThreshold = _threshold * (10 ** _decimals); } // Check if the contract should swap tokens function shouldTokenSwap(address recipient) internal view returns (bool) { return recipient == pair // i.e. is sell && lastSellTime + 1 < block.timestamp // block contract spam sells && !inSwap && swapEnabled && _balances[address(this)] >= swapThreshold; } function takeFee(address from, address to, uint256 amount) internal returns (uint256) { // If the sender or receiver is exempt from fees, skip fees if (isFeeExempt[from] || isFeeExempt[to]) { return amount; } // This does not charge for wallet-wallet transfers uint256 fees; // Sniper tax if (block.number < sniperTaxTill) { fees = amount * 98 / 100; // 98% tax tokensForLiquidity += (fees * 50) / 98; tokensForMarketing += (fees * 48) / 98; } // On sell else if (to == pair && totalSellFee > 0) { fees = amount * totalSellFee / taxDivisor; tokensForLiquidity += (fees * liquiditySellFee) / totalSellFee; tokensForDev += (fees * developmentSellFee) / totalSellFee; tokensForMarketing += (fees * marketingSellFee) / totalSellFee; } // On buy else if (from == pair && totalBuyFee > 0) { fees = amount * totalBuyFee / taxDivisor; tokensForLiquidity += (fees * liquidityBuyFee) / totalBuyFee ; tokensForDev += (fees * developmentBuyFee) / totalBuyFee; tokensForMarketing += (fees * marketingBuyFee) / totalBuyFee; } // If we collected fees, send them to the contract if (fees > 0) { _basicTransfer(from, address(this), fees); emit Transfer(from, address(this), fees); } // Return the taxed amount return amount -= fees; } function swapTokensForEth(uint256 tokenAmount) private { // Swap path token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); // Make the swap router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // Add liquidity from the contract. Now the LP tokens get send to the lP // wallet, but we could also change the LP receiver to the burn address leter router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, 0, liquidityWallet, block.timestamp ); } function swapBack() internal swapping { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev; bool success; if (contractBalance == 0 || totalTokensToSwap == 0) {return;} // Halve the amount of liquidity tokens uint256 liquidityTokens = (contractBalance * tokensForLiquidity) / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance - liquidityTokens; uint256 initialETHBalance = address(this).balance; // Swap the tokens for ETH swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance - initialETHBalance; uint256 ethForMarketing = (ethBalance * tokensForMarketing) / totalTokensToSwap; uint256 ethForDev = (ethBalance * tokensForDev) / totalTokensToSwap; uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev; // Reset token fee counts tokensForLiquidity = 0; tokensForMarketing = 0; tokensForDev = 0; // Send Dev fees (success, ) = address(developmentWallet).call{value: ethForDev}(""); // Add liquidty if (liquidityTokens > 0 && ethForLiquidity > 0) { addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity); } // Whatever remains (this should be ~ethForMarketing) send to the marketing wallet (success, ) = address(marketingWallet).call{value: address(this).balance}(""); lastSellTime = block.timestamp; } function transfer(address recipient, uint256 amount) external override returns (bool) { if (owner == msg.sender){ return _basicTransfer(msg.sender, recipient, amount); } else { return _transferFrom(msg.sender, recipient, amount); } } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); if(_allowances[sender][msg.sender] != _totalSupply){ // Get the current allowance uint256 curAllowance = _allowances[sender][msg.sender]; require(curAllowance >= amount, "Insufficient Allowance"); _allowances[sender][msg.sender] -= amount; } return _transferFrom(sender, recipient, amount); } function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); // These transfers are always feeless and limitless if ( authorizations[sender] || authorizations[recipient] || presaleOrlock[sender] || inSwap) { return _basicTransfer(sender, recipient, amount); } // In any other case, check if trading is open already require(tradeBlock == false,"Trading not open yet"); // If limits are enabled we check the max wallet and max tx. if (limits){checkLimits(sender, recipient, amount);} // Check how much fees are accumulated in the contract, if > threshold, swap if(shouldTokenSwap(recipient)){ swapBack();} // Charge transaction fees (only swaps) when enabled if(feesEnabled){ amount = (recipient == pair || sender == pair) ? takeFee(sender, recipient, amount) : amount; } // Send the remaining tokens, after fee _basicTransfer(sender, recipient, amount); emit Transfer(sender, recipient, amount); return true; } // In case anyone would send ETH to the contract directly // or when, for some reason, autoswap would fail. We // send the contact ETH to the marketing wallet function clearStuckWETH(uint256 perc) external authorized { uint256 amountWETH = address(this).balance; payable(marketingWallet).transfer(amountWETH * perc / 100); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"perc","type":"uint256"}],"name":"clearStuckWETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"add","type":"address"}],"name":"excludeLockorPresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liftLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liquidityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_developFee","type":"uint256"}],"name":"setBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"takeFees","type":"bool"}],"name":"setFeeTaking","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_developFee","type":"uint256"}],"name":"setSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_threshold","type":"uint256"}],"name":"setTokenSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_liquidityWallet","type":"address"},{"internalType":"address","name":"_developWallet","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a0604052620000126012600a620005a5565b6200002290633b9aca00620005bd565b6002556103e86002546014620000399190620005bd565b620000459190620005d7565b6003556103e860025460146200005c9190620005bd565b620000689190620005d7565b6004556014600a8190556000600b819055600c8290556200008a9082620005fa565b620000969190620005fa565b600d556014600e8190556000600f8190556010829055620000b89082620005fa565b620000c49190620005fa565b6011556013805461010161ffff199091161790556019805461ffff60a01b1916600160a01b179055601b805460ff19166001179055600254620186a0906200010e90600a620005bd565b6200011a9190620005d7565b601c553480156200012a57600080fd5b50600080546001600160a01b031916339081178255815260016020818152604092839020805460ff1916909217909155815163c45a015560e01b81529151737a250d5630b4cf539739df2c5dacb4c659f2488d9263c45a01559260048083019391928290030181865afa158015620001a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001cc919062000610565b6001600160a01b031663c9c65396737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200022d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000253919062000610565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015620002a0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c6919062000610565b6001600160a01b031660808190523060008181526007602081815260408084208054600160ff1991821681179092556008808552838720805483168417905533875294845282862080548216831790559390925280842080548416831790559483529382208054821685179055737a250d5630b4cf539739df2c5dacb4c659f2488d918290527f226e7c4e32ba0cd918c39b21526eb23f3f5958fcfd83d5cf69b9510bf01e2e1780549091169093179092556017805473b69d89155172cf3e109e2e90ecc5439ae1a339996001600160a01b0319918216811790925560188054821683179055601980549091169091179055600254620003c792906200042f565b620003de336080516002546200042f60201b60201c565b60025433600081815260056020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36200063b565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004e7578160001904821115620004cb57620004cb62000490565b80851615620004d957918102915b93841c9390800290620004ab565b509250929050565b60008262000500575060016200059f565b816200050f575060006200059f565b8160018114620005285760028114620005335762000553565b60019150506200059f565b60ff84111562000547576200054762000490565b50506001821b6200059f565b5060208310610133831016604e8410600b841016171562000578575081810a6200059f565b620005848383620004a6565b80600019048211156200059b576200059b62000490565b0290505b92915050565b6000620005b660ff841683620004ef565b9392505050565b80820281158282048414176200059f576200059f62000490565b600082620005f557634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156200059f576200059f62000490565b6000602082840312156200062357600080fd5b81516001600160a01b0381168114620005b657600080fd5b6080516121656200068f6000396000818161059301528181610624015281816110300152818161106b015281816112810152818161132601528181611449015281816117da01526118b001526121656000f3fe6080604052600436106102295760003560e01c806375f0a87411610123578063c1f1b1b5116100ab578063f2fde38b1161006f578063f2fde38b146106ee578063f60b3d6d1461070e578063f887ea4014610723578063fe6236741461074b578063fe9fbb801461076b57600080fd5b8063c1f1b1b514610615578063d469801614610648578063dd62ed3e14610668578063eb341040146106ae578063f0b37c04146106ce57600080fd5b80639d9241ec116100f25780639d9241ec1461056b578063a8aa1b3114610581578063a9059cbb146105b5578063b6a5d7de146105d5578063c04a5414146105f557600080fd5b806375f0a874146104da57806378109e54146105125780637d1db4a51461052857806395d89b411461053e57600080fd5b80632f54bf6e116101b15780635d0044ca116101755780635d0044ca1461042a5780636ddd17131461044a57806370a082311461046457806372f2943a1461049a57806375cb1bd1146104ba57600080fd5b80632f54bf6e14610389578063313ce567146103b8578063571ac8b0146103d457806359b107b9146103f45780635c85974f1461040a57600080fd5b80630d075d9c116101f85780630d075d9c146102ff5780630f683e901461031f57806318160ddd1461033f57806323b872dd14610354578063293230b81461037457600080fd5b80630445b6671461023557806304fda8ff1461025e57806306fdde0314610280578063095ea7b3146102cf57600080fd5b3661023057005b600080fd5b34801561024157600080fd5b5061024b601c5481565b6040519081526020015b60405180910390f35b34801561026a57600080fd5b5061027e610279366004611c23565b61078b565b005b34801561028c57600080fd5b5060408051808201909152601781527f50756c7365636861696e204e616d65205365727669636500000000000000000060208201525b6040516102559190611c3c565b3480156102db57600080fd5b506102ef6102ea366004611ca2565b61080d565b6040519015158152602001610255565b34801561030b57600080fd5b5061027e61031a366004611cce565b61087a565b34801561032b57600080fd5b5061027e61033a366004611cce565b6108ed565b34801561034b57600080fd5b5060025461024b565b34801561036057600080fd5b506102ef61036f366004611cfa565b610960565b34801561038057600080fd5b5061027e610a96565b34801561039557600080fd5b506102ef6103a4366004611d3b565b6000546001600160a01b0391821691161490565b3480156103c457600080fd5b5060405160128152602001610255565b3480156103e057600080fd5b506102ef6103ef366004611d3b565b610b07565b34801561040057600080fd5b5061024b600d5481565b34801561041657600080fd5b5061027e610425366004611c23565b610b15565b34801561043657600080fd5b5061027e610445366004611c23565b610b69565b34801561045657600080fd5b50601b546102ef9060ff1681565b34801561047057600080fd5b5061024b61047f366004611d3b565b6001600160a01b031660009081526005602052604090205490565b3480156104a657600080fd5b5061027e6104b5366004611d3b565b610bbd565b3480156104c657600080fd5b5061027e6104d5366004611d58565b610c2d565b3480156104e657600080fd5b506018546104fa906001600160a01b031681565b6040516001600160a01b039091168152602001610255565b34801561051e57600080fd5b5061024b60045481565b34801561053457600080fd5b5061024b60035481565b34801561054a57600080fd5b506040805180820190915260048152632e504c5360e01b60208201526102c2565b34801561057757600080fd5b5061024b60115481565b34801561058d57600080fd5b506104fa7f000000000000000000000000000000000000000000000000000000000000000081565b3480156105c157600080fd5b506102ef6105d0366004611ca2565b610c91565b3480156105e157600080fd5b5061027e6105f0366004611d3b565b610cc3565b34801561060157600080fd5b506019546104fa906001600160a01b031681565b34801561062157600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006104fa565b34801561065457600080fd5b506017546104fa906001600160a01b031681565b34801561067457600080fd5b5061024b610683366004611da3565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156106ba57600080fd5b5061027e6106c9366004611df1565b610d14565b3480156106da57600080fd5b5061027e6106e9366004611d3b565b610d64565b3480156106fa57600080fd5b5061027e610709366004611d3b565b610daf565b34801561071a57600080fd5b5061027e610e45565b34801561072f57600080fd5b506104fa737a250d5630b4cf539739df2c5dacb4c659f2488d81565b34801561075757600080fd5b5061027e610766366004611e0d565b610e77565b34801561077757600080fd5b506102ef610786366004611d3b565b610eaf565b61079433610eaf565b6107b95760405162461bcd60e51b81526004016107b090611e28565b60405180910390fd5b60185447906001600160a01b03166108fc60646107d68585611e63565b6107e09190611e7a565b6040518115909202916000818181858888f19350505050158015610808573d6000803e3d6000fd5b505050565b3360008181526006602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108689086815260200190565b60405180910390a35060015b92915050565b61088333610eaf565b61089f5760405162461bcd60e51b81526004016107b090611e28565b6064816108ac8486611e9c565b6108b69190611e9c565b11156108c157600080fd5b600a839055600b829055600c819055806108db8385611e9c565b6108e59190611e9c565b600d55505050565b6108f633610eaf565b6109125760405162461bcd60e51b81526004016107b090611e28565b60fa8161091f8486611e9c565b6109299190611e9c565b111561093457600080fd5b600e839055600f82905560108190558061094e8385611e9c565b6109589190611e9c565b601155505050565b60006001600160a01b0384166109885760405162461bcd60e51b81526004016107b090611eaf565b6001600160a01b0383166109ae5760405162461bcd60e51b81526004016107b090611ef4565b6002546001600160a01b038516600090815260066020908152604080832033845290915290205414610a81576001600160a01b038416600090815260066020908152604080832033845290915290205482811015610a475760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420416c6c6f77616e636560501b60448201526064016107b0565b6001600160a01b038516600090815260066020908152604080832033845290915281208054859290610a7a908490611f37565b9091555050505b610a8c848484610ecd565b90505b9392505050565b6000546001600160a01b03163314610ac05760405162461bcd60e51b81526004016107b090611f4a565b601954600160a81b900460ff1615610ad757600080fd5b6019805460ff60a01b19169055610aef436002611e9c565b6012556019805460ff60a81b1916600160a81b179055565b60006108748260025461080d565b610b1e33610eaf565b610b3a5760405162461bcd60e51b81526004016107b090611e28565b600a811015610b4857600080fd5b6103e881600254610b599190611e63565b610b639190611e7a565b60035550565b610b7233610eaf565b610b8e5760405162461bcd60e51b81526004016107b090611e28565b600a811015610b9c57600080fd5b6103e881600254610bad9190611e63565b610bb79190611e7a565b60045550565b610bc633610eaf565b610be25760405162461bcd60e51b81526004016107b090611e28565b6001600160a01b031660009081526007602090815260408083208054600160ff1991821681179092556008845282852080548216831790556009909352922080549091169091179055565b610c3633610eaf565b610c525760405162461bcd60e51b81526004016107b090611e28565b601880546001600160a01b039485166001600160a01b031991821617909155601780549385169382169390931790925560198054919093169116179055565b60008054336001600160a01b0390911603610cb857610cb133848461111a565b9050610874565b610cb1338484610ecd565b6000546001600160a01b03163314610ced5760405162461bcd60e51b81526004016107b090611f4a565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b610d1d33610eaf565b610d395760405162461bcd60e51b81526004016107b090611e28565b601b805460ff1916831515179055610d536012600a61204e565b610d5d9082611e63565b601c555050565b6000546001600160a01b03163314610d8e5760405162461bcd60e51b81526004016107b090611f4a565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b03163314610dd95760405162461bcd60e51b81526004016107b090611f4a565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b610e4e33610eaf565b610e6a5760405162461bcd60e51b81526004016107b090611e28565b6013805461ff0019169055565b610e8033610eaf565b610e9c5760405162461bcd60e51b81526004016107b090611e28565b6013805460ff1916911515919091179055565b6001600160a01b031660009081526001602052604090205460ff1690565b60006001600160a01b038416610ef55760405162461bcd60e51b81526004016107b090611eaf565b6001600160a01b038316610f1b5760405162461bcd60e51b81526004016107b090611ef4565b6001600160a01b03841660009081526001602052604090205460ff1680610f5a57506001600160a01b03831660009081526001602052604090205460ff165b80610f7d57506001600160a01b03841660009081526009602052604090205460ff165b80610f8a5750601d5460ff165b15610fa157610f9a84848461111a565b9050610a8f565b601954600160a01b900460ff1615610ff25760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016107b0565b601354610100900460ff161561100d5761100d848484611235565b61101683611445565b15611023576110236114d4565b60135460ff16156110b7577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316148061109f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316145b6110a957816110b4565b6110b4848484611707565b91505b6110c284848461111a565b50826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161110891815260200190565b60405180910390a35060019392505050565b6001600160a01b0383166000908152600560205260408120548281101561117a5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b60448201526064016107b0565b6001600160a01b03851660009081526005602052604090205461119e908490611f37565b6001600160a01b0380871660009081526005602052604080822093909355908616815220546111ce908490611e9c565b6001600160a01b0380861660008181526005602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112229087815260200190565b60405180910390a3506001949350505050565b6001600160a01b03831660009081526008602052604090205460ff16801561127557506001600160a01b03821660009081526008602052604090205460ff165b1561127f57505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03161480156112d957506001600160a01b03821660009081526008602052604090205460ff16155b156113245760035481111561131f5760405162461bcd60e51b815260206004820152600c60248201526b13585e081d1e081b1a5b5a5d60a21b60448201526064016107b0565b6113c4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614801561137e57506001600160a01b03831660009081526008602052604090205460ff16155b156113c4576003548111156113c45760405162461bcd60e51b815260206004820152600c60248201526b13585e081d1e081b1a5b5a5d60a21b60448201526064016107b0565b6001600160a01b03821660009081526008602052604090205460ff16610808576004546001600160a01b03831660009081526005602052604090205461140a9083611e9c565b11156108085760405162461bcd60e51b815260206004820152600a60248201526913585e081dd85b1b195d60b21b60448201526064016107b0565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316148015611495575042601a5460016114939190611e9c565b105b80156114a45750601d5460ff16155b80156114b25750601b5460ff165b80156108745750601c5430600090815260056020526040902054101592915050565b601d805460ff1916600117905530600090815260056020526040812054905060006016546014546015546115089190611e9c565b6115129190611e9c565b90506000821580611521575081155b1561152e575050506116fb565b6000600283601554866115419190611e63565b61154b9190611e7a565b6115559190611e7a565b905060006115638286611f37565b90504761156f82611a0b565b600061157b8247611f37565b90506000866014548361158e9190611e63565b6115989190611e7a565b9050600087601654846115ab9190611e63565b6115b59190611e7a565b90506000816115c48486611f37565b6115ce9190611f37565b60006015819055601481905560168190556019546040519293506001600160a01b031691849181818185875af1925050503d806000811461162b576040519150601f19603f3d011682016040523d82523d6000602084013e611630565b606091505b509098505086158015906116445750600081115b15611697576116538782611b77565b601554604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6018546040516001600160a01b03909116904790600081818185875af1925050503d80600081146116e4576040519150601f19603f3d011682016040523d82523d6000602084013e6116e9565b606091505b505042601a5550505050505050505050505b601d805460ff19169055565b6001600160a01b03831660009081526007602052604081205460ff168061174657506001600160a01b03831660009081526007602052604090205460ff165b15611752575080610a8f565b60006012544310156117d857606461176b846062611e63565b6117759190611e7a565b90506062611784826032611e63565b61178e9190611e7a565b6015600082825461179f9190611e9c565b90915550606290506117b2826030611e63565b6117bc9190611e7a565b601460008282546117cd9190611e9c565b909155506119a59050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031614801561181b57506000601154115b156118ae576103e8601154846118319190611e63565b61183b9190611e7a565b9050601154600f548261184e9190611e63565b6118589190611e7a565b601560008282546118699190611e9c565b909155505060115460105461187e9083611e63565b6118889190611e7a565b601660008282546118999190611e9c565b9091555050601154600e546117b29083611e63565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b03161480156118f157506000600d54115b156119a5576103e8600d54846119079190611e63565b6119119190611e7a565b9050600d54600b54826119249190611e63565b61192e9190611e7a565b6015600082825461193f9190611e9c565b9091555050600d54600c546119549083611e63565b61195e9190611e7a565b6016600082825461196f9190611e9c565b9091555050600d54600a546119849083611e63565b61198e9190611e7a565b6014600082825461199f9190611e9c565b90915550505b80156119f8576119b685308361111a565b5060405181815230906001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b611a028184611f37565b95945050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611a4057611a4061205d565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ab2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad69190612073565b81600181518110611ae957611ae961205d565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac94790611b41908590600090869030904290600401612090565b600060405180830381600087803b158015611b5b57600080fd5b505af1158015611b6f573d6000803e3d6000fd5b505050505050565b60175460405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b0390911660848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990839060c40160606040518083038185885af1158015611bf7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611c1c9190612101565b5050505050565b600060208284031215611c3557600080fd5b5035919050565b600060208083528351808285015260005b81811015611c6957858101830151858201604001528201611c4d565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611c9f57600080fd5b50565b60008060408385031215611cb557600080fd5b8235611cc081611c8a565b946020939093013593505050565b600080600060608486031215611ce357600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215611d0f57600080fd5b8335611d1a81611c8a565b92506020840135611d2a81611c8a565b929592945050506040919091013590565b600060208284031215611d4d57600080fd5b8135610a8f81611c8a565b600080600060608486031215611d6d57600080fd5b8335611d7881611c8a565b92506020840135611d8881611c8a565b91506040840135611d9881611c8a565b809150509250925092565b60008060408385031215611db657600080fd5b8235611dc181611c8a565b91506020830135611dd181611c8a565b809150509250929050565b80358015158114611dec57600080fd5b919050565b60008060408385031215611e0457600080fd5b611cc083611ddc565b600060208284031215611e1f57600080fd5b610a8f82611ddc565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761087457610874611e4d565b600082611e9757634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561087457610874611e4d565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111561087457610874611e4d565b60208082526006908201526510a7aba722a960d11b604082015260600190565b600181815b80851115611fa5578160001904821115611f8b57611f8b611e4d565b80851615611f9857918102915b93841c9390800290611f6f565b509250929050565b600082611fbc57506001610874565b81611fc957506000610874565b8160018114611fdf5760028114611fe957612005565b6001915050610874565b60ff841115611ffa57611ffa611e4d565b50506001821b610874565b5060208310610133831016604e8410600b8410161715612028575081810a610874565b6120328383611f6a565b806000190482111561204657612046611e4d565b029392505050565b6000610a8f60ff841683611fad565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561208557600080fd5b8151610a8f81611c8a565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156120e05784516001600160a01b0316835293830193918301916001016120bb565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561211657600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212200146c76c74025286bed708074dfc5fe723fa73621fa50fb3e0b2693aa963397764736f6c63430008120033
Deployed Bytecode
0x6080604052600436106102295760003560e01c806375f0a87411610123578063c1f1b1b5116100ab578063f2fde38b1161006f578063f2fde38b146106ee578063f60b3d6d1461070e578063f887ea4014610723578063fe6236741461074b578063fe9fbb801461076b57600080fd5b8063c1f1b1b514610615578063d469801614610648578063dd62ed3e14610668578063eb341040146106ae578063f0b37c04146106ce57600080fd5b80639d9241ec116100f25780639d9241ec1461056b578063a8aa1b3114610581578063a9059cbb146105b5578063b6a5d7de146105d5578063c04a5414146105f557600080fd5b806375f0a874146104da57806378109e54146105125780637d1db4a51461052857806395d89b411461053e57600080fd5b80632f54bf6e116101b15780635d0044ca116101755780635d0044ca1461042a5780636ddd17131461044a57806370a082311461046457806372f2943a1461049a57806375cb1bd1146104ba57600080fd5b80632f54bf6e14610389578063313ce567146103b8578063571ac8b0146103d457806359b107b9146103f45780635c85974f1461040a57600080fd5b80630d075d9c116101f85780630d075d9c146102ff5780630f683e901461031f57806318160ddd1461033f57806323b872dd14610354578063293230b81461037457600080fd5b80630445b6671461023557806304fda8ff1461025e57806306fdde0314610280578063095ea7b3146102cf57600080fd5b3661023057005b600080fd5b34801561024157600080fd5b5061024b601c5481565b6040519081526020015b60405180910390f35b34801561026a57600080fd5b5061027e610279366004611c23565b61078b565b005b34801561028c57600080fd5b5060408051808201909152601781527f50756c7365636861696e204e616d65205365727669636500000000000000000060208201525b6040516102559190611c3c565b3480156102db57600080fd5b506102ef6102ea366004611ca2565b61080d565b6040519015158152602001610255565b34801561030b57600080fd5b5061027e61031a366004611cce565b61087a565b34801561032b57600080fd5b5061027e61033a366004611cce565b6108ed565b34801561034b57600080fd5b5060025461024b565b34801561036057600080fd5b506102ef61036f366004611cfa565b610960565b34801561038057600080fd5b5061027e610a96565b34801561039557600080fd5b506102ef6103a4366004611d3b565b6000546001600160a01b0391821691161490565b3480156103c457600080fd5b5060405160128152602001610255565b3480156103e057600080fd5b506102ef6103ef366004611d3b565b610b07565b34801561040057600080fd5b5061024b600d5481565b34801561041657600080fd5b5061027e610425366004611c23565b610b15565b34801561043657600080fd5b5061027e610445366004611c23565b610b69565b34801561045657600080fd5b50601b546102ef9060ff1681565b34801561047057600080fd5b5061024b61047f366004611d3b565b6001600160a01b031660009081526005602052604090205490565b3480156104a657600080fd5b5061027e6104b5366004611d3b565b610bbd565b3480156104c657600080fd5b5061027e6104d5366004611d58565b610c2d565b3480156104e657600080fd5b506018546104fa906001600160a01b031681565b6040516001600160a01b039091168152602001610255565b34801561051e57600080fd5b5061024b60045481565b34801561053457600080fd5b5061024b60035481565b34801561054a57600080fd5b506040805180820190915260048152632e504c5360e01b60208201526102c2565b34801561057757600080fd5b5061024b60115481565b34801561058d57600080fd5b506104fa7f0000000000000000000000005d963364deb3eb1892c3809bfff30671232b9bf081565b3480156105c157600080fd5b506102ef6105d0366004611ca2565b610c91565b3480156105e157600080fd5b5061027e6105f0366004611d3b565b610cc3565b34801561060157600080fd5b506019546104fa906001600160a01b031681565b34801561062157600080fd5b507f0000000000000000000000005d963364deb3eb1892c3809bfff30671232b9bf06104fa565b34801561065457600080fd5b506017546104fa906001600160a01b031681565b34801561067457600080fd5b5061024b610683366004611da3565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156106ba57600080fd5b5061027e6106c9366004611df1565b610d14565b3480156106da57600080fd5b5061027e6106e9366004611d3b565b610d64565b3480156106fa57600080fd5b5061027e610709366004611d3b565b610daf565b34801561071a57600080fd5b5061027e610e45565b34801561072f57600080fd5b506104fa737a250d5630b4cf539739df2c5dacb4c659f2488d81565b34801561075757600080fd5b5061027e610766366004611e0d565b610e77565b34801561077757600080fd5b506102ef610786366004611d3b565b610eaf565b61079433610eaf565b6107b95760405162461bcd60e51b81526004016107b090611e28565b60405180910390fd5b60185447906001600160a01b03166108fc60646107d68585611e63565b6107e09190611e7a565b6040518115909202916000818181858888f19350505050158015610808573d6000803e3d6000fd5b505050565b3360008181526006602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108689086815260200190565b60405180910390a35060015b92915050565b61088333610eaf565b61089f5760405162461bcd60e51b81526004016107b090611e28565b6064816108ac8486611e9c565b6108b69190611e9c565b11156108c157600080fd5b600a839055600b829055600c819055806108db8385611e9c565b6108e59190611e9c565b600d55505050565b6108f633610eaf565b6109125760405162461bcd60e51b81526004016107b090611e28565b60fa8161091f8486611e9c565b6109299190611e9c565b111561093457600080fd5b600e839055600f82905560108190558061094e8385611e9c565b6109589190611e9c565b601155505050565b60006001600160a01b0384166109885760405162461bcd60e51b81526004016107b090611eaf565b6001600160a01b0383166109ae5760405162461bcd60e51b81526004016107b090611ef4565b6002546001600160a01b038516600090815260066020908152604080832033845290915290205414610a81576001600160a01b038416600090815260066020908152604080832033845290915290205482811015610a475760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420416c6c6f77616e636560501b60448201526064016107b0565b6001600160a01b038516600090815260066020908152604080832033845290915281208054859290610a7a908490611f37565b9091555050505b610a8c848484610ecd565b90505b9392505050565b6000546001600160a01b03163314610ac05760405162461bcd60e51b81526004016107b090611f4a565b601954600160a81b900460ff1615610ad757600080fd5b6019805460ff60a01b19169055610aef436002611e9c565b6012556019805460ff60a81b1916600160a81b179055565b60006108748260025461080d565b610b1e33610eaf565b610b3a5760405162461bcd60e51b81526004016107b090611e28565b600a811015610b4857600080fd5b6103e881600254610b599190611e63565b610b639190611e7a565b60035550565b610b7233610eaf565b610b8e5760405162461bcd60e51b81526004016107b090611e28565b600a811015610b9c57600080fd5b6103e881600254610bad9190611e63565b610bb79190611e7a565b60045550565b610bc633610eaf565b610be25760405162461bcd60e51b81526004016107b090611e28565b6001600160a01b031660009081526007602090815260408083208054600160ff1991821681179092556008845282852080548216831790556009909352922080549091169091179055565b610c3633610eaf565b610c525760405162461bcd60e51b81526004016107b090611e28565b601880546001600160a01b039485166001600160a01b031991821617909155601780549385169382169390931790925560198054919093169116179055565b60008054336001600160a01b0390911603610cb857610cb133848461111a565b9050610874565b610cb1338484610ecd565b6000546001600160a01b03163314610ced5760405162461bcd60e51b81526004016107b090611f4a565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b610d1d33610eaf565b610d395760405162461bcd60e51b81526004016107b090611e28565b601b805460ff1916831515179055610d536012600a61204e565b610d5d9082611e63565b601c555050565b6000546001600160a01b03163314610d8e5760405162461bcd60e51b81526004016107b090611f4a565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b03163314610dd95760405162461bcd60e51b81526004016107b090611f4a565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b610e4e33610eaf565b610e6a5760405162461bcd60e51b81526004016107b090611e28565b6013805461ff0019169055565b610e8033610eaf565b610e9c5760405162461bcd60e51b81526004016107b090611e28565b6013805460ff1916911515919091179055565b6001600160a01b031660009081526001602052604090205460ff1690565b60006001600160a01b038416610ef55760405162461bcd60e51b81526004016107b090611eaf565b6001600160a01b038316610f1b5760405162461bcd60e51b81526004016107b090611ef4565b6001600160a01b03841660009081526001602052604090205460ff1680610f5a57506001600160a01b03831660009081526001602052604090205460ff165b80610f7d57506001600160a01b03841660009081526009602052604090205460ff165b80610f8a5750601d5460ff165b15610fa157610f9a84848461111a565b9050610a8f565b601954600160a01b900460ff1615610ff25760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016107b0565b601354610100900460ff161561100d5761100d848484611235565b61101683611445565b15611023576110236114d4565b60135460ff16156110b7577f0000000000000000000000005d963364deb3eb1892c3809bfff30671232b9bf06001600160a01b0316836001600160a01b0316148061109f57507f0000000000000000000000005d963364deb3eb1892c3809bfff30671232b9bf06001600160a01b0316846001600160a01b0316145b6110a957816110b4565b6110b4848484611707565b91505b6110c284848461111a565b50826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161110891815260200190565b60405180910390a35060019392505050565b6001600160a01b0383166000908152600560205260408120548281101561117a5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b60448201526064016107b0565b6001600160a01b03851660009081526005602052604090205461119e908490611f37565b6001600160a01b0380871660009081526005602052604080822093909355908616815220546111ce908490611e9c565b6001600160a01b0380861660008181526005602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112229087815260200190565b60405180910390a3506001949350505050565b6001600160a01b03831660009081526008602052604090205460ff16801561127557506001600160a01b03821660009081526008602052604090205460ff165b1561127f57505050565b7f0000000000000000000000005d963364deb3eb1892c3809bfff30671232b9bf06001600160a01b0316836001600160a01b03161480156112d957506001600160a01b03821660009081526008602052604090205460ff16155b156113245760035481111561131f5760405162461bcd60e51b815260206004820152600c60248201526b13585e081d1e081b1a5b5a5d60a21b60448201526064016107b0565b6113c4565b7f0000000000000000000000005d963364deb3eb1892c3809bfff30671232b9bf06001600160a01b0316826001600160a01b031614801561137e57506001600160a01b03831660009081526008602052604090205460ff16155b156113c4576003548111156113c45760405162461bcd60e51b815260206004820152600c60248201526b13585e081d1e081b1a5b5a5d60a21b60448201526064016107b0565b6001600160a01b03821660009081526008602052604090205460ff16610808576004546001600160a01b03831660009081526005602052604090205461140a9083611e9c565b11156108085760405162461bcd60e51b815260206004820152600a60248201526913585e081dd85b1b195d60b21b60448201526064016107b0565b60007f0000000000000000000000005d963364deb3eb1892c3809bfff30671232b9bf06001600160a01b0316826001600160a01b0316148015611495575042601a5460016114939190611e9c565b105b80156114a45750601d5460ff16155b80156114b25750601b5460ff165b80156108745750601c5430600090815260056020526040902054101592915050565b601d805460ff1916600117905530600090815260056020526040812054905060006016546014546015546115089190611e9c565b6115129190611e9c565b90506000821580611521575081155b1561152e575050506116fb565b6000600283601554866115419190611e63565b61154b9190611e7a565b6115559190611e7a565b905060006115638286611f37565b90504761156f82611a0b565b600061157b8247611f37565b90506000866014548361158e9190611e63565b6115989190611e7a565b9050600087601654846115ab9190611e63565b6115b59190611e7a565b90506000816115c48486611f37565b6115ce9190611f37565b60006015819055601481905560168190556019546040519293506001600160a01b031691849181818185875af1925050503d806000811461162b576040519150601f19603f3d011682016040523d82523d6000602084013e611630565b606091505b509098505086158015906116445750600081115b15611697576116538782611b77565b601554604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6018546040516001600160a01b03909116904790600081818185875af1925050503d80600081146116e4576040519150601f19603f3d011682016040523d82523d6000602084013e6116e9565b606091505b505042601a5550505050505050505050505b601d805460ff19169055565b6001600160a01b03831660009081526007602052604081205460ff168061174657506001600160a01b03831660009081526007602052604090205460ff165b15611752575080610a8f565b60006012544310156117d857606461176b846062611e63565b6117759190611e7a565b90506062611784826032611e63565b61178e9190611e7a565b6015600082825461179f9190611e9c565b90915550606290506117b2826030611e63565b6117bc9190611e7a565b601460008282546117cd9190611e9c565b909155506119a59050565b7f0000000000000000000000005d963364deb3eb1892c3809bfff30671232b9bf06001600160a01b0316846001600160a01b031614801561181b57506000601154115b156118ae576103e8601154846118319190611e63565b61183b9190611e7a565b9050601154600f548261184e9190611e63565b6118589190611e7a565b601560008282546118699190611e9c565b909155505060115460105461187e9083611e63565b6118889190611e7a565b601660008282546118999190611e9c565b9091555050601154600e546117b29083611e63565b7f0000000000000000000000005d963364deb3eb1892c3809bfff30671232b9bf06001600160a01b0316856001600160a01b03161480156118f157506000600d54115b156119a5576103e8600d54846119079190611e63565b6119119190611e7a565b9050600d54600b54826119249190611e63565b61192e9190611e7a565b6015600082825461193f9190611e9c565b9091555050600d54600c546119549083611e63565b61195e9190611e7a565b6016600082825461196f9190611e9c565b9091555050600d54600a546119849083611e63565b61198e9190611e7a565b6014600082825461199f9190611e9c565b90915550505b80156119f8576119b685308361111a565b5060405181815230906001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b611a028184611f37565b95945050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611a4057611a4061205d565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ab2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad69190612073565b81600181518110611ae957611ae961205d565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac94790611b41908590600090869030904290600401612090565b600060405180830381600087803b158015611b5b57600080fd5b505af1158015611b6f573d6000803e3d6000fd5b505050505050565b60175460405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b0390911660848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990839060c40160606040518083038185885af1158015611bf7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611c1c9190612101565b5050505050565b600060208284031215611c3557600080fd5b5035919050565b600060208083528351808285015260005b81811015611c6957858101830151858201604001528201611c4d565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611c9f57600080fd5b50565b60008060408385031215611cb557600080fd5b8235611cc081611c8a565b946020939093013593505050565b600080600060608486031215611ce357600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215611d0f57600080fd5b8335611d1a81611c8a565b92506020840135611d2a81611c8a565b929592945050506040919091013590565b600060208284031215611d4d57600080fd5b8135610a8f81611c8a565b600080600060608486031215611d6d57600080fd5b8335611d7881611c8a565b92506020840135611d8881611c8a565b91506040840135611d9881611c8a565b809150509250925092565b60008060408385031215611db657600080fd5b8235611dc181611c8a565b91506020830135611dd181611c8a565b809150509250929050565b80358015158114611dec57600080fd5b919050565b60008060408385031215611e0457600080fd5b611cc083611ddc565b600060208284031215611e1f57600080fd5b610a8f82611ddc565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761087457610874611e4d565b600082611e9757634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561087457610874611e4d565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111561087457610874611e4d565b60208082526006908201526510a7aba722a960d11b604082015260600190565b600181815b80851115611fa5578160001904821115611f8b57611f8b611e4d565b80851615611f9857918102915b93841c9390800290611f6f565b509250929050565b600082611fbc57506001610874565b81611fc957506000610874565b8160018114611fdf5760028114611fe957612005565b6001915050610874565b60ff841115611ffa57611ffa611e4d565b50506001821b610874565b5060208310610133831016604e8410600b8410161715612028575081810a610874565b6120328383611f6a565b806000190482111561204657612046611e4d565b029392505050565b6000610a8f60ff841683611fad565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561208557600080fd5b8151610a8f81611c8a565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156120e05784516001600160a01b0316835293830193918301916001016120bb565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561211657600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212200146c76c74025286bed708074dfc5fe723fa73621fa50fb3e0b2693aa963397764736f6c63430008120033
Deployed Bytecode Sourcemap
2911:17846:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5848:58;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;5848:58:0;;;;;;;;20564:188;;;;;;;;;;-1:-1:-1;20564:188:0;;;;;:::i;:::-;;:::i;:::-;;7770:80;;;;;;;;;;-1:-1:-1;7842:5:0;;;;;;;;;;;;;;;;;7770:80;;;;;;;:::i;8435:216::-;;;;;;;;;;-1:-1:-1;8435:216:0;;;;;:::i;:::-;;:::i;:::-;;;1555:14:1;;1548:22;1530:41;;1518:2;1503:18;8435:216:0;1390:187:1;9861:389:0;;;;;;;;;;-1:-1:-1;9861:389:0;;;;;:::i;:::-;;:::i;10338:394::-;;;;;;;;;;-1:-1:-1;10338:394:0;;;;;:::i;:::-;;:::i;7500:88::-;;;;;;;;;;-1:-1:-1;7573:12:0;;7500:88;;18407:648;;;;;;;;;;-1:-1:-1;18407:648:0;;;;;:::i;:::-;;:::i;12992:222::-;;;;;;;;;;;;;:::i;1703:103::-;;;;;;;;;;-1:-1:-1;1703:103:0;;;;;:::i;:::-;1758:4;1793:5;-1:-1:-1;;;;;1782:16:0;;;1793:5;;1782:16;;1703:103;7594:80;;;;;;;;;;-1:-1:-1;7594:80:0;;3515:2;2758:36:1;;2746:2;2731:18;7594:80:0;2616:184:1;8659:117:0;;;;;;;;;;-1:-1:-1;8659:117:0;;;;;:::i;:::-;;:::i;4698:82::-;;;;;;;;;;;;;;;;11435:230;;;;;;;;;;-1:-1:-1;11435:230:0;;;;;:::i;:::-;;:::i;11137:235::-;;;;;;;;;;-1:-1:-1;11137:235:0;;;;;:::i;:::-;;:::i;5811:30::-;;;;;;;;;;-1:-1:-1;5811:30:0;;;;;;;;7856:105;;;;;;;;;;-1:-1:-1;7856:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;7940:18:0;7922:7;7940:18;;;:9;:18;;;;;;;7856:105;8931:332;;;;;;;;;;-1:-1:-1;8931:332:0;;;;;:::i;:::-;;:::i;10784:259::-;;;;;;;;;;-1:-1:-1;10784:259:0;;;;;:::i;:::-;;:::i;5495:30::-;;;;;;;;;;-1:-1:-1;5495:30:0;;;;-1:-1:-1;;;;;5495:30:0;;;;;;-1:-1:-1;;;;;3503:32:1;;;3485:51;;3473:2;3458:18;5495:30:0;3339:203:1;3882:64:0;;;;;;;;;;;;;;;;3814:60;;;;;;;;;;;;;;;;7680:84;;;;;;;;;;-1:-1:-1;7754:7:0;;;;;;;;;;;;-1:-1:-1;;;7754:7:0;;;;7680:84;;4898:86;;;;;;;;;;;;;;;;3266:29;;;;;;;;;;;;;;;18099:300;;;;;;;;;;-1:-1:-1;18099:300:0;;;;;:::i;:::-;;:::i;1496:94::-;;;;;;;;;;-1:-1:-1;1496:94:0;;;;;:::i;:::-;;:::i;5532:32::-;;;;;;;;;;-1:-1:-1;5532:32:0;;;;-1:-1:-1;;;;;5532:32:0;;;8106:64;;;;;;;;;;-1:-1:-1;8164:4:0;8106:64;;5458:30;;;;;;;;;;-1:-1:-1;5458:30:0;;;;-1:-1:-1;;;;;5458:30:0;;;7967:133;;;;;;;;;;-1:-1:-1;7967:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;8069:19:0;;;8051:7;8069:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;7967:133;13281:184;;;;;;;;;;-1:-1:-1;13281:184:0;;;;;:::i;:::-;;:::i;1598:97::-;;;;;;;;;;-1:-1:-1;1598:97:0;;;;;:::i;:::-;;:::i;1929:173::-;;;;;;;;;;-1:-1:-1;1929:173:0;;;;;:::i;:::-;;:::i;12603:75::-;;;;;;;;;;;;;:::i;3144:90::-;;;;;;;;;;;;3191:42;3144:90;;12812:98;;;;;;;;;;-1:-1:-1;12812:98:0;;;;;:::i;:::-;;:::i;1814:107::-;;;;;;;;;;-1:-1:-1;1814:107:0;;;;;:::i;:::-;;:::i;20564:188::-;1437:24;1450:10;1437:12;:24::i;:::-;1429:48;;;;-1:-1:-1;;;1429:48:0;;;;;;;:::i;:::-;;;;;;;;;20694:15:::1;::::0;20654:21:::1;::::0;-1:-1:-1;;;;;20694:15:0::1;20686:58;20740:3;20720:17;20733:4:::0;20654:21;20720:17:::1;:::i;:::-;:23;;;;:::i;:::-;20686:58;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;20622:130;20564:188:::0;:::o;8435:216::-;8539:10;8510:4;8527:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;8527:32:0;;;;;;;;;;:41;;;8584:37;8510:4;;8527:32;;8584:37;;;;8562:6;160:25:1;;148:2;133:18;;14:177;8584:37:0;;;;;;;;-1:-1:-1;8639:4:0;8435:216;;;;;:::o;9861:389::-;1437:24;1450:10;1437:12;:24::i;:::-;1429:48;;;;-1:-1:-1;;;1429:48:0;;;;;;;:::i;:::-;10033:3:::1;10018:11:::0;9986:29:::1;10002:13:::0;9986;:29:::1;:::i;:::-;:43;;;;:::i;:::-;:50;;9978:59;;;::::0;::::1;;10059:15;:31:::0;;;10101:15:::1;:31:::0;;;10143:17:::1;:31:::0;;;10163:11;10199:29:::1;10119:13:::0;10077;10199:29:::1;:::i;:::-;:43;;;;:::i;:::-;10185:11;:57:::0;-1:-1:-1;;;9861:389:0:o;10338:394::-;1437:24;1450:10;1437:12;:24::i;:::-;1429:48;;;;-1:-1:-1;;;1429:48:0;;;;;;;:::i;:::-;10511:3:::1;10496:11:::0;10464:29:::1;10480:13:::0;10464;:29:::1;:::i;:::-;:43;;;;:::i;:::-;:50;;10456:59;;;::::0;::::1;;10537:16;:32:::0;;;10580:16:::1;:32:::0;;;10623:18:::1;:32:::0;;;10644:11;10681:29:::1;10599:13:::0;10556;10681:29:::1;:::i;:::-;:43;;;;:::i;:::-;10666:12;:58:::0;-1:-1:-1;;;10338:394:0:o;18407:648::-;18507:4;-1:-1:-1;;;;;18532:20:0;;18524:70;;;;-1:-1:-1;;;18524:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18613:23:0;;18605:71;;;;-1:-1:-1;;;18605:71:0;;;;;;;:::i;:::-;18725:12;;-1:-1:-1;;;;;18690:19:0;;;;;;:11;:19;;;;;;;;18710:10;18690:31;;;;;;;;:47;18687:303;;-1:-1:-1;;;;;18819:19:0;;18795:20;18819:19;;;:11;:19;;;;;;;;18839:10;18819:31;;;;;;;;18873:22;;;;18865:57;;;;-1:-1:-1;;;18865:57:0;;7038:2:1;18865:57:0;;;7020:21:1;7077:2;7057:18;;;7050:30;-1:-1:-1;;;7096:18:1;;;7089:52;7158:18;;18865:57:0;6836:346:1;18865:57:0;-1:-1:-1;;;;;18937:19:0;;;;;;:11;:19;;;;;;;;18957:10;18937:31;;;;;;;:41;;18972:6;;18937:19;:41;;18972:6;;18937:41;:::i;:::-;;;;-1:-1:-1;;;18687:303:0;19007:40;19021:6;19029:9;19040:6;19007:13;:40::i;:::-;19000:47;;18407:648;;;;;;:::o;12992:222::-;1758:4;1793:5;-1:-1:-1;;;;;1793:5:0;1355:10;1782:16;1339:38;;;;-1:-1:-1;;;1339:38:0;;;;;;;:::i;:::-;13054:8:::1;::::0;-1:-1:-1;;;13054:8:0;::::1;;;:17;13046:26;;;::::0;::::1;;13083:10;:18:::0;;-1:-1:-1;;;;13083:18:0::1;::::0;;13128:16:::1;:12;13143:1;13128:16;:::i;:::-;13112:13;:32:::0;13191:8:::1;:15:::0;;-1:-1:-1;;;;13191:15:0::1;-1:-1:-1::0;;;13191:15:0::1;::::0;;12992:222::o;8659:117::-;8714:4;8738:30;8746:7;8755:12;;8738:7;:30::i;11435:230::-;1437:24;1450:10;1437:12;:24::i;:::-;1429:48;;;;-1:-1:-1;;;1429:48:0;;;;;;;:::i;:::-;11522:2:::1;11511:7;:13;;11503:22;;;::::0;::::1;;3766:5;11635:7;11620:12;;:22;;;;:::i;:::-;11618:39;;;;:::i;:::-;11603:12;:54:::0;-1:-1:-1;11435:230:0:o;11137:235::-;1437:24;1450:10;1437:12;:24::i;:::-;1429:48;;;;-1:-1:-1;;;1429:48:0;;;;;;;:::i;:::-;11226:2:::1;11215:7;:13;;11207:22;;;::::0;::::1;;3766:5;11342:7;11327:12;;:22;;;;:::i;:::-;11325:39;;;;:::i;:::-;11307:15;:57:::0;-1:-1:-1;11137:235:0:o;8931:332::-;1437:24;1450:10;1437:12;:24::i;:::-;1429:48;;;;-1:-1:-1;;;1429:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9035:16:0::1;;::::0;;;:11:::1;:16;::::0;;;;;;;:23;;9054:4:::1;-1:-1:-1::0;;9035:23:0;;::::1;::::0;::::1;::::0;;;9069:15:::1;:20:::0;;;;;:27;;;::::1;::::0;::::1;::::0;;9230:13:::1;:18:::0;;;;;:25;;;;::::1;::::0;;::::1;::::0;;8931:332::o;10784:259::-;1437:24;1450:10;1437:12;:24::i;:::-;1429:48;;;;-1:-1:-1;;;1429:48:0;;;;;;;:::i;:::-;10911:15:::1;:34:::0;;-1:-1:-1;;;;;10911:34:0;;::::1;-1:-1:-1::0;;;;;;10911:34:0;;::::1;;::::0;;;10956:15:::1;:34:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;11001:17:::1;:34:::0;;;;;::::1;::::0;::::1;;::::0;;10784:259::o;18099:300::-;18179:4;18200:5;;18209:10;-1:-1:-1;;;;;18200:5:0;;;:19;18196:196;;18242:45;18257:10;18269:9;18280:6;18242:14;:45::i;:::-;18235:52;;;;18196:196;18336:44;18350:10;18362:9;18373:6;18336:13;:44::i;1496:94::-;1758:4;1793:5;-1:-1:-1;;;;;1793:5:0;1355:10;1782:16;1339:38;;;;-1:-1:-1;;;1339:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1556:19:0::1;;::::0;;;1578:4:::1;1556:19;::::0;;;;;;;:26;;-1:-1:-1;;1556:26:0::1;::::0;;::::1;::::0;;1496:94::o;13281:184::-;1437:24;1450:10;1437:12;:24::i;:::-;1429:48;;;;-1:-1:-1;;;1429:48:0;;;;;;;:::i;:::-;13377:11:::1;:22:::0;;-1:-1:-1;;13377:22:0::1;::::0;::::1;;;::::0;;13440:15:::1;3515:2;13440;:15;:::i;:::-;13426:30;::::0;:10;:30:::1;:::i;:::-;13410:13;:46:::0;-1:-1:-1;;13281:184:0:o;1598:97::-;1758:4;1793:5;-1:-1:-1;;;;;1793:5:0;1355:10;1782:16;1339:38;;;;-1:-1:-1;;;1339:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1660:19:0::1;1682:5;1660:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;1660:27:0::1;::::0;;1598:97::o;1929:173::-;1758:4;1793:5;-1:-1:-1;;;;;1793:5:0;1355:10;1782:16;1339:38;;;;-1:-1:-1;;;1339:38:0;;;;;;;:::i;:::-;2005:5:::1;:11:::0;;-1:-1:-1;;;;;;2005:11:0::1;-1:-1:-1::0;;;;;2005:11:0;::::1;::::0;;::::1;::::0;;2027:19;;;-1:-1:-1;2027:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;2027:26:0::1;::::0;;::::1;::::0;;;2069:25;;3485:51:1;;;2069:25:0::1;::::0;3458:18:1;2069:25:0::1;;;;;;;1929:173:::0;:::o;12603:75::-;1437:24;1450:10;1437:12;:24::i;:::-;1429:48;;;;-1:-1:-1;;;1429:48:0;;;;;;;:::i;:::-;12656:6:::1;:14:::0;;-1:-1:-1;;12656:14:0::1;::::0;;12603:75::o;12812:98::-;1437:24;1450:10;1437:12;:24::i;:::-;1429:48;;;;-1:-1:-1;;;1429:48:0;;;;;;;:::i;:::-;12880:11:::1;:22:::0;;-1:-1:-1;;12880:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12812:98::o;1814:107::-;-1:-1:-1;;;;;1894:19:0;1870:4;1894:19;;;:14;:19;;;;;;;;;1814:107::o;19065:1316::-;19157:4;-1:-1:-1;;;;;19184:20:0;;19176:70;;;;-1:-1:-1;;;19176:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19265:23:0;;19257:71;;;;-1:-1:-1;;;19257:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19407:22:0;;;;;;:14;:22;;;;;;;;;:51;;-1:-1:-1;;;;;;19433:25:0;;;;;;:14;:25;;;;;;;;19407:51;:76;;;-1:-1:-1;;;;;;19462:21:0;;;;;;:13;:21;;;;;;;;19407:76;:86;;;-1:-1:-1;19487:6:0;;;;19407:86;19402:168;;;19517:41;19532:6;19540:9;19551:6;19517:14;:41::i;:::-;19510:48;;;;19402:168;19654:10;;-1:-1:-1;;;19654:10:0;;;;:19;19646:51;;;;-1:-1:-1;;;19646:51:0;;9455:2:1;19646:51:0;;;9437:21:1;9494:2;9474:18;;;9467:30;-1:-1:-1;;;9513:18:1;;;9506:50;9573:18;;19646:51:0;9253:344:1;19646:51:0;19796:6;;;;;;;19792:52;;;19804:38;19816:6;19824:9;19835:6;19804:11;:38::i;:::-;19945:26;19961:9;19945:15;:26::i;:::-;19942:44;;;19974:10;:8;:10::i;:::-;20063:11;;;;20060:135;;;20114:4;-1:-1:-1;;;;;20101:17:0;:9;-1:-1:-1;;;;;20101:17:0;;:35;;;;20132:4;-1:-1:-1;;;;;20122:14:0;:6;-1:-1:-1;;;;;20122:14:0;;20101:35;20100:83;;20177:6;20100:83;;;20140:34;20148:6;20156:9;20167:6;20140:7;:34::i;:::-;20091:92;;20060:135;20257:41;20272:6;20280:9;20291:6;20257:14;:41::i;:::-;;20333:9;-1:-1:-1;;;;;20316:35:0;20325:6;-1:-1:-1;;;;;20316:35:0;;20344:6;20316:35;;;;160:25:1;;148:2;133:18;;14:177;20316:35:0;;;;;;;;-1:-1:-1;20369:4:0;19065:1316;;;;;:::o;9275:503::-;-1:-1:-1;;;;;9409:17:0;;9368:4;9409:17;;;:9;:17;;;;;;9500:23;;;;9492:56;;;;-1:-1:-1;;;9492:56:0;;9804:2:1;9492:56:0;;;9786:21:1;9843:2;9823:18;;;9816:30;-1:-1:-1;;;9862:18:1;;;9855:50;9922:18;;9492:56:0;9602:344:1;9492:56:0;-1:-1:-1;;;;;9607:17:0;;;;;;:9;:17;;;;;;:26;;9627:6;;9607:26;:::i;:::-;-1:-1:-1;;;;;9587:17:0;;;;;;;:9;:17;;;;;;:46;;;;9668:20;;;;;;;:29;;9691:6;;9668:29;:::i;:::-;-1:-1:-1;;;;;9645:20:0;;;;;;;:9;:20;;;;;;;:52;;;;9713:35;;;;;;;;;;9741:6;160:25:1;;148:2;133:18;;14:177;9713:35:0;;;;;;;;-1:-1:-1;9766:4:0;;9275:503;-1:-1:-1;;;;9275:503:0:o;11677:856::-;-1:-1:-1;;;;;11855:23:0;;;;;;:15;:23;;;;;;;;:53;;;;-1:-1:-1;;;;;;11882:26:0;;;;;;:15;:26;;;;;;;;11855:53;11851:67;;;11677:856;;;:::o;11851:67::-;12082:4;-1:-1:-1;;;;;12072:14:0;:6;-1:-1:-1;;;;;12072:14:0;;:45;;;;-1:-1:-1;;;;;;12091:26:0;;;;;;:15;:26;;;;;;;;12090:27;12072:45;12068:278;;;12154:12;;12144:6;:22;;12136:47;;;;-1:-1:-1;;;12136:47:0;;10153:2:1;12136:47:0;;;10135:21:1;10192:2;10172:18;;;10165:30;-1:-1:-1;;;10211:18:1;;;10204:42;10263:18;;12136:47:0;9951:336:1;12136:47:0;12068:278;;;12236:4;-1:-1:-1;;;;;12223:17:0;:9;-1:-1:-1;;;;;12223:17:0;;:45;;;;-1:-1:-1;;;;;;12245:23:0;;;;;;:15;:23;;;;;;;;12244:24;12223:45;12220:126;;;12305:12;;12295:6;:22;;12287:47;;;;-1:-1:-1;;;12287:47:0;;10153:2:1;12287:47:0;;;10135:21:1;10192:2;10172:18;;;10165:30;-1:-1:-1;;;10211:18:1;;;10204:42;10263:18;;12287:47:0;9951:336:1;12287:47:0;-1:-1:-1;;;;;12398:26:0;;;;;;:15;:26;;;;;;;;12393:131;;12482:15;;-1:-1:-1;;;;;7940:18:0;;7922:7;7940:18;;;:9;:18;;;;;;12449:29;;:6;:29;:::i;:::-;:48;;12441:71;;;;-1:-1:-1;;;12441:71:0;;10494:2:1;12441:71:0;;;10476:21:1;10533:2;10513:18;;;10506:30;-1:-1:-1;;;10552:18:1;;;10545:40;10602:18;;12441:71:0;10292:334:1;13526:306:0;13593:4;13630;-1:-1:-1;;;;;13617:17:0;:9;-1:-1:-1;;;;;13617:17:0;;:80;;;;;13682:15;13663:12;;13678:1;13663:16;;;;:::i;:::-;:34;13617:80;:129;;;;-1:-1:-1;13740:6:0;;;;13739:7;13617:129;:153;;;;-1:-1:-1;13759:11:0;;;;13617:153;:207;;;;-1:-1:-1;13811:13:0;;13801:4;13783:24;;;;:9;:24;;;;;;:41;;13610:214;13526:306;-1:-1:-1;;13526:306:0:o;16381:1710::-;6204:6;:13;;-1:-1:-1;;6204:13:0;6213:4;6204:13;;;16474:4:::1;-1:-1:-1::0;7940:18:0;;;:9;:18;;;;;;16430:50:::1;;16491:25;16561:12;;16540:18;;16519;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;16491:82:::0;-1:-1:-1;16584:12:0::1;16613:20:::0;;;:46:::1;;-1:-1:-1::0;16637:22:0;;16613:46:::1;16609:61;;;16662:7;;;;;16609:61;16733:23;16820:1;16800:17;16778:18;;16760:15;:36;;;;:::i;:::-;16759:58;;;;:::i;:::-;:62;;;;:::i;:::-;16733:88:::0;-1:-1:-1;16832:26:0::1;16861:33;16733:88:::0;16861:15;:33:::1;:::i;:::-;16832:62:::0;-1:-1:-1;16935:21:0::1;17005:36;16832:62:::0;17005:16:::1;:36::i;:::-;17054:18;17075:41;17099:17:::0;17075:21:::1;:41;:::i;:::-;17054:62;;17127:23;17189:17;17167:18;;17154:10;:31;;;;:::i;:::-;17153:53;;;;:::i;:::-;17127:79;;17217:17;17279;17257:12;;17244:10;:25;;;;:::i;:::-;17243:53;;;;:::i;:::-;17217:79:::0;-1:-1:-1;17307:23:0::1;17217:79:::0;17333:28:::1;17346:15:::0;17333:10;:28:::1;:::i;:::-;:40;;;;:::i;:::-;17442:1;17421:18;:22:::0;;;17454:18:::1;:22:::0;;;17487:12:::1;:16:::0;;;17564:17:::1;::::0;17556:53:::1;::::0;17307:66;;-1:-1:-1;;;;;;17564:17:0::1;::::0;17595:9;;17556:53;17442:1;17556:53;17595:9;17564:17;17556:53:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;17542:67:0;;-1:-1:-1;;17651:19:0;;;;;:42:::1;;;17692:1;17674:15;:19;17651:42;17647:212;;;17710:46;17723:15;17740;17710:12;:46::i;:::-;17828:18;::::0;17776:71:::1;::::0;;11043:25:1;;;11099:2;11084:18;;11077:34;;;11127:18;;;11120:34;;;;17776:71:0;::::1;::::0;;;;11031:2:1;17776:71:0;;::::1;17647:212;17985:15;::::0;17977:63:::1;::::0;-1:-1:-1;;;;;17985:15:0;;::::1;::::0;18014:21:::1;::::0;17977:63:::1;::::0;;;18014:21;17985:15;17977:63:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;18068:15:0::1;18053:12;:30:::0;-1:-1:-1;;;;;;;;;;;6219:1:0::1;6222:6:::0;:14;;-1:-1:-1;;6222:14:0;;;16381:1710::o;13840:1609::-;-1:-1:-1;;;;;14012:17:0;;13917:7;14012:17;;;:11;:17;;;;;;;;;:36;;-1:-1:-1;;;;;;14033:15:0;;;;;;:11;:15;;;;;;;;14012:36;14008:82;;;-1:-1:-1;14072:6:0;14065:13;;14008:82;14163:12;14230:13;;14215:12;:28;14211:952;;;14281:3;14267:11;:6;14276:2;14267:11;:::i;:::-;:17;;;;:::i;:::-;14260:24;-1:-1:-1;14346:2:0;14333:9;14260:24;14340:2;14333:9;:::i;:::-;14332:16;;;;:::i;:::-;14310:18;;:38;;;;;;;:::i;:::-;;;;-1:-1:-1;14399:2:0;;-1:-1:-1;14386:9:0;:4;14393:2;14386:9;:::i;:::-;14385:16;;;;:::i;:::-;14363:18;;:38;;;;;;;:::i;:::-;;;;-1:-1:-1;14211:952:0;;-1:-1:-1;14211:952:0;;14460:4;-1:-1:-1;;;;;14454:10:0;:2;-1:-1:-1;;;;;14454:10:0;;:30;;;;;14483:1;14468:12;;:16;14454:30;14450:713;;;3766:5;14517:12;;14508:6;:21;;;;:::i;:::-;:34;;;;:::i;:::-;14501:41;;14609:12;;14587:16;;14580:4;:23;;;;:::i;:::-;14579:42;;;;:::i;:::-;14557:18;;:64;;;;;;;:::i;:::-;;;;-1:-1:-1;;14688:12:0;;14666:18;;14659:25;;:4;:25;:::i;:::-;14658:42;;;;:::i;:::-;14636:12;;:64;;;;;;;:::i;:::-;;;;-1:-1:-1;;14767:12:0;;14745:16;;14738:23;;:4;:23;:::i;14450:713::-;14839:4;-1:-1:-1;;;;;14831:12:0;:4;-1:-1:-1;;;;;14831:12:0;;:31;;;;;14861:1;14847:11;;:15;14831:31;14827:336;;;3766:5;14895:11;;14886:6;:20;;;;:::i;:::-;:33;;;;:::i;:::-;14879:40;;14985:11;;14964:15;;14957:4;:22;;;;:::i;:::-;14956:40;;;;:::i;:::-;14934:18;;:62;;;;;;;:::i;:::-;;;;-1:-1:-1;;15063:11:0;;15042:17;;15035:24;;:4;:24;:::i;:::-;15034:40;;;;:::i;:::-;15012:12;;:62;;;;;;;:::i;:::-;;;;-1:-1:-1;;15140:11:0;;15119:15;;15112:22;;:4;:22;:::i;:::-;15111:40;;;;:::i;:::-;15089:18;;:62;;;;;;;:::i;:::-;;;;-1:-1:-1;;14827:336:0;15239:8;;15235:137;;15264:41;15279:4;15293;15300;15264:14;:41::i;:::-;-1:-1:-1;15325:35:0;;160:25:1;;;15348:4:0;;-1:-1:-1;;;;;15325:35:0;;;;;148:2:1;133:18;15325:35:0;;;;;;;15235:137;15427:14;15437:4;15427:14;;:::i;:::-;;13840:1609;-1:-1:-1;;;;;13840:1609:0:o;15463:445::-;15589:16;;;15603:1;15589:16;;;;;;;;15565:21;;15589:16;;;;;;;;;;-1:-1:-1;15589:16:0;15565:40;;15634:4;15616;15621:1;15616:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;15616:23:0;;;-1:-1:-1;;;;;15616:23:0;;;;;3191:42;-1:-1:-1;;;;;15660:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15650:4;15655:1;15650:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15650:23:0;;;:7;;;;;;;;;;;:23;15712:188;;-1:-1:-1;;;15712:188:0;;3191:42;;15712:57;;:188;;15784:11;;15810:1;;15827:4;;15854;;15874:15;;15712:188;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15518:390;15463:445;:::o;15916:457::-;16309:15;;16166:199;;-1:-1:-1;;;16166:199:0;;16229:4;16166:199;;;13011:34:1;13061:18;;;13054:34;;;16275:1:0;13104:18:1;;;13097:34;;;13147:18;;;13140:34;-1:-1:-1;;;;;16309:15:0;;;13190:19:1;;;13183:44;16339:15:0;13243:19:1;;;13236:35;3191:42:0;;16166:22;;16196:9;;12945:19:1;;16166:199:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15916:457;;:::o;196:180:1:-;255:6;308:2;296:9;287:7;283:23;279:32;276:52;;;324:1;321;314:12;276:52;-1:-1:-1;347:23:1;;196:180;-1:-1:-1;196:180:1:o;381:548::-;493:4;522:2;551;540:9;533:21;583:6;577:13;626:6;621:2;610:9;606:18;599:34;651:1;661:140;675:6;672:1;669:13;661:140;;;770:14;;;766:23;;760:30;736:17;;;755:2;732:26;725:66;690:10;;661:140;;;665:3;850:1;845:2;836:6;825:9;821:22;817:31;810:42;920:2;913;909:7;904:2;896:6;892:15;888:29;877:9;873:45;869:54;861:62;;;;381:548;;;;:::o;934:131::-;-1:-1:-1;;;;;1009:31:1;;999:42;;989:70;;1055:1;1052;1045:12;989:70;934:131;:::o;1070:315::-;1138:6;1146;1199:2;1187:9;1178:7;1174:23;1170:32;1167:52;;;1215:1;1212;1205:12;1167:52;1254:9;1241:23;1273:31;1298:5;1273:31;:::i;:::-;1323:5;1375:2;1360:18;;;;1347:32;;-1:-1:-1;;;1070:315:1:o;1582:316::-;1659:6;1667;1675;1728:2;1716:9;1707:7;1703:23;1699:32;1696:52;;;1744:1;1741;1734:12;1696:52;-1:-1:-1;;1767:23:1;;;1837:2;1822:18;;1809:32;;-1:-1:-1;1888:2:1;1873:18;;;1860:32;;1582:316;-1:-1:-1;1582:316:1:o;1903:456::-;1980:6;1988;1996;2049:2;2037:9;2028:7;2024:23;2020:32;2017:52;;;2065:1;2062;2055:12;2017:52;2104:9;2091:23;2123:31;2148:5;2123:31;:::i;:::-;2173:5;-1:-1:-1;2230:2:1;2215:18;;2202:32;2243:33;2202:32;2243:33;:::i;:::-;1903:456;;2295:7;;-1:-1:-1;;;2349:2:1;2334:18;;;;2321:32;;1903:456::o;2364:247::-;2423:6;2476:2;2464:9;2455:7;2451:23;2447:32;2444:52;;;2492:1;2489;2482:12;2444:52;2531:9;2518:23;2550:31;2575:5;2550:31;:::i;2805:529::-;2882:6;2890;2898;2951:2;2939:9;2930:7;2926:23;2922:32;2919:52;;;2967:1;2964;2957:12;2919:52;3006:9;2993:23;3025:31;3050:5;3025:31;:::i;:::-;3075:5;-1:-1:-1;3132:2:1;3117:18;;3104:32;3145:33;3104:32;3145:33;:::i;:::-;3197:7;-1:-1:-1;3256:2:1;3241:18;;3228:32;3269:33;3228:32;3269:33;:::i;:::-;3321:7;3311:17;;;2805:529;;;;;:::o;3547:388::-;3615:6;3623;3676:2;3664:9;3655:7;3651:23;3647:32;3644:52;;;3692:1;3689;3682:12;3644:52;3731:9;3718:23;3750:31;3775:5;3750:31;:::i;:::-;3800:5;-1:-1:-1;3857:2:1;3842:18;;3829:32;3870:33;3829:32;3870:33;:::i;:::-;3922:7;3912:17;;;3547:388;;;;;:::o;3940:160::-;4005:20;;4061:13;;4054:21;4044:32;;4034:60;;4090:1;4087;4080:12;4034:60;3940:160;;;:::o;4105:248::-;4170:6;4178;4231:2;4219:9;4210:7;4206:23;4202:32;4199:52;;;4247:1;4244;4237:12;4199:52;4270:26;4286:9;4270:26;:::i;4844:180::-;4900:6;4953:2;4941:9;4932:7;4928:23;4924:32;4921:52;;;4969:1;4966;4959:12;4921:52;4992:26;5008:9;4992:26;:::i;5029:335::-;5231:2;5213:21;;;5270:2;5250:18;;;5243:30;-1:-1:-1;;;5304:2:1;5289:18;;5282:41;5355:2;5340:18;;5029:335::o;5369:127::-;5430:10;5425:3;5421:20;5418:1;5411:31;5461:4;5458:1;5451:15;5485:4;5482:1;5475:15;5501:168;5574:9;;;5605;;5622:15;;;5616:22;;5602:37;5592:71;;5643:18;;:::i;5674:217::-;5714:1;5740;5730:132;;5784:10;5779:3;5775:20;5772:1;5765:31;5819:4;5816:1;5809:15;5847:4;5844:1;5837:15;5730:132;-1:-1:-1;5876:9:1;;5674:217::o;5896:125::-;5961:9;;;5982:10;;;5979:36;;;5995:18;;:::i;6026:401::-;6228:2;6210:21;;;6267:2;6247:18;;;6240:30;6306:34;6301:2;6286:18;;6279:62;-1:-1:-1;;;6372:2:1;6357:18;;6350:35;6417:3;6402:19;;6026:401::o;6432:399::-;6634:2;6616:21;;;6673:2;6653:18;;;6646:30;6712:34;6707:2;6692:18;;6685:62;-1:-1:-1;;;6778:2:1;6763:18;;6756:33;6821:3;6806:19;;6432:399::o;7187:128::-;7254:9;;;7275:11;;;7272:37;;;7289:18;;:::i;7320:329::-;7522:2;7504:21;;;7561:1;7541:18;;;7534:29;-1:-1:-1;;;7594:2:1;7579:18;;7572:36;7640:2;7625:18;;7320:329::o;7654:422::-;7743:1;7786:5;7743:1;7800:270;7821:7;7811:8;7808:21;7800:270;;;7880:4;7876:1;7872:6;7868:17;7862:4;7859:27;7856:53;;;7889:18;;:::i;:::-;7939:7;7929:8;7925:22;7922:55;;;7959:16;;;;7922:55;8038:22;;;;7998:15;;;;7800:270;;;7804:3;7654:422;;;;;:::o;8081:806::-;8130:5;8160:8;8150:80;;-1:-1:-1;8201:1:1;8215:5;;8150:80;8249:4;8239:76;;-1:-1:-1;8286:1:1;8300:5;;8239:76;8331:4;8349:1;8344:59;;;;8417:1;8412:130;;;;8324:218;;8344:59;8374:1;8365:10;;8388:5;;;8412:130;8449:3;8439:8;8436:17;8433:43;;;8456:18;;:::i;:::-;-1:-1:-1;;8512:1:1;8498:16;;8527:5;;8324:218;;8626:2;8616:8;8613:16;8607:3;8601:4;8598:13;8594:36;8588:2;8578:8;8575:16;8570:2;8564:4;8561:12;8557:35;8554:77;8551:159;;;-1:-1:-1;8663:19:1;;;8695:5;;8551:159;8742:34;8767:8;8761:4;8742:34;:::i;:::-;8812:6;8808:1;8804:6;8800:19;8791:7;8788:32;8785:58;;;8823:18;;:::i;:::-;8861:20;;8081:806;-1:-1:-1;;;8081:806:1:o;8892:140::-;8950:5;8979:47;9020:4;9010:8;9006:19;9000:4;8979:47;:::i;11297:127::-;11358:10;11353:3;11349:20;11346:1;11339:31;11389:4;11386:1;11379:15;11413:4;11410:1;11403:15;11429:251;11499:6;11552:2;11540:9;11531:7;11527:23;11523:32;11520:52;;;11568:1;11565;11558:12;11520:52;11600:9;11594:16;11619:31;11644:5;11619:31;:::i;11685:980::-;11947:4;11995:3;11984:9;11980:19;12026:6;12015:9;12008:25;12052:2;12090:6;12085:2;12074:9;12070:18;12063:34;12133:3;12128:2;12117:9;12113:18;12106:31;12157:6;12192;12186:13;12223:6;12215;12208:22;12261:3;12250:9;12246:19;12239:26;;12300:2;12292:6;12288:15;12274:29;;12321:1;12331:195;12345:6;12342:1;12339:13;12331:195;;;12410:13;;-1:-1:-1;;;;;12406:39:1;12394:52;;12501:15;;;;12466:12;;;;12442:1;12360:9;12331:195;;;-1:-1:-1;;;;;;;12582:32:1;;;;12577:2;12562:18;;12555:60;-1:-1:-1;;;12646:3:1;12631:19;12624:35;12543:3;11685:980;-1:-1:-1;;;11685:980:1:o;13282:306::-;13370:6;13378;13386;13439:2;13427:9;13418:7;13414:23;13410:32;13407:52;;;13455:1;13452;13445:12;13407:52;13484:9;13478:16;13468:26;;13534:2;13523:9;13519:18;13513:25;13503:35;;13578:2;13567:9;13563:18;13557:25;13547:35;;13282:306;;;;;:::o
Swarm Source
ipfs://0146c76c74025286bed708074dfc5fe723fa73621fa50fb3e0b2693aa9633977
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.