More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 50 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Manual Send | 19338757 | 182 days ago | IN | 0 ETH | 0.00130794 | ||||
Approve | 17119552 | 494 days ago | IN | 0 ETH | 0.0016645 | ||||
Approve | 16903884 | 524 days ago | IN | 0 ETH | 0.00064658 | ||||
Approve | 16900344 | 525 days ago | IN | 0 ETH | 0.00118483 | ||||
Approve | 16899901 | 525 days ago | IN | 0 ETH | 0.00145989 | ||||
Approve | 16894105 | 526 days ago | IN | 0 ETH | 0.00075679 | ||||
Approve | 16893155 | 526 days ago | IN | 0 ETH | 0.0009786 | ||||
Approve | 16890271 | 526 days ago | IN | 0 ETH | 0.00129044 | ||||
Approve | 16890254 | 526 days ago | IN | 0 ETH | 0.00132246 | ||||
Approve | 16889999 | 526 days ago | IN | 0 ETH | 0.00074949 | ||||
Approve | 16887871 | 527 days ago | IN | 0 ETH | 0.00051201 | ||||
Approve | 16887860 | 527 days ago | IN | 0 ETH | 0.00079138 | ||||
Transfer Ownersh... | 16887830 | 527 days ago | IN | 0 ETH | 0.00064439 | ||||
Set Max Wallet P... | 16887809 | 527 days ago | IN | 0 ETH | 0.00040308 | ||||
Set Sell Tx Limi... | 16887807 | 527 days ago | IN | 0 ETH | 0.00039689 | ||||
Set Buy Tx Limit... | 16887799 | 527 days ago | IN | 0 ETH | 0.00043831 | ||||
Approve | 16887794 | 527 days ago | IN | 0 ETH | 0.00070418 | ||||
Approve | 16887794 | 527 days ago | IN | 0 ETH | 0.00070418 | ||||
Set Sell Fees | 16887788 | 527 days ago | IN | 0 ETH | 0.00055269 | ||||
Approve | 16887777 | 527 days ago | IN | 0 ETH | 0.00063309 | ||||
Set Sell Fees | 16887773 | 527 days ago | IN | 0 ETH | 0.00054552 | ||||
Approve | 16887761 | 527 days ago | IN | 0 ETH | 0.00055495 | ||||
Approve | 16887756 | 527 days ago | IN | 0 ETH | 0.00075921 | ||||
Approve | 16887754 | 527 days ago | IN | 0 ETH | 0.00058201 | ||||
Approve | 16887747 | 527 days ago | IN | 0 ETH | 0.00057257 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
19338757 | 182 days ago | 0.05255171 ETH | ||||
16894020 | 526 days ago | 0.00111469 ETH | ||||
16894020 | 526 days ago | 0.00668819 ETH | ||||
16894020 | 526 days ago | 0.00222939 ETH | ||||
16894020 | 526 days ago | 0.01114698 ETH | ||||
16893157 | 526 days ago | 0.00144396 ETH | ||||
16893157 | 526 days ago | 0.00866378 ETH | ||||
16893157 | 526 days ago | 0.00288792 ETH | ||||
16893157 | 526 days ago | 0.01443964 ETH | ||||
16888217 | 526 days ago | 0.00202926 ETH | ||||
16888217 | 526 days ago | 0.01217557 ETH | ||||
16888217 | 526 days ago | 0.00405852 ETH | ||||
16888217 | 526 days ago | 0.02029262 ETH | ||||
16888148 | 527 days ago | 0.00227704 ETH | ||||
16888148 | 527 days ago | 0.01366225 ETH | ||||
16888148 | 527 days ago | 0.00455408 ETH | ||||
16888148 | 527 days ago | 0.02277043 ETH | ||||
16888148 | 527 days ago | 0.00312745 ETH | ||||
16888148 | 527 days ago | 0.01876475 ETH | ||||
16888148 | 527 days ago | 0.00625491 ETH | ||||
16888148 | 527 days ago | 0.03127458 ETH | ||||
16888050 | 527 days ago | 0.00316925 ETH | ||||
16888050 | 527 days ago | 0.0190155 ETH | ||||
16888050 | 527 days ago | 0.0063385 ETH | ||||
16888050 | 527 days ago | 0.03169251 ETH |
Loading...
Loading
Contract Name:
babyoptimus
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-03-23 */ /** Baby Optimus (BOPTIMUS) 🤖 Baby Optimus Project: Pioneering AI-powered blockchain, honoring Elon's Optimus bot! 🔐Secure liquidity, 🎉meme magic, 🌐Web3 expansion, 💰Optimus Rewards. 100% community-driven, transparent & innovative. Join the future! Socials TG: https://t.me/babyoptimuseth Twitter: https://twitter.com/babyoptimuseth Website: https://babyoptimuseth.com Medium: https://medium.com/@boptimuserc /** * */ //SPDX-License-Identifier: MIT pragma solidity ^0.8.7; /** * Standard SafeMath, stripped down to just add/sub/mul/div */ library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } } /** * ERC20 standard 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 getOwner() external view returns (address); 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); } /** * Allows for contract ownership for multiple adressess */ abstract contract Auth { address internal owner; mapping (address => bool) internal authorizations; constructor(address _owner) { owner = _owner; authorizations[_owner] = true; } /** * Function modifier to require caller to be contract owner */ modifier onlyOwner() { require(isOwner(msg.sender), "!OWNER"); _; } /** * Function modifier to require caller to be authorized */ modifier authorized() { require(isAuthorized(msg.sender), "!AUTHORIZED"); _; } /** * Authorize address. Owner only */ function authorize(address account) public onlyOwner { authorizations[account] = true; } /** * Remove address authorization. Owner only */ function unauthorize(address account) public onlyOwner { authorizations[account] = false; } /** * Check if address is owner */ function isOwner(address account) public view returns (bool) { return account == owner; } /** * Return address authorization status */ function isAuthorized(address account) public view returns (bool) { return authorizations[account]; } /** * Transfer ownership to new address. Caller must be owner. Leaves old owner authorized */ function transferOwnership(address payable account) public onlyOwner { owner = account; authorizations[account] = true; emit OwnershipTransferred(account); } event OwnershipTransferred(address owner); } /* Standard IDEXFactory */ interface IDEXFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } /* Standard IDEXRouter */ interface IDEXRouter { function factory() external pure returns (address); function WETH() external pure returns (address); 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 addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function swapExactTokensForTokensSupportingFeeOnTransferTokens( 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 swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } /* Interface for the DividendDistributor */ interface IDividendDistributor { function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external; function setShare(address shareholder, uint256 amount) external; function deposit() external payable; function process(uint256 gas) external; } /* Our DividendDistributor contract responsible for distributing the earn token */ contract DividendDistributor is IDividendDistributor { using SafeMath for uint256; address _token; struct Share { uint256 amount; uint256 totalExcluded; uint256 totalRealised; } // EARN IERC20 OPTIMUS = IERC20(0x562E362876c8Aee4744FC2c6aaC8394C312d215d); address WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; IDEXRouter router; address[] shareholders; mapping (address => uint256) shareholderIndexes; mapping (address => uint256) shareholderClaims; mapping (address => Share) public shares; uint256 public totalShares; uint256 public totalDividends; uint256 public totalDistributed; uint256 public dividendsPerShare; uint256 public dividendsPerShareAccuracyFactor = 10 ** 36; uint256 public minPeriod = 30 * 60; uint256 public minDistribution = 1 * (10 ** 12); uint256 currentIndex; bool initialized; modifier initialization() { require(!initialized); _; initialized = true; } modifier onlyToken() { require(msg.sender == _token); _; } constructor (address _router) { router = _router != address(0) ? IDEXRouter(_router) : IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); _token = msg.sender; } function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external override onlyToken { minPeriod = _minPeriod; minDistribution = _minDistribution; } function setShare(address shareholder, uint256 amount) external override onlyToken { if(shares[shareholder].amount > 0){ distributeDividend(shareholder); } if(amount > 0 && shares[shareholder].amount == 0){ addShareholder(shareholder); }else if(amount == 0 && shares[shareholder].amount > 0){ removeShareholder(shareholder); } totalShares = totalShares.sub(shares[shareholder].amount).add(amount); shares[shareholder].amount = amount; shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount); } function deposit() external payable override onlyToken { uint256 balanceBefore = OPTIMUS.balanceOf(address(this)); address[] memory path = new address[](2); path[0] = WETH; path[1] = address(OPTIMUS); router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}( 0, path, address(this), block.timestamp ); uint256 amount = OPTIMUS.balanceOf(address(this)).sub(balanceBefore); totalDividends = totalDividends.add(amount); dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares)); } function process(uint256 gas) external override onlyToken { uint256 shareholderCount = shareholders.length; if(shareholderCount == 0) { return; } uint256 gasUsed = 0; uint256 gasLeft = gasleft(); uint256 iterations = 0; while(gasUsed < gas && iterations < shareholderCount) { if(currentIndex >= shareholderCount){ currentIndex = 0; } if(shouldDistribute(shareholders[currentIndex])){ distributeDividend(shareholders[currentIndex]); } gasUsed = gasUsed.add(gasLeft.sub(gasleft())); gasLeft = gasleft(); currentIndex++; iterations++; } } function shouldDistribute(address shareholder) internal view returns (bool) { return shareholderClaims[shareholder] + minPeriod < block.timestamp && getUnpaidEarnings(shareholder) > minDistribution; } function distributeDividend(address shareholder) internal { if(shares[shareholder].amount == 0){ return; } uint256 amount = getUnpaidEarnings(shareholder); if(amount > 0){ totalDistributed = totalDistributed.add(amount); OPTIMUS.transfer(shareholder, amount); shareholderClaims[shareholder] = block.timestamp; shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount); shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount); } } function claimDividend(address shareholder) external onlyToken{ distributeDividend(shareholder); } function getUnpaidEarnings(address shareholder) public view returns (uint256) { if(shares[shareholder].amount == 0){ return 0; } uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount); uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded; if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; } return shareholderTotalDividends.sub(shareholderTotalExcluded); } function getCumulativeDividends(uint256 share) internal view returns (uint256) { return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor); } function addShareholder(address shareholder) internal { shareholderIndexes[shareholder] = shareholders.length; shareholders.push(shareholder); } function removeShareholder(address shareholder) internal { shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1]; shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder]; shareholders.pop(); } } /* Token contract */ contract babyoptimus is IERC20, Auth { using SafeMath for uint256; // Addresses address OPTIMUS = 0x562E362876c8Aee4744FC2c6aaC8394C312d215d; address WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; address DEAD = 0x000000000000000000000000000000000000dEaD; address ZERO = 0x0000000000000000000000000000000000000000; address DEV = 0x910A23d839Aa69F11cA535A206c689eb7509b9AC; // These are owner by default address private autoLiquidityReceiver; address private marketingFeeReceiver; // Name and symbol string constant _name = "Baby Optimus"; string constant _symbol = "BOPTIMUS"; uint8 constant _decimals = 18; // Total supply uint256 _totalSupply = 100_000_000 * (10 ** _decimals); // 100m // Max wallet and TX uint256 public _maxBuyTxAmount = _totalSupply * 200 / 10000; // 2% uint256 public _maxSellTxAmount = _totalSupply * 200 / 10000; // 2% uint256 public _maxWalletToken = ( _totalSupply * 200 ) / 10000; // 2% // Mappings mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) _allowances; mapping (address => bool) isFeeExempt; mapping (address => bool) isTxLimitExempt; mapping (address => bool) isTimelockExempt; mapping (address => bool) isDividendExempt; mapping (address => bool) public isBlacklisted; // Buy Fees uint256 public liquidityFeeBuy = 1; uint256 public buybackFeeBuy = 0; uint256 public reflectionFeeBuy = 1; uint256 public marketingFeeBuy = 3; uint256 public devFeeBuy = 0; uint256 public totalFeeBuy = 5; // Sell fees uint256 public liquidityFeeSell = 1; uint256 public buybackFeeSell = 0; uint256 public reflectionFeeSell = 1; uint256 public marketingFeeSell = 3; uint256 public devFeeSell = 0; uint256 public totalFeeSell = 5; // Fee variables uint256 liquidityFee; uint256 buybackFee; uint256 reflectionFee; uint256 marketingFee; uint256 devFee; uint256 totalFee; uint256 feeDenominator = 100; // GREED uint256 GREEDTriggeredAt; uint256 GREEDDuration = 3600; // Dead blocks uint256 deadBlocks = 0; // Sell amount of tokens when a sell takes place uint256 public swapThreshold = _totalSupply * 50 / 10000; // 0.5% of supply // Liquidity uint256 targetLiquidity = 200; uint256 targetLiquidityDenominator = 100; // Buyback settings uint256 buybackMultiplierNumerator = 200; uint256 buybackMultiplierDenominator = 100; uint256 buybackMultiplierTriggeredAt; uint256 buybackMultiplierLength = 30 minutes; bool public autoBuybackEnabled = false; bool public autoBuybackMultiplier = false; uint256 autoBuybackCap; uint256 autoBuybackAccumulator; uint256 autoBuybackAmount; uint256 autoBuybackBlockPeriod; uint256 autoBuybackBlockLast; DividendDistributor distributor; uint256 distributorGas = 500000; // Cooldown & timer functionality bool public buyCooldownEnabled = false; uint8 public cooldownTimerInterval = 30; mapping (address => uint) private cooldownTimer; // Other variables IDEXRouter public router; address public pair; uint256 public launchedAt; bool public tradingOpen = true; bool public swapEnabled = true; bool inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } /* Token constructor */ constructor () Auth(msg.sender) { router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); pair = IDEXFactory(router.factory()).createPair(WETH, address(this)); _allowances[address(this)][address(router)] = type(uint256).max; distributor = new DividendDistributor(address(router)); // Should be the owner wallet/token distributor address _presaler = msg.sender; isFeeExempt[_presaler] = true; isTxLimitExempt[_presaler] = true; // No timelock for these people isTimelockExempt[msg.sender] = true; isTimelockExempt[DEAD] = true; isTimelockExempt[address(this)] = true; isTimelockExempt[DEV] = true; // Exempt from dividend isDividendExempt[pair] = true; isDividendExempt[address(this)] = true; isDividendExempt[DEAD] = true; // Set the marketing and liq receiver to the owner as default autoLiquidityReceiver = msg.sender; marketingFeeReceiver = msg.sender; _balances[_presaler] = _totalSupply; emit Transfer(address(0), _presaler, _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 getOwner() external view override returns (address) { return owner; } 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 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, type(uint256).max); } function transfer(address recipient, uint256 amount) external override returns (bool) { return _transferFrom(msg.sender, recipient, amount); } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { if(_allowances[sender][msg.sender] != type(uint256).max){ _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance"); } return _transferFrom(sender, recipient, amount); } // settting the max wallet in percentages // NOTE: 1% = 100 function setMaxWalletPercent(uint256 maxWallPercent) external onlyOwner() { _maxWalletToken = _totalSupply.mul(maxWallPercent).div(10000); } // Main transfer function function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) { if(inSwap){ return _basicTransfer(sender, recipient, amount); } // Check if trading is enabled if(!authorizations[sender] && !authorizations[recipient]){ require(tradingOpen,"Trading not enabled yet"); } // Check if address is blacklisted require(!isBlacklisted[recipient] && !isBlacklisted[sender], 'Address is blacklisted'); // Check if buying or selling bool isSell = recipient == pair; // Set buy or sell fees setCorrectFees(isSell); // Check max wallet checkMaxWallet(sender, recipient, amount); // Buycooldown checkBuyCooldown(sender, recipient); // Checks maxTx checkTxLimit(sender, amount, recipient, isSell); // Check if we are in GREEDTime bool GREEDMode = inGREEDTime(); // Check if we should do the swapback if(shouldSwapBack()){ swapBack(); } //Exchange tokens _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); uint256 amountReceived = shouldTakeFee(sender) ? takeFee(sender, amount, isSell, GREEDMode) : amount; _balances[recipient] = _balances[recipient].add(amountReceived); // Dividend tracker if(!isDividendExempt[sender]) { try distributor.setShare(sender, _balances[sender]) {} catch {} } if(!isDividendExempt[recipient]) { try distributor.setShare(recipient, _balances[recipient]) {} catch {} } try distributor.process(distributorGas) {} catch {} emit Transfer(sender, recipient, amountReceived); return true; } // Do a normal transfer function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } // Set the correct fees for buying or selling function setCorrectFees(bool isSell) internal { if(isSell){ liquidityFee = liquidityFeeSell; buybackFee = buybackFeeSell; reflectionFee = reflectionFeeSell; marketingFee = marketingFeeSell; devFee = devFeeSell; totalFee = totalFeeSell; } else { liquidityFee = liquidityFeeBuy; buybackFee = buybackFeeBuy; reflectionFee = reflectionFeeBuy; marketingFee = marketingFeeBuy; devFee = devFeeBuy; totalFee = totalFeeBuy; } } // Check if we are in GREED time function inGREEDTime() public view returns (bool){ if(GREEDTriggeredAt.add(GREEDDuration) > block.timestamp){ return true; } else { return false; } } // Check for maxTX function checkTxLimit(address sender, uint256 amount, address recipient, bool isSell) internal view { if (recipient != owner){ if(isSell){ require(amount <= _maxSellTxAmount || isTxLimitExempt[sender] || isTxLimitExempt[recipient], "TX Limit Exceeded"); } else { require(amount <= _maxBuyTxAmount || isTxLimitExempt[sender] || isTxLimitExempt[recipient], "TX Limit Exceeded"); } } } // Check buy cooldown function checkBuyCooldown(address sender, address recipient) internal { if (sender == pair && buyCooldownEnabled && !isTimelockExempt[recipient]) { require(cooldownTimer[recipient] < block.timestamp,"Please wait between two buys"); cooldownTimer[recipient] = block.timestamp + cooldownTimerInterval; } } // Check maxWallet function checkMaxWallet(address sender, address recipient, uint256 amount) internal view { if (!authorizations[sender] && recipient != owner && recipient != address(this) && recipient != address(DEAD) && recipient != pair && recipient != marketingFeeReceiver && recipient != autoLiquidityReceiver && recipient != DEV){ uint256 heldTokens = balanceOf(recipient); require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much."); } } // Check if sender is not feeExempt function shouldTakeFee(address sender) internal view returns (bool) { return !isFeeExempt[sender]; } // Get total fee's or multiplication of fees function getTotalFee(bool selling) public view returns (uint256) { if(launchedAt + deadBlocks >= block.number){ return feeDenominator.sub(1); } if(selling && buybackMultiplierTriggeredAt.add(buybackMultiplierLength) > block.timestamp){ return getMultipliedFee(); } return totalFee; } // Get a multiplied fee when buybackMultiplier is active function getMultipliedFee() public view returns (uint256) { uint256 remainingTime = buybackMultiplierTriggeredAt.add(buybackMultiplierLength).sub(block.timestamp); uint256 feeIncrease = totalFee.mul(buybackMultiplierNumerator).div(buybackMultiplierDenominator).sub(totalFee); return totalFee.add(feeIncrease.mul(remainingTime).div(buybackMultiplierLength)); } // Take the normal total Fee or the GREED Fee function takeFee(address sender, uint256 amount, bool isSell, bool GREEDMode) internal returns (uint256) { uint256 feeAmount; // Check if we are GREEDd if (GREEDMode){ if(isSell){ // We are selling so up the selling tax to 1.5x feeAmount = amount.mul(totalFee).mul(3).div(2).div(feeDenominator); } else { // We are buying so cut our taxes in half feeAmount = amount.mul(totalFee).div(2).div(feeDenominator); } } else { feeAmount = amount.mul(totalFee).div(feeDenominator); } _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); return amount.sub(feeAmount); } // Check if we should sell tokens function shouldSwapBack() internal view returns (bool) { return msg.sender != pair && !inSwap && swapEnabled && _balances[address(this)] >= swapThreshold; } // switch Trading function tradingStatus(bool _status) public onlyOwner { tradingOpen = _status; launch(); } // Enable GREED function enableGREED(uint256 _seconds) public authorized { GREEDTriggeredAt = block.timestamp; GREEDDuration = _seconds; } // Disable the GREED mode function disableGREED() external authorized { GREEDTriggeredAt = 0; } // Enable/disable cooldown between trades function cooldownEnabled(bool _status, uint8 _interval) public authorized { buyCooldownEnabled = _status; cooldownTimerInterval = _interval; } // Blacklist/unblacklist an address function blacklistAddress(address _address, bool _value) public authorized{ isBlacklisted[_address] = _value; } // Main swapback to sell tokens for WETH function swapBack() internal swapping { uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee; uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2); uint256 amountToSwap = swapThreshold.sub(amountToLiquify); address[] memory path = new address[](2); path[0] = address(this); path[1] = WETH; uint256 balanceBefore = address(this).balance; router.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); uint256 amountETH = address(this).balance.sub(balanceBefore); uint256 totalETHFee = totalFee.sub(dynamicLiquidityFee.div(2)); uint256 amountETHLiquidity = amountETH.mul(dynamicLiquidityFee).div(totalETHFee).div(2); uint256 amountETHReflection = amountETH.mul(reflectionFee).div(totalETHFee); uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee); uint256 amountETHDev = amountETH.mul(devFee).div(totalETHFee); try distributor.deposit{value: amountETHReflection}() {} catch {} (bool successMarketing, /* bytes memory data */) = payable(marketingFeeReceiver).call{value: amountETHMarketing, gas: 30000}(""); (bool successDev, /* bytes memory data */) = payable(DEV).call{value: amountETHDev, gas: 30000}(""); require(successMarketing, "marketing receiver rejected ETH transfer"); require(successDev, "dev receiver rejected ETH transfer"); if(amountToLiquify > 0){ router.addLiquidityETH{value: amountETHLiquidity}( address(this), amountToLiquify, 0, 0, autoLiquidityReceiver, block.timestamp ); emit AutoLiquify(amountETHLiquidity, amountToLiquify); } } // Check if autoBuyback is enabled function shouldAutoBuyback() internal view returns (bool) { return msg.sender != pair && !inSwap && autoBuybackEnabled && autoBuybackBlockLast + autoBuybackBlockPeriod <= block.number && address(this).balance >= autoBuybackAmount; } // Trigger a manual buyback function triggerManualBuyback(uint256 amount, bool triggerBuybackMultiplier) external { uint256 amountWithDecimals = amount * (10 ** 18); uint256 amountToBuy = amountWithDecimals.div(100); buyTokens(amountToBuy, DEAD); if(triggerBuybackMultiplier){ buybackMultiplierTriggeredAt = block.timestamp; emit BuybackMultiplierActive(buybackMultiplierLength); } } // Stop the buyback Multiplier function clearBuybackMultiplier() external authorized { buybackMultiplierTriggeredAt = 0; } // Trigger an autobuyback function triggerAutoBuyback() internal { buyTokens(autoBuybackAmount, DEAD); if(autoBuybackMultiplier){ buybackMultiplierTriggeredAt = block.timestamp; emit BuybackMultiplierActive(buybackMultiplierLength); } autoBuybackBlockLast = block.number; autoBuybackAccumulator = autoBuybackAccumulator.add(autoBuybackAmount); if(autoBuybackAccumulator > autoBuybackCap){ autoBuybackEnabled = false; } } // Buy amount of tokens with ETH from the contract function buyTokens(uint256 amount, address to) internal swapping { address[] memory path = new address[](2); path[0] = WETH; path[1] = address(this); router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}( 0, path, to, block.timestamp ); } // Set autobuyback settings function setAutoBuybackSettings(bool _enabled, uint256 _cap, uint256 _amount, uint256 _period, bool _autoBuybackMultiplier) external authorized { autoBuybackEnabled = _enabled; autoBuybackCap = _cap; autoBuybackAccumulator = 0; autoBuybackAmount = _amount; autoBuybackBlockPeriod = _period; autoBuybackBlockLast = block.number; autoBuybackMultiplier = _autoBuybackMultiplier; } // Set buybackmultiplier settings function setBuybackMultiplierSettings(uint256 numerator, uint256 denominator, uint256 length) external authorized { require(numerator / denominator <= 2 && numerator > denominator); buybackMultiplierNumerator = numerator; buybackMultiplierDenominator = denominator; buybackMultiplierLength = length; } // Check when the token is launched function launched() internal view returns (bool) { return launchedAt != 0; } // Set the launchedAt to token launch function launch() internal { launchedAt = block.number; } // Set max buy TX function setBuyTxLimitInPercent(uint256 maxBuyTxPercent) external authorized { _maxBuyTxAmount = _totalSupply.mul(maxBuyTxPercent).div(10000); } // Set max sell TX function setSellTxLimitInPercent(uint256 maxSellTxPercent) external authorized { _maxSellTxAmount = _totalSupply.mul(maxSellTxPercent).div(10000); } // Exempt from dividend function setIsDividendExempt(address holder, bool exempt) external authorized { require(holder != address(this) && holder != pair); isDividendExempt[holder] = exempt; if(exempt){ distributor.setShare(holder, 0); }else{ distributor.setShare(holder, _balances[holder]); } } // Exempt from fee function setIsFeeExempt(address holder, bool exempt) external authorized { isFeeExempt[holder] = exempt; } // Exempt from max TX function setIsTxLimitExempt(address holder, bool exempt) external authorized { isTxLimitExempt[holder] = exempt; } // Exempt from buy CD function setIsTimelockExempt(address holder, bool exempt) external authorized { isTimelockExempt[holder] = exempt; } // Set our buy fees function setBuyFees(uint256 _liquidityFeeBuy, uint256 _buybackFeeBuy, uint256 _reflectionFeeBuy, uint256 _marketingFeeBuy, uint256 _devFeeBuy, uint256 _feeDenominator) external authorized { liquidityFeeBuy = _liquidityFeeBuy; buybackFeeBuy = _buybackFeeBuy; reflectionFeeBuy = _reflectionFeeBuy; marketingFeeBuy = _marketingFeeBuy; devFeeBuy = _devFeeBuy; totalFeeBuy = _liquidityFeeBuy.add(_buybackFeeBuy).add(_reflectionFeeBuy).add(_marketingFeeBuy).add(_devFeeBuy); feeDenominator = _feeDenominator; } // Set our sell fees function setSellFees(uint256 _liquidityFeeSell, uint256 _buybackFeeSell, uint256 _reflectionFeeSell, uint256 _marketingFeeSell, uint256 _devFeeSell, uint256 _feeDenominator) external authorized { liquidityFeeSell = _liquidityFeeSell; buybackFeeSell = _buybackFeeSell; reflectionFeeSell = _reflectionFeeSell; marketingFeeSell = _marketingFeeSell; devFeeSell = _devFeeSell; totalFeeSell = _liquidityFeeSell.add(_buybackFeeSell).add(_reflectionFeeSell).add(_marketingFeeSell).add(_devFeeSell); feeDenominator = _feeDenominator; } // Set the marketing and liquidity receivers function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver) external authorized { autoLiquidityReceiver = _autoLiquidityReceiver; marketingFeeReceiver = _marketingFeeReceiver; } // Set swapBack settings function setSwapBackSettings(bool _enabled, uint256 _amount) external authorized { swapEnabled = _enabled; swapThreshold = _totalSupply * _amount / 10000; } // Set target liquidity function setTargetLiquidity(uint256 _target, uint256 _denominator) external authorized { targetLiquidity = _target; targetLiquidityDenominator = _denominator; } // Send ETH to marketingwallet function manualSend() external authorized { uint256 contractETHBalance = address(this).balance; payable(marketingFeeReceiver).transfer(contractETHBalance); } // Set criteria for auto distribution function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external authorized { distributor.setDistributionCriteria(_minPeriod, _minDistribution); } // Let people claim there dividend function claimDividend() external { distributor.claimDividend(msg.sender); } // Check how much earnings are unpaid function getUnpaidEarnings(address shareholder) public view returns (uint256) { return distributor.getUnpaidEarnings(shareholder); } // Set gas for distributor function setDistributorSettings(uint256 gas) external authorized { require(gas < 750000); distributorGas = gas; } // Get the circulatingSupply function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO)); } // Get the liquidity backing function getLiquidityBacking(uint256 accuracy) public view returns (uint256) { return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply()); } // Get if we are over liquified or not function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) { return getLiquidityBacking(accuracy) > target; } event AutoLiquify(uint256 amountETH, uint256 amountBOG); event BuybackMultiplierActive(uint256 duration); }
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":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"duration","type":"uint256"}],"name":"BuybackMultiplierActive","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","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":"_maxBuyTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxSellTxAmount","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":"account","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoBuybackEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"autoBuybackMultiplier","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":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_value","type":"bool"}],"name":"blacklistAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyCooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buybackFeeBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buybackFeeSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearBuybackMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint8","name":"_interval","type":"uint8"}],"name":"cooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldownTimerInterval","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devFeeBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devFeeSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableGREED","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_seconds","type":"uint256"}],"name":"enableGREED","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMultipliedFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"selling","type":"bool"}],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getUnpaidEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inGREEDTime","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","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":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFeeBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"reflectionFeeBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionFeeSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_cap","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"},{"internalType":"bool","name":"_autoBuybackMultiplier","type":"bool"}],"name":"setAutoBuybackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFeeBuy","type":"uint256"},{"internalType":"uint256","name":"_buybackFeeBuy","type":"uint256"},{"internalType":"uint256","name":"_reflectionFeeBuy","type":"uint256"},{"internalType":"uint256","name":"_marketingFeeBuy","type":"uint256"},{"internalType":"uint256","name":"_devFeeBuy","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuyTxPercent","type":"uint256"}],"name":"setBuyTxLimitInPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"},{"internalType":"uint256","name":"length","type":"uint256"}],"name":"setBuybackMultiplierSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTimelockExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"setMaxWalletPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFeeSell","type":"uint256"},{"internalType":"uint256","name":"_buybackFeeSell","type":"uint256"},{"internalType":"uint256","name":"_reflectionFeeSell","type":"uint256"},{"internalType":"uint256","name":"_marketingFeeSell","type":"uint256"},{"internalType":"uint256","name":"_devFeeSell","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxSellTxPercent","type":"uint256"}],"name":"setSellTxLimitInPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","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":"totalFeeBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeSell","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":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","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":"account","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"triggerBuybackMultiplier","type":"bool"}],"name":"triggerManualBuyback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600280546001600160a01b031990811673562e362876c8aee4744fc2c6aac8394c312d215d1790915560038054821673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc217905560048054821661dead17905560058054821690556006805490911673910a23d839aa69f11ca535a206c689eb7509b9ac1790556200008c6012600a62000569565b6200009c906305f5e1006200062a565b60095561271060095460c8620000b391906200062a565b620000bf9190620004fd565b600a5561271060095460c8620000d691906200062a565b620000e29190620004fd565b600b5561271060095460c8620000f991906200062a565b620001059190620004fd565b600c556001601455600060155560016016556003601755600060185560056019556001601a556000601b556001601c556003601d556000601e556005601f556064602655610e10602855600060295561271060095460326200016891906200062a565b620001749190620004fd565b602a5560c8602b8190556064602c819055602d91909155602e556107086030556031805461ffff199081169091556207a120603855603980548216611e00179055603e8054909116610101179055348015620001cf57600080fd5b5060008054336001600160a01b031991821681178355825260016020818152604093849020805460ff1916909217909155603b8054737a250d5630b4cf539739df2c5dacb4c659f2488d931683179055825163c45a015560e01b81529251919263c45a01559260048083019392829003018186803b1580156200025157600080fd5b505afa15801562000266573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200028c9190620004cb565b6003546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c6539690604401602060405180830381600087803b158015620002d957600080fd5b505af1158015620002ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003149190620004cb565b603c80546001600160a01b0319166001600160a01b03928316179055306000908152600e60209081526040808320603b80548616855292529182902060001990555490519116906200036690620004bd565b6001600160a01b039091168152602001604051809103906000f08015801562000393573d6000803e3d6000fd5b50603780546001600160a01b03199081166001600160a01b0393841617909155336000818152600f60209081526040808320805460ff199081166001908117909255601084528285208054821683179055601184528285208054821683179055600480548916865283862080548316841790553080875284872080548416851790556006548a1687528487208054841685179055603c548a1687526012865284872080548416851790558652838620805483168417905554909716845281842080549097161790955560078054851684179055600880549094168317909355600954828252600d84528482208190559351938452909283927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35062000662565b611068806200381883390190565b600060208284031215620004de57600080fd5b81516001600160a01b0381168114620004f657600080fd5b9392505050565b6000826200051b57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115620005615781600019048211156200054557620005456200064c565b808516156200055357918102915b93841c939080029062000525565b509250929050565b6000620004f660ff841683600082620005855750600162000624565b81620005945750600062000624565b8160018114620005ad5760028114620005b857620005d8565b600191505062000624565b60ff841115620005cc57620005cc6200064c565b50506001821b62000624565b5060208310610133831016604e8410600b8410161715620005fd575081810a62000624565b62000609838362000520565b80600019048211156200062057620006206200064c565b0290505b92915050565b60008160001904831182151516156200064757620006476200064c565b500290565b634e487b7160e01b600052601160045260246000fd5b6131a680620006726000396000f3fe6080604052600436106104355760003560e01c80637affa29b11610229578063d806d12f1161012e578063f2fde38b116100b6578063f887ea401161007a578063f887ea4014610c8d578063fb5f27fb14610cad578063fe575a8714610cc3578063fe9fbb8014610cf3578063ffb54a9914610d1357600080fd5b8063f2fde38b14610bf8578063f429389014610c18578063f708a64f14610c2d578063f74c9f4714610c4d578063f84ba65d14610c6d57600080fd5b8063e1dcc71f116100fd578063e1dcc71f14610b64578063e3aa51bc14610b83578063f0b37c0414610ba3578063f0fc6bca14610bc3578063f1f3bca314610bd857600080fd5b8063d806d12f14610ac9578063dd62ed3e14610ade578063df20fd4914610b24578063df4a76c514610b4457600080fd5b8063a9059cbb116101b1578063ba876bb911610180578063ba876bb914610a47578063bf56b37114610a67578063cdba31fd14610a7d578063cf4be39414610a93578063d51ed1c814610aa957600080fd5b8063a9059cbb146109dc578063ac45ed1c146109fc578063b210b06d14610a12578063b6a5d7de14610a2757600080fd5b8063893d20e8116101f8578063893d20e81461091957806395d89b411461094b5780639d1944f51461097c578063a4b45c001461099c578063a8aa1b31146109bc57600080fd5b80637affa29b146108a357806382334b94146108c357806382bf293c146108e357806382d201161461090357600080fd5b80632f54bf6e1161033a5780634f7b4d49116102c2578063658d4b7f11610286578063658d4b7f146107f95780636ddd17131461081957806370a0823114610838578063722b62ad1461086e57806378109e541461088d57600080fd5b80634f7b4d491461077457806350db71fb1461078957806353148416146107a9578063571ac8b0146107bf578063617fe0ed146107df57600080fd5b806337bc957e1161030957806337bc957e146106f95780633bb8a8d41461070f578063409d056614610729578063455a43961461073f5780634dfc855a1461075f57600080fd5b80632f54bf6e146106725780632f5620d1146106a1578063313ce567146106c157806333477327146106e357600080fd5b806318160ddd116103bd57806328fd31981161038c57806328fd3198146105e75780632b112e49146106075780632d48e8961461061c5780632d5945671461063c5780632e4a9bd71461065c57600080fd5b806318160ddd14610572578063201e7991146105875780632375ce40146105a757806323b872dd146105c757600080fd5b806310075a691161040457806310075a69146104fa5780631107b3a5146105105780631161ae391461052657806312835c5e1461054657806313374e7a1461055c57600080fd5b80630445b6671461044157806306fdde031461046a578063095ea7b3146104a85780630d295980146104d857600080fd5b3661043c57005b600080fd5b34801561044d57600080fd5b50610457602a5481565b6040519081526020015b60405180910390f35b34801561047657600080fd5b5060408051808201909152600c81526b42616279204f7074696d757360a01b60208201525b6040516104619190612fe9565b3480156104b457600080fd5b506104c86104c3366004612d77565b610d2d565b6040519015158152602001610461565b3480156104e457600080fd5b506104f86104f3366004612da3565b610d9a565b005b34801561050657600080fd5b5061045760175481565b34801561051c57600080fd5b50610457601a5481565b34801561053257600080fd5b506104c8610541366004612eb1565b610de5565b34801561055257600080fd5b50610457601e5481565b34801561056857600080fd5b50610457601d5481565b34801561057e57600080fd5b50600954610457565b34801561059357600080fd5b506104f86105a2366004612eb1565b610df9565b3480156105b357600080fd5b506104f86105c2366004612ed3565b610e29565b3480156105d357600080fd5b506104c86105e2366004612d01565b610e7e565b3480156105f357600080fd5b50610457610602366004612cab565b610f40565b34801561061357600080fd5b50610457610fbe565b34801561062857600080fd5b506104f8610637366004612eb1565b611010565b34801561064857600080fd5b506104f8610657366004612e2a565b61109f565b34801561066857600080fd5b5061045760155481565b34801561067e57600080fd5b506104c861068d366004612cab565b6000546001600160a01b0391821691161490565b3480156106ad57600080fd5b506104f86106bc366004612dda565b6110eb565b3480156106cd57600080fd5b5060125b60405160ff9091168152602001610461565b3480156106ef57600080fd5b50610457600a5481565b34801561070557600080fd5b50610457601b5481565b34801561071b57600080fd5b506031546104c89060ff1681565b34801561073557600080fd5b5061045760165481565b34801561074b57600080fd5b506104f861075a366004612d42565b611151565b34801561076b57600080fd5b506104c86111a1565b34801561078057600080fd5b506104f86111cd565b34801561079557600080fd5b506104f86107a4366004612d42565b6111f9565b3480156107b557600080fd5b50610457601f5481565b3480156107cb57600080fd5b506104c86107da366004612cab565b611249565b3480156107eb57600080fd5b506039546104c89060ff1681565b34801561080557600080fd5b506104f8610814366004612d42565b611257565b34801561082557600080fd5b50603e546104c890610100900460ff1681565b34801561084457600080fd5b50610457610853366004612cab565b6001600160a01b03166000908152600d602052604090205490565b34801561087a57600080fd5b506039546106d190610100900460ff1681565b34801561089957600080fd5b50610457600c5481565b3480156108af57600080fd5b506104f86108be366004612e5c565b6112a7565b3480156108cf57600080fd5b506104f86108de366004612e8e565b6112f3565b3480156108ef57600080fd5b506104f86108fe366004612e5c565b611377565b34801561090f57600080fd5b5061045760145481565b34801561092557600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610461565b34801561095757600080fd5b50604080518082019091526008815267424f5054494d555360c01b602082015261049b565b34801561098857600080fd5b506104f8610997366004612e5c565b6113c2565b3480156109a857600080fd5b506104f86109b7366004612cc8565b6113fb565b3480156109c857600080fd5b50603c54610933906001600160a01b031681565b3480156109e857600080fd5b506104c86109f7366004612d77565b61144e565b348015610a0857600080fd5b50610457601c5481565b348015610a1e57600080fd5b506104f861145b565b348015610a3357600080fd5b506104f8610a42366004612cab565b611487565b348015610a5357600080fd5b506104f8610a62366004612f2d565b6114d8565b348015610a7357600080fd5b50610457603d5481565b348015610a8957600080fd5b5061045760185481565b348015610a9f57600080fd5b50610457600b5481565b348015610ab557600080fd5b50610457610ac4366004612e5c565b61153b565b348015610ad557600080fd5b5061045761157c565b348015610aea57600080fd5b50610457610af9366004612cc8565b6001600160a01b039182166000908152600e6020908152604080832093909416825291909152205490565b348015610b3057600080fd5b506104f8610b3f366004612dbe565b6115ef565b348015610b5057600080fd5b506104f8610b5f366004612e5c565b61164a565b348015610b7057600080fd5b506031546104c890610100900460ff1681565b348015610b8f57600080fd5b506104f8610b9e366004612e5c565b611690565b348015610baf57600080fd5b506104f8610bbe366004612cab565b6116be565b348015610bcf57600080fd5b506104f8611709565b348015610be457600080fd5b50610457610bf3366004612da3565b611762565b348015610c0457600080fd5b506104f8610c13366004612cab565b6117bf565b348015610c2457600080fd5b506104f8611855565b348015610c3957600080fd5b506104f8610c48366004612d42565b6118b8565b348015610c5957600080fd5b506104f8610c68366004612f2d565b6119bc565b348015610c7957600080fd5b506104f8610c88366004612d42565b611a19565b348015610c9957600080fd5b50603b54610933906001600160a01b031681565b348015610cb957600080fd5b5061045760195481565b348015610ccf57600080fd5b506104c8610cde366004612cab565b60136020526000908152604090205460ff1681565b348015610cff57600080fd5b506104c8610d0e366004612cab565b611a69565b348015610d1f57600080fd5b50603e546104c89060ff1681565b336000818152600e602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610d889086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610dcd5760405162461bcd60e51b8152600401610dc49061303e565b60405180910390fd5b603e805460ff191682151517905543603d5550565b50565b600082610df18361153b565b119392505050565b610e0233611a69565b610e1e5760405162461bcd60e51b8152600401610dc49061305e565b602b91909155602c55565b610e3233611a69565b610e4e5760405162461bcd60e51b8152600401610dc49061305e565b6002610e5a83856130d7565b11158015610e6757508183115b610e7057600080fd5b602d92909255602e55603055565b6001600160a01b0383166000908152600e6020908152604080832033845290915281205460001914610f2b576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600e82528381203382529091529190912054610f06918490611a87565b6001600160a01b0385166000908152600e602090815260408083203384529091529020555b610f36848484611ac1565b90505b9392505050565b60375460405163051fa63360e31b81526001600160a01b03838116600483015260009216906328fd31989060240160206040518083038186803b158015610f8657600080fd5b505afa158015610f9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d949190612e75565b6005546001600160a01b03166000908152600d602052604081205461100b906004546001600160a01b03166000908152600d60205260409020546110059060095490611f0f565b90611f0f565b905090565b61101933611a69565b6110355760405162461bcd60e51b8152600401610dc49061305e565b6037546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b15801561108357600080fd5b505af1158015611097573d6000803e3d6000fd5b505050505050565b6110a833611a69565b6110c45760405162461bcd60e51b8152600401610dc49061305e565b6039805461ffff191692151561ff0019169290921761010060ff9290921691909102179055565b6110f433611a69565b6111105760405162461bcd60e51b8152600401610dc49061305e565b6031805460329590955560006033556034939093556035919091554360365561ffff1990921692151561ff0019169290921761010091151591909102179055565b61115a33611a69565b6111765760405162461bcd60e51b8152600401610dc49061305e565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b6000426111bb602854602754611f5190919063ffffffff16565b11156111c75750600190565b50600090565b6111d633611a69565b6111f25760405162461bcd60e51b8152600401610dc49061305e565b6000602755565b61120233611a69565b61121e5760405162461bcd60e51b8152600401610dc49061305e565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b6000610d9482600019610d2d565b61126033611a69565b61127c5760405162461bcd60e51b8152600401610dc49061305e565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b6112b033611a69565b6112cc5760405162461bcd60e51b8152600401610dc49061305e565b6112ed6127106112e783600954611fb090919063ffffffff16565b9061202f565b600a5550565b600061130783670de0b6b3a76400006130f9565b9050600061131682606461202f565b6004549091506113309082906001600160a01b0316612071565b82156113715742602f556030546040519081527f39d2389ec5c1fa77b2c0d374bc61b6d7bd97ccba280fcdeb4e9c7644898d7c3a9060200160405180910390a15b50505050565b6000546001600160a01b031633146113a15760405162461bcd60e51b8152600401610dc49061303e565b6113bc6127106112e783600954611fb090919063ffffffff16565b600c5550565b6113cb33611a69565b6113e75760405162461bcd60e51b8152600401610dc49061305e565b620b71b081106113f657600080fd5b603855565b61140433611a69565b6114205760405162461bcd60e51b8152600401610dc49061305e565b600780546001600160a01b039384166001600160a01b03199182161790915560088054929093169116179055565b6000610f39338484611ac1565b61146433611a69565b6114805760405162461bcd60e51b8152600401610dc49061305e565b6000602f55565b6000546001600160a01b031633146114b15760405162461bcd60e51b8152600401610dc49061303e565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6114e133611a69565b6114fd5760405162461bcd60e51b8152600401610dc49061305e565b601a869055601b859055601c849055601d839055601e82905561152e82611528858188818c8c611f51565b90611f51565b601f556026555050505050565b6000610d94611548610fbe565b603c546001600160a01b03166000908152600d60205260409020546112e790611575906002905b90611fb0565b8590611fb0565b60008061159a42611005603054602f54611f5190919063ffffffff16565b905060006115c1602554611005602e546112e7602d54602554611fb090919063ffffffff16565b90506115e86115df6030546112e78585611fb090919063ffffffff16565b60255490611f51565b9250505090565b6115f833611a69565b6116145760405162461bcd60e51b8152600401610dc49061305e565b603e805461ff00191661010084151502179055600954612710906116399083906130f9565b61164391906130d7565b602a555050565b61165333611a69565b61166f5760405162461bcd60e51b8152600401610dc49061305e565b61168a6127106112e783600954611fb090919063ffffffff16565b600b5550565b61169933611a69565b6116b55760405162461bcd60e51b8152600401610dc49061305e565b42602755602855565b6000546001600160a01b031633146116e85760405162461bcd60e51b8152600401610dc49061303e565b6001600160a01b03166000908152600160205260409020805460ff19169055565b603754604051630afbf02f60e11b81523360048201526001600160a01b03909116906315f7e05e90602401600060405180830381600087803b15801561174e57600080fd5b505af1158015611371573d6000803e3d6000fd5b600043602954603d5461177591906130bf565b1061178857602654610d94906001611f0f565b8180156117aa5750426117a8603054602f54611f5190919063ffffffff16565b115b156117b757610d9461157c565b505060255490565b6000546001600160a01b031633146117e95760405162461bcd60e51b8152600401610dc49061303e565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b61185e33611a69565b61187a5760405162461bcd60e51b8152600401610dc49061305e565b60085460405147916001600160a01b03169082156108fc029083906000818181858888f193505050501580156118b4573d6000803e3d6000fd5b5050565b6118c133611a69565b6118dd5760405162461bcd60e51b8152600401610dc49061305e565b6001600160a01b03821630148015906119045750603c546001600160a01b03838116911614155b61190d57600080fd5b6001600160a01b0382166000908152601260205260409020805460ff1916821580159190911790915561197357603754604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca9690604401611069565b6037546001600160a01b038381166000818152600d602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401611069565b6119c533611a69565b6119e15760405162461bcd60e51b8152600401610dc49061305e565b60148690556015859055601684905560178390556018829055611a0c82611528858188818c8c611f51565b6019556026555050505050565b611a2233611a69565b611a3e5760405162461bcd60e51b8152600401610dc49061305e565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526001602052604090205460ff1690565b60008184841115611aab5760405162461bcd60e51b8152600401610dc49190612fe9565b506000611ab88486613118565b95945050505050565b603e5460009062010000900460ff1615611ae757611ae0848484612180565b9050610f39565b6001600160a01b03841660009081526001602052604090205460ff16158015611b2957506001600160a01b03831660009081526001602052604090205460ff16155b15611b8057603e5460ff16611b805760405162461bcd60e51b815260206004820152601760248201527f54726164696e67206e6f7420656e61626c6564207965740000000000000000006044820152606401610dc4565b6001600160a01b03831660009081526013602052604090205460ff16158015611bc257506001600160a01b03841660009081526013602052604090205460ff16155b611c075760405162461bcd60e51b81526020600482015260166024820152751059191c995cdcc81a5cc8189b1858dadb1a5cdd195960521b6044820152606401610dc4565b603c546001600160a01b03848116911614611c2181612266565b611c2c8585856122ba565b611c36858561242c565b611c428584868461250e565b6000611c4c6111a1565b9050611c56612646565b15611c6357611c636126a0565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389166000908152600d9091529190912054611cb5918690611a87565b6001600160a01b0387166000908152600d6020908152604080832093909355600f90529081205460ff1615611cea5784611cf6565b611cf687868585612b68565b6001600160a01b0387166000908152600d6020526040902054909150611d1c9082611f51565b6001600160a01b038088166000908152600d6020908152604080832094909455918a1681526012909152205460ff16611dc0576037546001600160a01b038881166000818152600d602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015611dad57600080fd5b505af1925050508015611dbe575060015b505b6001600160a01b03861660009081526012602052604090205460ff16611e51576037546001600160a01b038781166000818152600d602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015611e3e57600080fd5b505af1925050508015611e4f575060015b505b6037546038546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c47991611e899160040190815260200190565b600060405180830381600087803b158015611ea357600080fd5b505af1925050508015611eb4575060015b50856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611efa91815260200190565b60405180910390a35060019695505050505050565b6000610f3983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a87565b600080611f5e83856130bf565b905083811015610f395760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610dc4565b600082611fbf57506000610d94565b6000611fcb83856130f9565b905082611fd885836130d7565b14610f395760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610dc4565b6000610f3983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c68565b603e805462ff0000191662010000179055604080516002808252606082018352600092602083019080368337505060035482519293506001600160a01b0316918391506000906120c3576120c3613145565b60200260200101906001600160a01b031690816001600160a01b03168152505030816001815181106120f7576120f7613145565b6001600160a01b039283166020918202929092010152603b5460405163b6f9de9560e01b815291169063b6f9de9590859061213d90600090869088904290600401612fb4565b6000604051808303818588803b15801561215657600080fd5b505af115801561216a573d6000803e3d6000fd5b5050603e805462ff000019169055505050505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600d909152918220546121d1918490611a87565b6001600160a01b038086166000908152600d602052604080822093909355908516815220546122009083611f51565b6001600160a01b038085166000818152600d602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906122549086815260200190565b60405180910390a35060019392505050565b801561229357601a54602055601b54602155601c54602255601d54602355601e54602455601f5460255550565b60145460205560155460215560165460225560175460235560185460245560195460255550565b6001600160a01b03831660009081526001602052604090205460ff161580156122f157506000546001600160a01b03838116911614155b801561230657506001600160a01b0382163014155b801561232057506004546001600160a01b03838116911614155b801561233a5750603c546001600160a01b03838116911614155b801561235457506008546001600160a01b03838116911614155b801561236e57506007546001600160a01b03838116911614155b801561238857506006546001600160a01b03838116911614155b15612427576001600160a01b0382166000908152600d6020526040902054600c546123b383836130bf565b11156113715760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610dc4565b505050565b603c546001600160a01b03838116911614801561244b575060395460ff165b801561247057506001600160a01b03811660009081526011602052604090205460ff16155b156118b4576001600160a01b0381166000908152603a602052604090205442116124dc5760405162461bcd60e51b815260206004820152601c60248201527f506c656173652077616974206265747765656e2074776f2062757973000000006044820152606401610dc4565b6039546124f190610100900460ff16426130bf565b6001600160a01b0382166000908152603a60205260409020555050565b6000546001600160a01b038381169116146113715780156125ba57600b548311158061255257506001600160a01b03841660009081526010602052604090205460ff165b8061257557506001600160a01b03821660009081526010602052604090205460ff165b6125b55760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610dc4565b611371565b600a54831115806125e357506001600160a01b03841660009081526010602052604090205460ff165b8061260657506001600160a01b03821660009081526010602052604090205460ff165b6113715760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610dc4565b603c546000906001600160a01b0316331480159061266d5750603e5462010000900460ff16155b80156126805750603e54610100900460ff165b801561100b575050602a54306000908152600d6020526040902054101590565b603e805462ff0000191662010000179055602b54602c546000916126c391610de5565b6126cf576020546126d2565b60005b905060006126f660026112e76025546112e786602a54611fb090919063ffffffff16565b9050600061270f82602a54611f0f90919063ffffffff16565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061274957612749613145565b6001600160a01b03928316602091820292909201015260035482519116908290600190811061277a5761277a613145565b6001600160a01b039283166020918202929092010152603b5460405163791ac94760e01b81524792919091169063791ac947906127c4908690600090879030904290600401613083565b600060405180830381600087803b1580156127de57600080fd5b505af11580156127f2573d6000803e3d6000fd5b50505050600061280b8247611f0f90919063ffffffff16565b9050600061282661281d88600261202f565b60255490611f0f565b9050600061283b60026112e78481878d611fb0565b90506000612858836112e760225487611fb090919063ffffffff16565b90506000612875846112e760235488611fb090919063ffffffff16565b90506000612892856112e760245489611fb090919063ffffffff16565b9050603760009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b1580156128e457600080fd5b505af1935050505080156128f6575060015b506008546040516000916001600160a01b03169061753090859084818181858888f193505050503d8060008114612949576040519150601f19603f3d011682016040523d82523d6000602084013e61294e565b606091505b50506006546040519192506000916001600160a01b039091169061753090859084818181858888f193505050503d80600081146129a7576040519150601f19603f3d011682016040523d82523d6000602084013e6129ac565b606091505b5050905081612a0e5760405162461bcd60e51b815260206004820152602860248201527f6d61726b6574696e672072656365697665722072656a656374656420455448206044820152673a3930b739b332b960c11b6064820152608401610dc4565b80612a665760405162461bcd60e51b815260206004820152602260248201527f6465762072656365697665722072656a656374656420455448207472616e736660448201526132b960f11b6064820152608401610dc4565b8b15612b4d57603b5460075460405163f305d71960e01b8152306004820152602481018f905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990889060c4016060604051808303818588803b158015612ad757600080fd5b505af1158015612aeb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612b109190612eff565b505060408051888152602081018f90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050603e805462ff0000191690555050505050505050505050565b6000808215612bc3578315612ba357612b9c6026546112e760026112e7600361156f6025548c611fb090919063ffffffff16565b9050612be1565b612b9c6026546112e760026112e76025548a611fb090919063ffffffff16565b612bde6026546112e760255488611fb090919063ffffffff16565b90505b306000908152600d6020526040902054612bfb9082611f51565b306000818152600d6020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612c4c9085815260200190565b60405180910390a3612c5e8582611f0f565b9695505050505050565b60008183612c895760405162461bcd60e51b8152600401610dc49190612fe9565b506000611ab884866130d7565b80358015158114612ca657600080fd5b919050565b600060208284031215612cbd57600080fd5b8135610f398161315b565b60008060408385031215612cdb57600080fd5b8235612ce68161315b565b91506020830135612cf68161315b565b809150509250929050565b600080600060608486031215612d1657600080fd5b8335612d218161315b565b92506020840135612d318161315b565b929592945050506040919091013590565b60008060408385031215612d5557600080fd5b8235612d608161315b565b9150612d6e60208401612c96565b90509250929050565b60008060408385031215612d8a57600080fd5b8235612d958161315b565b946020939093013593505050565b600060208284031215612db557600080fd5b610f3982612c96565b60008060408385031215612dd157600080fd5b612d9583612c96565b600080600080600060a08688031215612df257600080fd5b612dfb86612c96565b9450602086013593506040860135925060608601359150612e1e60808701612c96565b90509295509295909350565b60008060408385031215612e3d57600080fd5b612e4683612c96565b9150602083013560ff81168114612cf657600080fd5b600060208284031215612e6e57600080fd5b5035919050565b600060208284031215612e8757600080fd5b5051919050565b60008060408385031215612ea157600080fd5b82359150612d6e60208401612c96565b60008060408385031215612ec457600080fd5b50508035926020909101359150565b600080600060608486031215612ee857600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215612f1457600080fd5b8351925060208401519150604084015190509250925092565b60008060008060008060c08789031215612f4657600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600081518084526020808501945080840160005b83811015612fa95781516001600160a01b031687529582019590820190600101612f84565b509495945050505050565b848152608060208201526000612fcd6080830186612f70565b6001600160a01b03949094166040830152506060015292915050565b600060208083528351808285015260005b8181101561301657858101830151858201604001528201612ffa565b81811115613028576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b85815284602082015260a0604082015260006130a260a0830186612f70565b6001600160a01b0394909416606083015250608001529392505050565b600082198211156130d2576130d261312f565b500190565b6000826130f457634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156131135761311361312f565b500290565b60008282101561312a5761312a61312f565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114610de257600080fdfea264697066735822122035cc5cd6aefacdb2cc90743d5b63c9e1951975ac9e6022ed14cb956cb7a60e4064736f6c634300080700336080604052600180546001600160a01b031990811673562e362876c8aee4744fc2c6aac8394c312d215d179091556002805490911673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790556ec097ce7bc90715b34b9f1000000000600c55610708600d5564e8d4a51000600e5534801561007a57600080fd5b50604051611068380380611068833981016040819052610099916100f3565b6001600160a01b0381166100c157737a250d5630b4cf539739df2c5dacb4c659f2488d6100c3565b805b600380546001600160a01b03929092166001600160a01b0319928316179055600080549091163317905550610123565b60006020828403121561010557600080fd5b81516001600160a01b038116811461011c57600080fd5b9392505050565b610f36806101326000396000f3fe6080604052600436106100dd5760003560e01c8063997664d71161007f578063e2d2e21911610059578063e2d2e2191461022e578063efca2eed14610244578063ffb2c4791461025a578063ffd49c841461027a57600080fd5b8063997664d7146101b9578063ce7c2ac2146101cf578063d0e30db01461022657600080fd5b806328fd3198116100bb57806328fd31981461014d5780632d48e8961461016d5780633a98ef391461018d5780634fab0ae8146101a357600080fd5b806311ce023d146100e257806314b6ca961461010b57806315f7e05e1461012d575b600080fd5b3480156100ee57600080fd5b506100f8600c5481565b6040519081526020015b60405180910390f35b34801561011757600080fd5b5061012b610126366004610cd4565b610290565b005b34801561013957600080fd5b5061012b610148366004610cb9565b610408565b34801561015957600080fd5b506100f8610168366004610cb9565b61042b565b34801561017957600080fd5b5061012b610188366004610d52565b6104b4565b34801561019957600080fd5b506100f860085481565b3480156101af57600080fd5b506100f8600e5481565b3480156101c557600080fd5b506100f860095481565b3480156101db57600080fd5b5061020b6101ea366004610cb9565b60076020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610102565b61012b6104d6565b34801561023a57600080fd5b506100f8600b5481565b34801561025057600080fd5b506100f8600a5481565b34801561026657600080fd5b5061012b610275366004610d20565b610723565b34801561028657600080fd5b506100f8600d5481565b6000546001600160a01b031633146102a757600080fd5b6001600160a01b038216600090815260076020526040902054156102ce576102ce82610823565b6000811180156102f457506001600160a01b038216600090815260076020526040902054155b1561035a57600480546001600160a01b0384166000818152600560205260408120839055600183018455929092527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b031916909117905561038d565b8015801561037f57506001600160a01b03821660009081526007602052604090205415155b1561038d5761038d8261094e565b6001600160a01b0382166000908152600760205260409020546008546103be9183916103b891610a63565b90610aae565b6008556001600160a01b03821660009081526007602052604090208190556103e581610b12565b6001600160a01b0390921660009081526007602052604090206001019190915550565b6000546001600160a01b0316331461041f57600080fd5b61042881610823565b50565b6001600160a01b03811660009081526007602052604081205461045057506000919050565b6001600160a01b03821660009081526007602052604081205461047290610b12565b6001600160a01b0384166000908152600760205260409020600101549091508082116104a2575060009392505050565b6104ac8282610a63565b949350505050565b6000546001600160a01b031633146104cb57600080fd5b600d91909155600e55565b6000546001600160a01b031633146104ed57600080fd5b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b15801561053157600080fd5b505afa158015610545573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105699190610d39565b6040805160028082526060820183529293506000929091602083019080368337505060025482519293506001600160a01b0316918391506000906105af576105af610eea565b6001600160a01b03928316602091820292909201015260018054835192169183919081106105df576105df610eea565b6001600160a01b03928316602091820292909201015260035460405163b6f9de9560e01b815291169063b6f9de9590349061062590600090869030904290600401610d74565b6000604051808303818588803b15801561063e57600080fd5b505af1158015610652573d6000803e3d6000fd5b50506001546040516370a0823160e01b8152306004820152600094506106e193508692506001600160a01b03909116906370a082319060240160206040518083038186803b1580156106a357600080fd5b505afa1580156106b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106db9190610d39565b90610a63565b6009549091506106f19082610aae565b600955600854600c5461071b916107129161070c9085610b2f565b90610bae565b600b5490610aae565b600b55505050565b6000546001600160a01b0316331461073a57600080fd5b60045480610746575050565b6000805a905060005b848310801561075d57508381105b1561081c5783600f5410610771576000600f555b6107a36004600f548154811061078957610789610eea565b6000918252602090912001546001600160a01b0316610bf0565b156107da576107da6004600f54815481106107c0576107c0610eea565b6000918252602090912001546001600160a01b0316610823565b6107ef6107e85a8490610a63565b8490610aae565b92505a600f8054919350600061080483610ea3565b9190505550808061081490610ea3565b91505061074f565b5050505050565b6001600160a01b0381166000908152600760205260409020546108435750565b600061084e8261042b565b9050801561094a57600a546108639082610aae565b600a5560015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb90604401602060405180830381600087803b1580156108b457600080fd5b505af11580156108c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ec9190610cfe565b506001600160a01b038216600090815260066020908152604080832042905560079091529020600201546109209082610aae565b6001600160a01b03831660009081526007602052604090206002810191909155546103e590610b12565b5050565b6004805461095e90600190610e8c565b8154811061096e5761096e610eea565b60009182526020808320909101546001600160a01b03848116845260059092526040909220546004805492909316929181106109ac576109ac610eea565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152600591829052604081205460048054919392916109f890600190610e8c565b81548110610a0857610a08610eea565b60009182526020808320909101546001600160a01b031683528201929092526040019020556004805480610a3e57610a3e610ed4565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610aa583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610c35565b90505b92915050565b600080610abb8385610e33565b905083811015610aa55760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064015b60405180910390fd5b6000610aa8600c5461070c600b5485610b2f90919063ffffffff16565b600082610b3e57506000610aa8565b6000610b4a8385610e6d565b905082610b578583610e4b565b14610aa55760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b09565b6000610aa583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610c6f565b600d546001600160a01b03821660009081526006602052604081205490914291610c1a9190610e33565b108015610aa85750600e54610c2e8361042b565b1192915050565b60008184841115610c595760405162461bcd60e51b8152600401610b099190610dde565b506000610c668486610e8c565b95945050505050565b60008183610c905760405162461bcd60e51b8152600401610b099190610dde565b506000610c668486610e4b565b80356001600160a01b0381168114610cb457600080fd5b919050565b600060208284031215610ccb57600080fd5b610aa582610c9d565b60008060408385031215610ce757600080fd5b610cf083610c9d565b946020939093013593505050565b600060208284031215610d1057600080fd5b81518015158114610aa557600080fd5b600060208284031215610d3257600080fd5b5035919050565b600060208284031215610d4b57600080fd5b5051919050565b60008060408385031215610d6557600080fd5b50508035926020909101359150565b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015610dbe5784516001600160a01b031683529383019391830191600101610d99565b50506001600160a01b039690961660408501525050506060015292915050565b600060208083528351808285015260005b81811015610e0b57858101830151858201604001528201610def565b81811115610e1d576000604083870101525b50601f01601f1916929092016040019392505050565b60008219821115610e4657610e46610ebe565b500190565b600082610e6857634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615610e8757610e87610ebe565b500290565b600082821015610e9e57610e9e610ebe565b500390565b6000600019821415610eb757610eb7610ebe565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea2646970667358221220ee9758b529db9416879e3b674955e4ce3d167227966d0dc42e50008a882503cb64736f6c63430008070033
Deployed Bytecode
0x6080604052600436106104355760003560e01c80637affa29b11610229578063d806d12f1161012e578063f2fde38b116100b6578063f887ea401161007a578063f887ea4014610c8d578063fb5f27fb14610cad578063fe575a8714610cc3578063fe9fbb8014610cf3578063ffb54a9914610d1357600080fd5b8063f2fde38b14610bf8578063f429389014610c18578063f708a64f14610c2d578063f74c9f4714610c4d578063f84ba65d14610c6d57600080fd5b8063e1dcc71f116100fd578063e1dcc71f14610b64578063e3aa51bc14610b83578063f0b37c0414610ba3578063f0fc6bca14610bc3578063f1f3bca314610bd857600080fd5b8063d806d12f14610ac9578063dd62ed3e14610ade578063df20fd4914610b24578063df4a76c514610b4457600080fd5b8063a9059cbb116101b1578063ba876bb911610180578063ba876bb914610a47578063bf56b37114610a67578063cdba31fd14610a7d578063cf4be39414610a93578063d51ed1c814610aa957600080fd5b8063a9059cbb146109dc578063ac45ed1c146109fc578063b210b06d14610a12578063b6a5d7de14610a2757600080fd5b8063893d20e8116101f8578063893d20e81461091957806395d89b411461094b5780639d1944f51461097c578063a4b45c001461099c578063a8aa1b31146109bc57600080fd5b80637affa29b146108a357806382334b94146108c357806382bf293c146108e357806382d201161461090357600080fd5b80632f54bf6e1161033a5780634f7b4d49116102c2578063658d4b7f11610286578063658d4b7f146107f95780636ddd17131461081957806370a0823114610838578063722b62ad1461086e57806378109e541461088d57600080fd5b80634f7b4d491461077457806350db71fb1461078957806353148416146107a9578063571ac8b0146107bf578063617fe0ed146107df57600080fd5b806337bc957e1161030957806337bc957e146106f95780633bb8a8d41461070f578063409d056614610729578063455a43961461073f5780634dfc855a1461075f57600080fd5b80632f54bf6e146106725780632f5620d1146106a1578063313ce567146106c157806333477327146106e357600080fd5b806318160ddd116103bd57806328fd31981161038c57806328fd3198146105e75780632b112e49146106075780632d48e8961461061c5780632d5945671461063c5780632e4a9bd71461065c57600080fd5b806318160ddd14610572578063201e7991146105875780632375ce40146105a757806323b872dd146105c757600080fd5b806310075a691161040457806310075a69146104fa5780631107b3a5146105105780631161ae391461052657806312835c5e1461054657806313374e7a1461055c57600080fd5b80630445b6671461044157806306fdde031461046a578063095ea7b3146104a85780630d295980146104d857600080fd5b3661043c57005b600080fd5b34801561044d57600080fd5b50610457602a5481565b6040519081526020015b60405180910390f35b34801561047657600080fd5b5060408051808201909152600c81526b42616279204f7074696d757360a01b60208201525b6040516104619190612fe9565b3480156104b457600080fd5b506104c86104c3366004612d77565b610d2d565b6040519015158152602001610461565b3480156104e457600080fd5b506104f86104f3366004612da3565b610d9a565b005b34801561050657600080fd5b5061045760175481565b34801561051c57600080fd5b50610457601a5481565b34801561053257600080fd5b506104c8610541366004612eb1565b610de5565b34801561055257600080fd5b50610457601e5481565b34801561056857600080fd5b50610457601d5481565b34801561057e57600080fd5b50600954610457565b34801561059357600080fd5b506104f86105a2366004612eb1565b610df9565b3480156105b357600080fd5b506104f86105c2366004612ed3565b610e29565b3480156105d357600080fd5b506104c86105e2366004612d01565b610e7e565b3480156105f357600080fd5b50610457610602366004612cab565b610f40565b34801561061357600080fd5b50610457610fbe565b34801561062857600080fd5b506104f8610637366004612eb1565b611010565b34801561064857600080fd5b506104f8610657366004612e2a565b61109f565b34801561066857600080fd5b5061045760155481565b34801561067e57600080fd5b506104c861068d366004612cab565b6000546001600160a01b0391821691161490565b3480156106ad57600080fd5b506104f86106bc366004612dda565b6110eb565b3480156106cd57600080fd5b5060125b60405160ff9091168152602001610461565b3480156106ef57600080fd5b50610457600a5481565b34801561070557600080fd5b50610457601b5481565b34801561071b57600080fd5b506031546104c89060ff1681565b34801561073557600080fd5b5061045760165481565b34801561074b57600080fd5b506104f861075a366004612d42565b611151565b34801561076b57600080fd5b506104c86111a1565b34801561078057600080fd5b506104f86111cd565b34801561079557600080fd5b506104f86107a4366004612d42565b6111f9565b3480156107b557600080fd5b50610457601f5481565b3480156107cb57600080fd5b506104c86107da366004612cab565b611249565b3480156107eb57600080fd5b506039546104c89060ff1681565b34801561080557600080fd5b506104f8610814366004612d42565b611257565b34801561082557600080fd5b50603e546104c890610100900460ff1681565b34801561084457600080fd5b50610457610853366004612cab565b6001600160a01b03166000908152600d602052604090205490565b34801561087a57600080fd5b506039546106d190610100900460ff1681565b34801561089957600080fd5b50610457600c5481565b3480156108af57600080fd5b506104f86108be366004612e5c565b6112a7565b3480156108cf57600080fd5b506104f86108de366004612e8e565b6112f3565b3480156108ef57600080fd5b506104f86108fe366004612e5c565b611377565b34801561090f57600080fd5b5061045760145481565b34801561092557600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610461565b34801561095757600080fd5b50604080518082019091526008815267424f5054494d555360c01b602082015261049b565b34801561098857600080fd5b506104f8610997366004612e5c565b6113c2565b3480156109a857600080fd5b506104f86109b7366004612cc8565b6113fb565b3480156109c857600080fd5b50603c54610933906001600160a01b031681565b3480156109e857600080fd5b506104c86109f7366004612d77565b61144e565b348015610a0857600080fd5b50610457601c5481565b348015610a1e57600080fd5b506104f861145b565b348015610a3357600080fd5b506104f8610a42366004612cab565b611487565b348015610a5357600080fd5b506104f8610a62366004612f2d565b6114d8565b348015610a7357600080fd5b50610457603d5481565b348015610a8957600080fd5b5061045760185481565b348015610a9f57600080fd5b50610457600b5481565b348015610ab557600080fd5b50610457610ac4366004612e5c565b61153b565b348015610ad557600080fd5b5061045761157c565b348015610aea57600080fd5b50610457610af9366004612cc8565b6001600160a01b039182166000908152600e6020908152604080832093909416825291909152205490565b348015610b3057600080fd5b506104f8610b3f366004612dbe565b6115ef565b348015610b5057600080fd5b506104f8610b5f366004612e5c565b61164a565b348015610b7057600080fd5b506031546104c890610100900460ff1681565b348015610b8f57600080fd5b506104f8610b9e366004612e5c565b611690565b348015610baf57600080fd5b506104f8610bbe366004612cab565b6116be565b348015610bcf57600080fd5b506104f8611709565b348015610be457600080fd5b50610457610bf3366004612da3565b611762565b348015610c0457600080fd5b506104f8610c13366004612cab565b6117bf565b348015610c2457600080fd5b506104f8611855565b348015610c3957600080fd5b506104f8610c48366004612d42565b6118b8565b348015610c5957600080fd5b506104f8610c68366004612f2d565b6119bc565b348015610c7957600080fd5b506104f8610c88366004612d42565b611a19565b348015610c9957600080fd5b50603b54610933906001600160a01b031681565b348015610cb957600080fd5b5061045760195481565b348015610ccf57600080fd5b506104c8610cde366004612cab565b60136020526000908152604090205460ff1681565b348015610cff57600080fd5b506104c8610d0e366004612cab565b611a69565b348015610d1f57600080fd5b50603e546104c89060ff1681565b336000818152600e602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610d889086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610dcd5760405162461bcd60e51b8152600401610dc49061303e565b60405180910390fd5b603e805460ff191682151517905543603d5550565b50565b600082610df18361153b565b119392505050565b610e0233611a69565b610e1e5760405162461bcd60e51b8152600401610dc49061305e565b602b91909155602c55565b610e3233611a69565b610e4e5760405162461bcd60e51b8152600401610dc49061305e565b6002610e5a83856130d7565b11158015610e6757508183115b610e7057600080fd5b602d92909255602e55603055565b6001600160a01b0383166000908152600e6020908152604080832033845290915281205460001914610f2b576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600e82528381203382529091529190912054610f06918490611a87565b6001600160a01b0385166000908152600e602090815260408083203384529091529020555b610f36848484611ac1565b90505b9392505050565b60375460405163051fa63360e31b81526001600160a01b03838116600483015260009216906328fd31989060240160206040518083038186803b158015610f8657600080fd5b505afa158015610f9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d949190612e75565b6005546001600160a01b03166000908152600d602052604081205461100b906004546001600160a01b03166000908152600d60205260409020546110059060095490611f0f565b90611f0f565b905090565b61101933611a69565b6110355760405162461bcd60e51b8152600401610dc49061305e565b6037546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b15801561108357600080fd5b505af1158015611097573d6000803e3d6000fd5b505050505050565b6110a833611a69565b6110c45760405162461bcd60e51b8152600401610dc49061305e565b6039805461ffff191692151561ff0019169290921761010060ff9290921691909102179055565b6110f433611a69565b6111105760405162461bcd60e51b8152600401610dc49061305e565b6031805460329590955560006033556034939093556035919091554360365561ffff1990921692151561ff0019169290921761010091151591909102179055565b61115a33611a69565b6111765760405162461bcd60e51b8152600401610dc49061305e565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b6000426111bb602854602754611f5190919063ffffffff16565b11156111c75750600190565b50600090565b6111d633611a69565b6111f25760405162461bcd60e51b8152600401610dc49061305e565b6000602755565b61120233611a69565b61121e5760405162461bcd60e51b8152600401610dc49061305e565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b6000610d9482600019610d2d565b61126033611a69565b61127c5760405162461bcd60e51b8152600401610dc49061305e565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b6112b033611a69565b6112cc5760405162461bcd60e51b8152600401610dc49061305e565b6112ed6127106112e783600954611fb090919063ffffffff16565b9061202f565b600a5550565b600061130783670de0b6b3a76400006130f9565b9050600061131682606461202f565b6004549091506113309082906001600160a01b0316612071565b82156113715742602f556030546040519081527f39d2389ec5c1fa77b2c0d374bc61b6d7bd97ccba280fcdeb4e9c7644898d7c3a9060200160405180910390a15b50505050565b6000546001600160a01b031633146113a15760405162461bcd60e51b8152600401610dc49061303e565b6113bc6127106112e783600954611fb090919063ffffffff16565b600c5550565b6113cb33611a69565b6113e75760405162461bcd60e51b8152600401610dc49061305e565b620b71b081106113f657600080fd5b603855565b61140433611a69565b6114205760405162461bcd60e51b8152600401610dc49061305e565b600780546001600160a01b039384166001600160a01b03199182161790915560088054929093169116179055565b6000610f39338484611ac1565b61146433611a69565b6114805760405162461bcd60e51b8152600401610dc49061305e565b6000602f55565b6000546001600160a01b031633146114b15760405162461bcd60e51b8152600401610dc49061303e565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6114e133611a69565b6114fd5760405162461bcd60e51b8152600401610dc49061305e565b601a869055601b859055601c849055601d839055601e82905561152e82611528858188818c8c611f51565b90611f51565b601f556026555050505050565b6000610d94611548610fbe565b603c546001600160a01b03166000908152600d60205260409020546112e790611575906002905b90611fb0565b8590611fb0565b60008061159a42611005603054602f54611f5190919063ffffffff16565b905060006115c1602554611005602e546112e7602d54602554611fb090919063ffffffff16565b90506115e86115df6030546112e78585611fb090919063ffffffff16565b60255490611f51565b9250505090565b6115f833611a69565b6116145760405162461bcd60e51b8152600401610dc49061305e565b603e805461ff00191661010084151502179055600954612710906116399083906130f9565b61164391906130d7565b602a555050565b61165333611a69565b61166f5760405162461bcd60e51b8152600401610dc49061305e565b61168a6127106112e783600954611fb090919063ffffffff16565b600b5550565b61169933611a69565b6116b55760405162461bcd60e51b8152600401610dc49061305e565b42602755602855565b6000546001600160a01b031633146116e85760405162461bcd60e51b8152600401610dc49061303e565b6001600160a01b03166000908152600160205260409020805460ff19169055565b603754604051630afbf02f60e11b81523360048201526001600160a01b03909116906315f7e05e90602401600060405180830381600087803b15801561174e57600080fd5b505af1158015611371573d6000803e3d6000fd5b600043602954603d5461177591906130bf565b1061178857602654610d94906001611f0f565b8180156117aa5750426117a8603054602f54611f5190919063ffffffff16565b115b156117b757610d9461157c565b505060255490565b6000546001600160a01b031633146117e95760405162461bcd60e51b8152600401610dc49061303e565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b61185e33611a69565b61187a5760405162461bcd60e51b8152600401610dc49061305e565b60085460405147916001600160a01b03169082156108fc029083906000818181858888f193505050501580156118b4573d6000803e3d6000fd5b5050565b6118c133611a69565b6118dd5760405162461bcd60e51b8152600401610dc49061305e565b6001600160a01b03821630148015906119045750603c546001600160a01b03838116911614155b61190d57600080fd5b6001600160a01b0382166000908152601260205260409020805460ff1916821580159190911790915561197357603754604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca9690604401611069565b6037546001600160a01b038381166000818152600d602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401611069565b6119c533611a69565b6119e15760405162461bcd60e51b8152600401610dc49061305e565b60148690556015859055601684905560178390556018829055611a0c82611528858188818c8c611f51565b6019556026555050505050565b611a2233611a69565b611a3e5760405162461bcd60e51b8152600401610dc49061305e565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526001602052604090205460ff1690565b60008184841115611aab5760405162461bcd60e51b8152600401610dc49190612fe9565b506000611ab88486613118565b95945050505050565b603e5460009062010000900460ff1615611ae757611ae0848484612180565b9050610f39565b6001600160a01b03841660009081526001602052604090205460ff16158015611b2957506001600160a01b03831660009081526001602052604090205460ff16155b15611b8057603e5460ff16611b805760405162461bcd60e51b815260206004820152601760248201527f54726164696e67206e6f7420656e61626c6564207965740000000000000000006044820152606401610dc4565b6001600160a01b03831660009081526013602052604090205460ff16158015611bc257506001600160a01b03841660009081526013602052604090205460ff16155b611c075760405162461bcd60e51b81526020600482015260166024820152751059191c995cdcc81a5cc8189b1858dadb1a5cdd195960521b6044820152606401610dc4565b603c546001600160a01b03848116911614611c2181612266565b611c2c8585856122ba565b611c36858561242c565b611c428584868461250e565b6000611c4c6111a1565b9050611c56612646565b15611c6357611c636126a0565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389166000908152600d9091529190912054611cb5918690611a87565b6001600160a01b0387166000908152600d6020908152604080832093909355600f90529081205460ff1615611cea5784611cf6565b611cf687868585612b68565b6001600160a01b0387166000908152600d6020526040902054909150611d1c9082611f51565b6001600160a01b038088166000908152600d6020908152604080832094909455918a1681526012909152205460ff16611dc0576037546001600160a01b038881166000818152600d602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015611dad57600080fd5b505af1925050508015611dbe575060015b505b6001600160a01b03861660009081526012602052604090205460ff16611e51576037546001600160a01b038781166000818152600d602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015611e3e57600080fd5b505af1925050508015611e4f575060015b505b6037546038546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c47991611e899160040190815260200190565b600060405180830381600087803b158015611ea357600080fd5b505af1925050508015611eb4575060015b50856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611efa91815260200190565b60405180910390a35060019695505050505050565b6000610f3983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a87565b600080611f5e83856130bf565b905083811015610f395760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610dc4565b600082611fbf57506000610d94565b6000611fcb83856130f9565b905082611fd885836130d7565b14610f395760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610dc4565b6000610f3983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c68565b603e805462ff0000191662010000179055604080516002808252606082018352600092602083019080368337505060035482519293506001600160a01b0316918391506000906120c3576120c3613145565b60200260200101906001600160a01b031690816001600160a01b03168152505030816001815181106120f7576120f7613145565b6001600160a01b039283166020918202929092010152603b5460405163b6f9de9560e01b815291169063b6f9de9590859061213d90600090869088904290600401612fb4565b6000604051808303818588803b15801561215657600080fd5b505af115801561216a573d6000803e3d6000fd5b5050603e805462ff000019169055505050505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600d909152918220546121d1918490611a87565b6001600160a01b038086166000908152600d602052604080822093909355908516815220546122009083611f51565b6001600160a01b038085166000818152600d602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906122549086815260200190565b60405180910390a35060019392505050565b801561229357601a54602055601b54602155601c54602255601d54602355601e54602455601f5460255550565b60145460205560155460215560165460225560175460235560185460245560195460255550565b6001600160a01b03831660009081526001602052604090205460ff161580156122f157506000546001600160a01b03838116911614155b801561230657506001600160a01b0382163014155b801561232057506004546001600160a01b03838116911614155b801561233a5750603c546001600160a01b03838116911614155b801561235457506008546001600160a01b03838116911614155b801561236e57506007546001600160a01b03838116911614155b801561238857506006546001600160a01b03838116911614155b15612427576001600160a01b0382166000908152600d6020526040902054600c546123b383836130bf565b11156113715760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610dc4565b505050565b603c546001600160a01b03838116911614801561244b575060395460ff165b801561247057506001600160a01b03811660009081526011602052604090205460ff16155b156118b4576001600160a01b0381166000908152603a602052604090205442116124dc5760405162461bcd60e51b815260206004820152601c60248201527f506c656173652077616974206265747765656e2074776f2062757973000000006044820152606401610dc4565b6039546124f190610100900460ff16426130bf565b6001600160a01b0382166000908152603a60205260409020555050565b6000546001600160a01b038381169116146113715780156125ba57600b548311158061255257506001600160a01b03841660009081526010602052604090205460ff165b8061257557506001600160a01b03821660009081526010602052604090205460ff165b6125b55760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610dc4565b611371565b600a54831115806125e357506001600160a01b03841660009081526010602052604090205460ff165b8061260657506001600160a01b03821660009081526010602052604090205460ff165b6113715760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610dc4565b603c546000906001600160a01b0316331480159061266d5750603e5462010000900460ff16155b80156126805750603e54610100900460ff165b801561100b575050602a54306000908152600d6020526040902054101590565b603e805462ff0000191662010000179055602b54602c546000916126c391610de5565b6126cf576020546126d2565b60005b905060006126f660026112e76025546112e786602a54611fb090919063ffffffff16565b9050600061270f82602a54611f0f90919063ffffffff16565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061274957612749613145565b6001600160a01b03928316602091820292909201015260035482519116908290600190811061277a5761277a613145565b6001600160a01b039283166020918202929092010152603b5460405163791ac94760e01b81524792919091169063791ac947906127c4908690600090879030904290600401613083565b600060405180830381600087803b1580156127de57600080fd5b505af11580156127f2573d6000803e3d6000fd5b50505050600061280b8247611f0f90919063ffffffff16565b9050600061282661281d88600261202f565b60255490611f0f565b9050600061283b60026112e78481878d611fb0565b90506000612858836112e760225487611fb090919063ffffffff16565b90506000612875846112e760235488611fb090919063ffffffff16565b90506000612892856112e760245489611fb090919063ffffffff16565b9050603760009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b1580156128e457600080fd5b505af1935050505080156128f6575060015b506008546040516000916001600160a01b03169061753090859084818181858888f193505050503d8060008114612949576040519150601f19603f3d011682016040523d82523d6000602084013e61294e565b606091505b50506006546040519192506000916001600160a01b039091169061753090859084818181858888f193505050503d80600081146129a7576040519150601f19603f3d011682016040523d82523d6000602084013e6129ac565b606091505b5050905081612a0e5760405162461bcd60e51b815260206004820152602860248201527f6d61726b6574696e672072656365697665722072656a656374656420455448206044820152673a3930b739b332b960c11b6064820152608401610dc4565b80612a665760405162461bcd60e51b815260206004820152602260248201527f6465762072656365697665722072656a656374656420455448207472616e736660448201526132b960f11b6064820152608401610dc4565b8b15612b4d57603b5460075460405163f305d71960e01b8152306004820152602481018f905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990889060c4016060604051808303818588803b158015612ad757600080fd5b505af1158015612aeb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612b109190612eff565b505060408051888152602081018f90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050603e805462ff0000191690555050505050505050505050565b6000808215612bc3578315612ba357612b9c6026546112e760026112e7600361156f6025548c611fb090919063ffffffff16565b9050612be1565b612b9c6026546112e760026112e76025548a611fb090919063ffffffff16565b612bde6026546112e760255488611fb090919063ffffffff16565b90505b306000908152600d6020526040902054612bfb9082611f51565b306000818152600d6020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612c4c9085815260200190565b60405180910390a3612c5e8582611f0f565b9695505050505050565b60008183612c895760405162461bcd60e51b8152600401610dc49190612fe9565b506000611ab884866130d7565b80358015158114612ca657600080fd5b919050565b600060208284031215612cbd57600080fd5b8135610f398161315b565b60008060408385031215612cdb57600080fd5b8235612ce68161315b565b91506020830135612cf68161315b565b809150509250929050565b600080600060608486031215612d1657600080fd5b8335612d218161315b565b92506020840135612d318161315b565b929592945050506040919091013590565b60008060408385031215612d5557600080fd5b8235612d608161315b565b9150612d6e60208401612c96565b90509250929050565b60008060408385031215612d8a57600080fd5b8235612d958161315b565b946020939093013593505050565b600060208284031215612db557600080fd5b610f3982612c96565b60008060408385031215612dd157600080fd5b612d9583612c96565b600080600080600060a08688031215612df257600080fd5b612dfb86612c96565b9450602086013593506040860135925060608601359150612e1e60808701612c96565b90509295509295909350565b60008060408385031215612e3d57600080fd5b612e4683612c96565b9150602083013560ff81168114612cf657600080fd5b600060208284031215612e6e57600080fd5b5035919050565b600060208284031215612e8757600080fd5b5051919050565b60008060408385031215612ea157600080fd5b82359150612d6e60208401612c96565b60008060408385031215612ec457600080fd5b50508035926020909101359150565b600080600060608486031215612ee857600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215612f1457600080fd5b8351925060208401519150604084015190509250925092565b60008060008060008060c08789031215612f4657600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600081518084526020808501945080840160005b83811015612fa95781516001600160a01b031687529582019590820190600101612f84565b509495945050505050565b848152608060208201526000612fcd6080830186612f70565b6001600160a01b03949094166040830152506060015292915050565b600060208083528351808285015260005b8181101561301657858101830151858201604001528201612ffa565b81811115613028576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b85815284602082015260a0604082015260006130a260a0830186612f70565b6001600160a01b0394909416606083015250608001529392505050565b600082198211156130d2576130d261312f565b500190565b6000826130f457634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156131135761311361312f565b500290565b60008282101561312a5761312a61312f565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114610de257600080fdfea264697066735822122035cc5cd6aefacdb2cc90743d5b63c9e1951975ac9e6022ed14cb956cb7a60e4064736f6c63430008070033
Deployed Bytecode Sourcemap
12303:24281:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14640:56;;;;;;;;;;;;;;;;;;;13504:25:1;;;13492:2;13477:18;14640:56:0;;;;;;;;17383:80;;;;;;;;;;-1:-1:-1;17455:5:0;;;;;;;;;;;;-1:-1:-1;;;17455:5:0;;;;17383:80;;;;;;;:::i;17805:216::-;;;;;;;;;;-1:-1:-1;17805:216:0;;;;;:::i;:::-;;:::i;:::-;;;7907:14:1;;7900:22;7882:41;;7870:2;7855:18;17805:216:0;7742:187:1;25728:113:0;;;;;;;;;;-1:-1:-1;25728:113:0;;;;;:::i;:::-;;:::i;:::-;;13863:34;;;;;;;;;;;;;;;;13996:35;;;;;;;;;;;;;;;;36309:150;;;;;;;;;;-1:-1:-1;36309:150:0;;;;;:::i;:::-;;:::i;14163:29::-;;;;;;;;;;;;;;;;14121:35;;;;;;;;;;;;;;;;17113:88;;;;;;;;;;-1:-1:-1;17186:12:0;;17113:88;;34695:183;;;;;;;;;;-1:-1:-1;34695:183:0;;;;;:::i;:::-;;:::i;31069:342::-;;;;;;;;;;-1:-1:-1;31069:342:0;;;;;:::i;:::-;;:::i;18323:368::-;;;;;;;;;;-1:-1:-1;18323:368:0;;;;;:::i;:::-;;:::i;35537:146::-;;;;;;;;;;-1:-1:-1;35537:146:0;;;;;:::i;:::-;;:::i;35906:142::-;;;;;;;;;;;;;:::i;35157:183::-;;;;;;;;;;-1:-1:-1;35157:183:0;;;;;:::i;:::-;;:::i;26192:165::-;;;;;;;;;;-1:-1:-1;26192:165:0;;;;;:::i;:::-;;:::i;13782:32::-;;;;;;;;;;;;;;;;3888:103;;;;;;;;;;-1:-1:-1;3888:103:0;;;;;:::i;:::-;3943:4;3978:5;-1:-1:-1;;;;;3967:16:0;;;3978:5;;3967:16;;3888:103;30577:445;;;;;;;;;;-1:-1:-1;30577:445:0;;;;;:::i;:::-;;:::i;17207:80::-;;;;;;;;;;-1:-1:-1;12988:2:0;17207:80;;;14552:4:1;14540:17;;;14522:36;;14510:2;14495:18;17207:80:0;14380:184:1;13118:59:0;;;;;;;;;;;;;;;;14038:33;;;;;;;;;;;;;;;;15043:38;;;;;;;;;;-1:-1:-1;15043:38:0;;;;;;;;13821:35;;;;;;;;;;;;;;;;26406:125;;;;;;;;;;-1:-1:-1;26406:125:0;;;;;:::i;:::-;;:::i;21868:207::-;;;;;;;;;;;;;:::i;26054:83::-;;;;;;;;;;;;;:::i;32791:130::-;;;;;;;;;;-1:-1:-1;32791:130:0;;;;;:::i;:::-;;:::i;14199:31::-;;;;;;;;;;;;;;;;18029:122;;;;;;;;;;-1:-1:-1;18029:122:0;;;;;:::i;:::-;;:::i;15425:38::-;;;;;;;;;;-1:-1:-1;15425:38:0;;;;;;;;32473:120;;;;;;;;;;-1:-1:-1;32473:120:0;;;;;:::i;:::-;;:::i;15722:30::-;;;;;;;;;;-1:-1:-1;15722:30:0;;;;;;;;;;;17553:105;;;;;;;;;;-1:-1:-1;17553:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;17637:18:0;17619:7;17637:18;;;:9;:18;;;;;;;17553:105;15470:39;;;;;;;;;;-1:-1:-1;15470:39:0;;;;;;;;;;;13265:63;;;;;;;;;;;;;;;;31704:158;;;;;;;;;;-1:-1:-1;31704:158:0;;;;;:::i;:::-;;:::i;29009:431::-;;;;;;;;;;-1:-1:-1;29009:431:0;;;;;:::i;:::-;;:::i;18770:156::-;;;;;;;;;;-1:-1:-1;18770:156:0;;;;;:::i;:::-;;:::i;13740:34::-;;;;;;;;;;;;;;;;17469:78;;;;;;;;;;-1:-1:-1;17521:7:0;17539:5;-1:-1:-1;;;;;17539:5:0;17469:78;;;-1:-1:-1;;;;;6304:32:1;;;6286:51;;6274:2;6259:18;17469:78:0;6140:203:1;17293:84:0;;;;;;;;;;-1:-1:-1;17367:7:0;;;;;;;;;;;;-1:-1:-1;;;17367:7:0;;;;17293:84;;35724:136;;;;;;;;;;-1:-1:-1;35724:136:0;;;;;:::i;:::-;;:::i;34212:228::-;;;;;;;;;;-1:-1:-1;34212:228:0;;;;;:::i;:::-;;:::i;15627:19::-;;;;;;;;;;-1:-1:-1;15627:19:0;;;;-1:-1:-1;;;;;15627:19:0;;;18159:156;;;;;;;;;;-1:-1:-1;18159:156:0;;;;;:::i;:::-;;:::i;14078:36::-;;;;;;;;;;;;;;;;29488:105;;;;;;;;;;;;;:::i;3546:102::-;;;;;;;;;;-1:-1:-1;3546:102:0;;;;;:::i;:::-;;:::i;33560:594::-;;;;;;;;;;-1:-1:-1;33560:594:0;;;;;:::i;:::-;;:::i;15653:25::-;;;;;;;;;;;;;;;;13904:28;;;;;;;;;;;;;;;;13191:60;;;;;;;;;;;;;;;;36090:167;;;;;;;;;;-1:-1:-1;36090:167:0;;;;;:::i;:::-;;:::i;24169:391::-;;;;;;;;;;;;;:::i;17664:133::-;;;;;;;;;;-1:-1:-1;17664:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;17766:19:0;;;17748:7;17766:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;17664:133;34478:180;;;;;;;;;;-1:-1:-1;34478:180:0;;;;;:::i;:::-;;:::i;31895:162::-;;;;;;;;;;-1:-1:-1;31895:162:0;;;;;:::i;:::-;;:::i;15088:41::-;;;;;;;;;;-1:-1:-1;15088:41:0;;;;;;;;;;;25870:145;;;;;;;;;;-1:-1:-1;25870:145:0;;;;;:::i;:::-;;:::i;3723:105::-;;;;;;;;;;-1:-1:-1;3723:105:0;;;;;:::i;:::-;;:::i;35392:90::-;;;;;;;;;;;;;:::i;23784:315::-;;;;;;;;;;-1:-1:-1;23784:315:0;;;;;:::i;:::-;;:::i;4295:189::-;;;;;;;;;;-1:-1:-1;4295:189:0;;;;;:::i;:::-;;:::i;34922:180::-;;;;;;;;;;;;;:::i;32094:347::-;;;;;;;;;;-1:-1:-1;32094:347:0;;;;;:::i;:::-;;:::i;32954:572::-;;;;;;;;;;-1:-1:-1;32954:572:0;;;;;:::i;:::-;;:::i;32628:128::-;;;;;;;;;;-1:-1:-1;32628:128:0;;;;;:::i;:::-;;:::i;15596:24::-;;;;;;;;;;-1:-1:-1;15596:24:0;;;;-1:-1:-1;;;;;15596:24:0;;;13939:30;;;;;;;;;;;;;;;;13664:46;;;;;;;;;;-1:-1:-1;13664:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4061:115;;;;;;;;;;-1:-1:-1;4061:115:0;;;;;:::i;:::-;;:::i;15685:30::-;;;;;;;;;;-1:-1:-1;15685:30:0;;;;;;;;17805:216;17909:10;17880:4;17897:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;17897:32:0;;;;;;;;;;:41;;;17954:37;17880:4;;17897:32;;17954:37;;;;17932:6;13504:25:1;;13492:2;13477:18;;13358:177;17954:37:0;;;;;;;;-1:-1:-1;18009:4:0;17805:216;;;;;:::o;25728:113::-;3943:4;3978:5;-1:-1:-1;;;;;3978:5:0;3270:10;3967:16;3254:38;;;;-1:-1:-1;;;3254:38:0;;;;;;;:::i;:::-;;;;;;;;;25793:11:::1;:21:::0;;-1:-1:-1;;25793:21:0::1;::::0;::::1;;;::::0;;31652:12;31639:10;:25;25728:113;:::o;25825:8::-:1;25728:113:::0;:::o;36309:150::-;36389:4;36445:6;36413:29;36433:8;36413:19;:29::i;:::-;:38;;36309:150;-1:-1:-1;;;36309:150:0:o;34695:183::-;3431:24;3444:10;3431:12;:24::i;:::-;3423:48;;;;-1:-1:-1;;;3423:48:0;;;;;;;:::i;:::-;34793:15:::1;:25:::0;;;;34829:26:::1;:41:::0;34695:183::o;31069:342::-;3431:24;3444:10;3431:12;:24::i;:::-;3423:48;;;;-1:-1:-1;;;3423:48:0;;;;;;;:::i;:::-;31229:1:::1;31202:23;31214:11:::0;31202:9;:23:::1;:::i;:::-;:28;;:55;;;;;31246:11;31234:9;:23;31202:55;31194:64;;;::::0;::::1;;31269:26;:38:::0;;;;31318:28:::1;:42:::0;31371:23:::1;:32:::0;31069:342::o;18323:368::-;-1:-1:-1;;;;;18443:19:0;;18423:4;18443:19;;;:11;:19;;;;;;;;18463:10;18443:31;;;;;;;;-1:-1:-1;;18443:52:0;18440:186;;18545:69;;;;;;;;;;;-1:-1:-1;;;18545:69:0;;;;;;;;-1:-1:-1;;;;;18545:19:0;;-1:-1:-1;18545:19:0;;;:11;:19;;;;;18565:10;18545:31;;;;;;;;;;:69;;18581:6;;18545:35;:69::i;:::-;-1:-1:-1;;;;;18511:19:0;;;;;;:11;:19;;;;;;;;18531:10;18511:31;;;;;;;:103;18440:186;18643:40;18657:6;18665:9;18676:6;18643:13;:40::i;:::-;18636:47;;18323:368;;;;;;:::o;35537:146::-;35633:11;;:42;;-1:-1:-1;;;35633:42:0;;-1:-1:-1;;;;;6304:32:1;;;35633:42:0;;;6286:51:1;35606:7:0;;35633:11;;:29;;6259:18:1;;35633:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;35906:142::-;36034:4;;-1:-1:-1;;;;;36034:4:0;35959:7;17637:18;;;:9;:18;;;;;;35986:54;;36013:4;;-1:-1:-1;;;;;36013:4:0;17619:7;17637:18;;;:9;:18;;;;;;35986:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;35979:61;;35906:142;:::o;35157:183::-;3431:24;3444:10;3431:12;:24::i;:::-;3423:48;;;;-1:-1:-1;;;3423:48:0;;;;;;;:::i;:::-;35267:11:::1;::::0;:65:::1;::::0;-1:-1:-1;;;35267:65:0;;::::1;::::0;::::1;14301:25:1::0;;;14342:18;;;14335:34;;;-1:-1:-1;;;;;35267:11:0;;::::1;::::0;:35:::1;::::0;14274:18:1;;35267:65:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;35157:183:::0;;:::o;26192:165::-;3431:24;3444:10;3431:12;:24::i;:::-;3423:48;;;;-1:-1:-1;;;3423:48:0;;;;;;;:::i;:::-;26277:18:::1;:28:::0;;-1:-1:-1;;26316:33:0;26277:28;::::1;;-1:-1:-1::0;;26316:33:0;;;;;26277:28:::1;;26316:33:::0;;;::::1;::::0;;;::::1;;::::0;;26192:165::o;30577:445::-;3431:24;3444:10;3431:12;:24::i;:::-;3423:48;;;;-1:-1:-1;;;3423:48:0;;;;;;;:::i;:::-;30732:18:::1;:29:::0;;30772:14:::1;:21:::0;;;;-1:-1:-1;30804:22:0::1;:26:::0;30841:17:::1;:27:::0;;;;30879:22:::1;:32:::0;;;;30945:12:::1;30922:20;:35:::0;-1:-1:-1;;30968:46:0;;;30732:29;::::1;;-1:-1:-1::0;;30968:46:0;;;;;30732:29:::1;30968:46:::0;::::1;;::::0;;;::::1;;::::0;;30577:445::o;26406:125::-;3431:24;3444:10;3431:12;:24::i;:::-;3423:48;;;;-1:-1:-1;;;3423:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26491:23:0;;;::::1;;::::0;;;:13:::1;:23;::::0;;;;:32;;-1:-1:-1;;26491:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26406:125::o;21868:207::-;21912:4;21969:15;21931:35;21952:13;;21931:16;;:20;;:35;;;;:::i;:::-;:53;21928:140;;;-1:-1:-1;22007:4:0;;21868:207::o;21928:140::-;-1:-1:-1;22051:5:0;;21868:207::o;26054:83::-;3431:24;3444:10;3431:12;:24::i;:::-;3423:48;;;;-1:-1:-1;;;3423:48:0;;;;;;;:::i;:::-;26128:1:::1;26109:16;:20:::0;26054:83::o;32791:130::-;3431:24;3444:10;3431:12;:24::i;:::-;3423:48;;;;-1:-1:-1;;;3423:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;32880:24:0;;;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;32880:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;32791:130::o;18029:122::-;18084:4;18108:35;18116:7;-1:-1:-1;;18108:7:0;:35::i;32473:120::-;3431:24;3444:10;3431:12;:24::i;:::-;3423:48;;;;-1:-1:-1;;;3423:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;32557:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;32557:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;32473:120::o;31704:158::-;3431:24;3444:10;3431:12;:24::i;:::-;3423:48;;;;-1:-1:-1;;;3423:48:0;;;;;;;:::i;:::-;31810:44:::1;31848:5;31810:33;31827:15;31810:12;;:16;;:33;;;;:::i;:::-;:37:::0;::::1;:44::i;:::-;31792:15;:62:::0;-1:-1:-1;31704:158:0:o;29009:431::-;29106:26;29135:19;:6;29145:8;29135:19;:::i;:::-;29106:48;-1:-1:-1;29165:19:0;29187:27;29106:48;29210:3;29187:22;:27::i;:::-;29248:4;;29165:49;;-1:-1:-1;29225:28:0;;29165:49;;-1:-1:-1;;;;;29248:4:0;29225:9;:28::i;:::-;29267:24;29264:169;;;29338:15;29307:28;:46;29397:23;;29373:48;;13504:25:1;;;29373:48:0;;13492:2:1;13477:18;29373:48:0;;;;;;;29264:169;29095:345;;29009:431;;:::o;18770:156::-;3943:4;3978:5;-1:-1:-1;;;;;3978:5:0;3270:10;3967:16;3254:38;;;;-1:-1:-1;;;3254:38:0;;;;;;;:::i;:::-;18873:43:::1;18910:5;18873:32;18890:14;18873:12;;:16;;:32;;;;:::i;:43::-;18855:15;:61:::0;-1:-1:-1;18770:156:0:o;35724:136::-;3431:24;3444:10;3431:12;:24::i;:::-;3423:48;;;;-1:-1:-1;;;3423:48:0;;;;;;;:::i;:::-;35814:6:::1;35808:3;:12;35800:21;;;::::0;::::1;;35832:14;:20:::0;35724:136::o;34212:228::-;3431:24;3444:10;3431:12;:24::i;:::-;3423:48;;;;-1:-1:-1;;;3423:48:0;;;;;;;:::i;:::-;34331:21:::1;:46:::0;;-1:-1:-1;;;;;34331:46:0;;::::1;-1:-1:-1::0;;;;;;34331:46:0;;::::1;;::::0;;;34388:20:::1;:44:::0;;;;;::::1;::::0;::::1;;::::0;;34212:228::o;18159:156::-;18239:4;18263:44;18277:10;18289:9;18300:6;18263:13;:44::i;29488:105::-;3431:24;3444:10;3431:12;:24::i;:::-;3423:48;;;;-1:-1:-1;;;3423:48:0;;;;;;;:::i;:::-;29584:1:::1;29553:28;:32:::0;29488:105::o;3546:102::-;3943:4;3978:5;-1:-1:-1;;;;;3978:5:0;3270:10;3967:16;3254:38;;;;-1:-1:-1;;;3254:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3610:23:0::1;;::::0;;;3636:4:::1;3610:23;::::0;;;;;;;:30;;-1:-1:-1;;3610:30:0::1;::::0;;::::1;::::0;;3546:102::o;33560:594::-;3431:24;3444:10;3431:12;:24::i;:::-;3423:48;;;;-1:-1:-1;;;3423:48:0;;;;;;;:::i;:::-;33765:16:::1;:36:::0;;;33812:14:::1;:32:::0;;;33855:17:::1;:38:::0;;;33904:16:::1;:36:::0;;;33951:10:::1;:24:::0;;;34001:102:::1;33964:11:::0;34001:85:::1;33923:17:::0;34001:85;33875:18;34001:85;33784:17;33829:15;34001:21:::1;:38::i;:::-;:42:::0;::::1;:62::i;:102::-;33986:12;:117:::0;34114:14:::1;:32:::0;-1:-1:-1;;;;;33560:594:0:o;36090:167::-;36158:7;36185:64;36226:22;:20;:22::i;:::-;36208:4;;-1:-1:-1;;;;;36208:4:0;17619:7;17637:18;;;:9;:18;;;;;;36185:36;;36198:22;;36218:1;;36198:15;:19;;:22::i;:::-;36185:8;;:12;:36::i;24169:391::-;24218:7;24238:21;24262:78;24324:15;24262:57;24295:23;;24262:28;;:32;;:57;;;;:::i;:78::-;24238:102;;24351:19;24373:88;24452:8;;24373:74;24418:28;;24373:40;24386:26;;24373:8;;:12;;:40;;;;:::i;:88::-;24351:110;;24479:73;24492:59;24527:23;;24492:30;24508:13;24492:11;:15;;:30;;;;:::i;:59::-;24479:8;;;:12;:73::i;:::-;24472:80;;;;24169:391;:::o;34478:180::-;3431:24;3444:10;3431:12;:24::i;:::-;3423:48;;;;-1:-1:-1;;;3423:48:0;;;;;;;:::i;:::-;34570:11:::1;:22:::0;;-1:-1:-1;;34570:22:0::1;;::::0;::::1;;;;::::0;;34619:12:::1;::::0;34644:5:::1;::::0;34619:22:::1;::::0;34634:7;;34619:22:::1;:::i;:::-;:30;;;;:::i;:::-;34603:13;:46:::0;-1:-1:-1;;34478:180:0:o;31895:162::-;3431:24;3444:10;3431:12;:24::i;:::-;3423:48;;;;-1:-1:-1;;;3423:48:0;;;;;;;:::i;:::-;32004:45:::1;32043:5;32004:34;32021:16;32004:12;;:16;;:34;;;;:::i;:45::-;31985:16;:64:::0;-1:-1:-1;31895:162:0:o;25870:145::-;3431:24;3444:10;3431:12;:24::i;:::-;3423:48;;;;-1:-1:-1;;;3423:48:0;;;;;;;:::i;:::-;25957:15:::1;25938:16;:34:::0;25983:13:::1;:24:::0;25870:145::o;3723:105::-;3943:4;3978:5;-1:-1:-1;;;;;3978:5:0;3270:10;3967:16;3254:38;;;;-1:-1:-1;;;3254:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3789:23:0::1;3815:5;3789:23:::0;;;:14:::1;:23;::::0;;;;:31;;-1:-1:-1;;3789:31:0::1;::::0;;3723:105::o;35392:90::-;35437:11;;:37;;-1:-1:-1;;;35437:37:0;;35463:10;35437:37;;;6286:51:1;-1:-1:-1;;;;;35437:11:0;;;;:25;;6259:18:1;;35437:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23784:315;23840:7;23890:12;23876:10;;23863;;:23;;;;:::i;:::-;:39;23860:76;;23912:14;;:21;;23931:1;23912:18;:21::i;23860:76::-;23949:7;:86;;;;;24020:15;23960:57;23993:23;;23960:28;;:32;;:57;;;;:::i;:::-;:75;23949:86;23946:120;;;24045:18;:16;:18::i;23946:120::-;-1:-1:-1;;24083:8:0;;;23784:315::o;4295:189::-;3943:4;3978:5;-1:-1:-1;;;;;3978:5:0;3270:10;3967:16;3254:38;;;;-1:-1:-1;;;3254:38:0;;;;;;;:::i;:::-;4375:5:::1;:15:::0;;-1:-1:-1;;;;;;4375:15:0::1;-1:-1:-1::0;;;;;4375:15:0;::::1;::::0;;::::1;::::0;;4401:23;;;-1:-1:-1;4401:23:0::1;::::0;;;;;;;;:30;;-1:-1:-1;;4401:30:0::1;::::0;;::::1;::::0;;;4447:29;;6286:51:1;;;4447:29:0::1;::::0;6259:18:1;4447:29:0::1;;;;;;;4295:189:::0;:::o;34922:180::-;3431:24;3444:10;3431:12;:24::i;:::-;3423:48;;;;-1:-1:-1;;;3423:48:0;;;;;;;:::i;:::-;35044:20:::1;::::0;35036:58:::1;::::0;35004:21:::1;::::0;-1:-1:-1;;;;;35044:20:0::1;::::0;35036:58;::::1;;;::::0;35004:21;;34975:26:::1;35036:58:::0;34975:26;35036:58;35004:21;35044:20;35036:58;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;34964:138;34922:180::o:0;32094:347::-;3431:24;3444:10;3431:12;:24::i;:::-;3423:48;;;;-1:-1:-1;;;3423:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;32191:23:0;::::1;32209:4;32191:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;32228:4:0::1;::::0;-1:-1:-1;;;;;32218:14:0;;::::1;32228:4:::0;::::1;32218:14;;32191:41;32183:50;;;::::0;::::1;;-1:-1:-1::0;;;;;32244:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;32244:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;32288:146:::1;;32313:11;::::0;:31:::1;::::0;-1:-1:-1;;;32313:31:0;;-1:-1:-1;;;;;6764:32:1;;;32313:31:0::1;::::0;::::1;6746:51:1::0;32313:11:0::1;6813:18:1::0;;;6806:34;32313:11:0;;::::1;::::0;:20:::1;::::0;6719:18:1;;32313:31:0::1;6564:282:1::0;32288:146:0::1;32375:11;::::0;-1:-1:-1;;;;;32404:17:0;;::::1;32375:11;32404:17:::0;;;:9:::1;:17;::::0;;;;;;;32375:47;;-1:-1:-1;;;32375:47:0;;::::1;::::0;::::1;6746:51:1::0;;;;6813:18;;;6806:34;32375:11:0;::::1;::::0;:20:::1;::::0;6719:18:1;;32375:47:0::1;6564:282:1::0;32954:572:0;3431:24;3444:10;3431:12;:24::i;:::-;3423:48;;;;-1:-1:-1;;;3423:48:0;;;;;;;:::i;:::-;33153:15:::1;:34:::0;;;33198:13:::1;:30:::0;;;33239:16:::1;:36:::0;;;33286:15:::1;:34:::0;;;33331:9:::1;:22:::0;;;33378:97:::1;33343:10:::0;33378:81:::1;33304:16:::0;33378:81;33258:17;33378:81;33171:16;33214:14;33378:20:::1;:36::i;:97::-;33364:11;:111:::0;33486:14:::1;:32:::0;-1:-1:-1;;;;;32954:572:0:o;32628:128::-;3431:24;3444:10;3431:12;:24::i;:::-;3423:48;;;;-1:-1:-1;;;3423:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;32716:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;32716:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;32628:128::o;4061:115::-;-1:-1:-1;;;;;4145:23:0;4121:4;4145:23;;;:14;:23;;;;;;;;;4061:115::o;948:192::-;1034:7;1070:12;1062:6;;;;1054:29;;;;-1:-1:-1;;;1054:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1094:9:0;1106:5;1110:1;1106;:5;:::i;:::-;1094:17;948:192;-1:-1:-1;;;;;948:192:0:o;18965:1825::-;19077:6;;19057:4;;19077:6;;;;;19074:63;;;19093:41;19108:6;19116:9;19127:6;19093:14;:41::i;:::-;19086:48;;;;19074:63;-1:-1:-1;;;;;19193:22:0;;;;;;:14;:22;;;;;;;;19192:23;:53;;;;-1:-1:-1;;;;;;19220:25:0;;;;;;:14;:25;;;;;;;;19219:26;19192:53;19189:130;;;19269:11;;;;19261:46;;;;-1:-1:-1;;;19261:46:0;;12517:2:1;19261:46:0;;;12499:21:1;12556:2;12536:18;;;12529:30;12595:25;12575:18;;;12568:53;12638:18;;19261:46:0;12315:347:1;19261:46:0;-1:-1:-1;;;;;19384:24:0;;;;;;:13;:24;;;;;;;;19383:25;:51;;;;-1:-1:-1;;;;;;19413:21:0;;;;;;:13;:21;;;;;;;;19412:22;19383:51;19375:86;;;;-1:-1:-1;;;19375:86:0;;12869:2:1;19375:86:0;;;12851:21:1;12908:2;12888:18;;;12881:30;-1:-1:-1;;;12927:18:1;;;12920:52;12989:18;;19375:86:0;12667:346:1;19375:86:0;19540:4;;-1:-1:-1;;;;;19527:17:0;;;19540:4;;19527:17;19591:22;19527:17;19591:14;:22::i;:::-;19655:41;19670:6;19678:9;19689:6;19655:14;:41::i;:::-;19737:35;19754:6;19762:9;19737:16;:35::i;:::-;19810:47;19823:6;19831;19839:9;19850:6;19810:12;:47::i;:::-;19911:14;19928:13;:11;:13::i;:::-;19911:30;;20004:16;:14;:16::i;:::-;20001:35;;;20023:10;:8;:10::i;:::-;20095:53;;;;;;;;;;;-1:-1:-1;;;20095:53:0;;;;;;;;-1:-1:-1;;;;;20095:17:0;;-1:-1:-1;20095:17:0;;;:9;:17;;;;;;;;:53;;20117:6;;20095:21;:53::i;:::-;-1:-1:-1;;;;;20075:17:0;;;;;;:9;:17;;;;;;;;:73;;;;23699:11;:19;;;;;;;;23698:20;20186:75;;20255:6;20186:75;;;20210:42;20218:6;20226;20234;20242:9;20210:7;:42::i;:::-;-1:-1:-1;;;;;20295:20:0;;;;;;:9;:20;;;;;;20161:100;;-1:-1:-1;20295:40:0;;20161:100;20295:24;:40::i;:::-;-1:-1:-1;;;;;20272:20:0;;;;;;;:9;:20;;;;;;;;:63;;;;20381:24;;;;;:16;:24;;;;;;;20377:119;;20426:11;;-1:-1:-1;;;;;20455:17:0;;;20426:11;20455:17;;;:9;:17;;;;;;;;20426:47;;-1:-1:-1;;;20426:47:0;;;;;6746:51:1;;;;6813:18;;;6806:34;20426:11:0;;;:20;;6719:18:1;;20426:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20422:63;;-1:-1:-1;;;;;20512:27:0;;;;;;:16;:27;;;;;;;;20508:129;;20560:11;;-1:-1:-1;;;;;20592:20:0;;;20560:11;20592:20;;;:9;:20;;;;;;;;20560:53;;-1:-1:-1;;;20560:53:0;;;;;6746:51:1;;;;6813:18;;;6806:34;20560:11:0;;;:20;;6719:18:1;;20560:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20556:69;;20653:11;;20673:14;;20653:35;;-1:-1:-1;;;;;;20653:35:0;;-1:-1:-1;;;;;20653:11:0;;;;:19;;:35;;;;13504:25:1;;;13492:2;13477:18;;13358:177;20653:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20649:51;20734:9;-1:-1:-1;;;;;20717:43:0;20726:6;-1:-1:-1;;;;;20717:43:0;;20745:14;20717:43;;;;13504:25:1;;13492:2;13477:18;;13358:177;20717:43:0;;;;;;;;-1:-1:-1;20778:4:0;;18965:1825;-1:-1:-1;;;;;;18965:1825:0:o;806:136::-;864:7;891:43;895:1;898;891:43;;;;;;;;;;;;;;;;;:3;:43::i;619:181::-;677:7;;709:5;713:1;709;:5;:::i;:::-;697:17;;738:1;733;:6;;725:46;;;;-1:-1:-1;;;725:46:0;;9825:2:1;725:46:0;;;9807:21:1;9864:2;9844:18;;;9837:30;9903:29;9883:18;;;9876:57;9950:18;;725:46:0;9623:351:1;1146:250:0;1204:7;1228:6;1224:47;;-1:-1:-1;1258:1:0;1251:8;;1224:47;1283:9;1295:5;1299:1;1295;:5;:::i;:::-;1283:17;-1:-1:-1;1328:1:0;1319:5;1323:1;1283:17;1319:5;:::i;:::-;:10;1311:56;;;;-1:-1:-1;;;1311:56:0;;10947:2:1;1311:56:0;;;10929:21:1;10986:2;10966:18;;;10959:30;11025:34;11005:18;;;10998:62;-1:-1:-1;;;11076:18:1;;;11069:31;11117:19;;1311:56:0;10745:397:1;1402:132:0;1460:7;1487:39;1491:1;1494;1487:39;;;;;;;;;;;;;;;;;:3;:39::i;30175:361::-;15799:6;:13;;-1:-1:-1;;15799:13:0;;;;;30275:16:::1;::::0;;15799:6;30275:16;;;;;::::1;::::0;;-1:-1:-1;;30275:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;30312:4:0::1;::::0;30302:7;;;;-1:-1:-1;;;;;;30312:4:0::1;::::0;30302:7;;-1:-1:-1;30312:4:0::1;::::0;30302:7:::1;;;;:::i;:::-;;;;;;:14;-1:-1:-1::0;;;;;30302:14:0::1;;;-1:-1:-1::0;;;;;30302:14:0::1;;;::::0;::::1;30345:4;30327;30332:1;30327:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;30327:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;30363:6:::1;::::0;:165:::1;::::0;-1:-1:-1;;;30363:165:0;;:6;::::1;::::0;:57:::1;::::0;30428:6;;30363:165:::1;::::0;:6:::1;::::0;30466:4;;30485:2;;30502:15:::1;::::0;30363:165:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;15817:6:0;:14;;-1:-1:-1;;15817:14:0;;;-1:-1:-1;;;;;;30175:361:0:o;20827:330::-;20957:53;;;;;;;;;;;-1:-1:-1;;;20957:53:0;;;;;;;;-1:-1:-1;;;;;20957:17:0;;20920:4;20957:17;;;:9;:17;;;;;;;:53;;20979:6;;20957:21;:53::i;:::-;-1:-1:-1;;;;;20937:17:0;;;;;;;:9;:17;;;;;;:73;;;;21044:20;;;;;;;:32;;21069:6;21044:24;:32::i;:::-;-1:-1:-1;;;;;21021:20:0;;;;;;;:9;:20;;;;;;;:55;;;;21092:35;;;;;;;;;;21120:6;13504:25:1;;13492:2;13477:18;;13358:177;21092:35:0;;;;;;;;-1:-1:-1;21145:4:0;20827:330;;;;;:::o;21216:606::-;21276:6;21273:542;;;21313:16;;21298:12;:31;21357:14;;21344:10;:27;21402:17;;21386:13;:33;21449:16;;21434:12;:31;21489:10;;21480:6;:19;21525:12;;21514:8;:23;25728:113;:::o;21273:542::-;21585:15;;21570:12;:30;21628:13;;21615:10;:26;21672:16;;21656:13;:32;21718:15;;21703:12;:30;21757:9;;21748:6;:18;21792:11;;21781:8;:22;21216:606;:::o;23032:531::-;-1:-1:-1;;;;;23137:22:0;;;;;;:14;:22;;;;;;;;23136:23;:45;;;;-1:-1:-1;23176:5:0;;-1:-1:-1;;;;;23163:18:0;;;23176:5;;23163:18;;23136:45;:75;;;;-1:-1:-1;;;;;;23185:26:0;;23206:4;23185:26;;23136:75;:106;;;;-1:-1:-1;23237:4:0;;-1:-1:-1;;;;;23216:26:0;;;23237:4;;23216:26;;23136:106;:127;;;;-1:-1:-1;23259:4:0;;-1:-1:-1;;;;;23246:17:0;;;23259:4;;23246:17;;23136:127;:164;;;;-1:-1:-1;23280:20:0;;-1:-1:-1;;;;;23267:33:0;;;23280:20;;23267:33;;23136:164;:202;;;;-1:-1:-1;23317:21:0;;-1:-1:-1;;;;;23304:34:0;;;23317:21;;23304:34;;23136:202;:222;;;;-1:-1:-1;23355:3:0;;-1:-1:-1;;;;;23342:16:0;;;23355:3;;23342:16;;23136:222;23132:424;;;-1:-1:-1;;;;;17637:18:0;;23374;17637;;;:9;:18;;;;;;23463:15;;23439:19;23452:6;17637:18;23439:19;:::i;:::-;23438:40;;23430:114;;;;-1:-1:-1;;;23430:114:0;;11752:2:1;23430:114:0;;;11734:21:1;11791:2;11771:18;;;11764:30;11830:34;11810:18;;;11803:62;11901:32;11881:18;;;11874:60;11951:19;;23430:114:0;11550:426:1;23132:424:0;23032:531;;;:::o;22622:378::-;22717:4;;-1:-1:-1;;;;;22707:14:0;;;22717:4;;22707:14;:49;;;;-1:-1:-1;22738:18:0;;;;22707:49;:94;;;;-1:-1:-1;;;;;;22774:27:0;;;;;;:16;:27;;;;;;;;22773:28;22707:94;22703:290;;;-1:-1:-1;;;;;22826:24:0;;;;;;:13;:24;;;;;;22853:15;-1:-1:-1;22818:82:0;;;;-1:-1:-1;;;22818:82:0;;10590:2:1;22818:82:0;;;10572:21:1;10629:2;10609:18;;;10602:30;10668;10648:18;;;10641:58;10716:18;;22818:82:0;10388:352:1;22818:82:0;22960:21;;22942:39;;22960:21;;;;;22942:15;:39;:::i;:::-;-1:-1:-1;;;;;22915:24:0;;;;;;:13;:24;;;;;:66;22622:378;;:::o;22109:478::-;22237:5;;-1:-1:-1;;;;;22224:18:0;;;22237:5;;22224:18;22220:360;;22261:6;22258:311;;;22305:16;;22295:6;:26;;:53;;;-1:-1:-1;;;;;;22325:23:0;;;;;;:15;:23;;;;;;;;22295:53;:83;;;-1:-1:-1;;;;;;22352:26:0;;;;;;:15;:26;;;;;;;;22295:83;22287:113;;;;-1:-1:-1;;;22287:113:0;;9479:2:1;22287:113:0;;;9461:21:1;9518:2;9498:18;;;9491:30;-1:-1:-1;;;9537:18:1;;;9530:47;9594:18;;22287:113:0;9277:341:1;22287:113:0;22258:311;;;22459:15;;22449:6;:25;;:52;;;-1:-1:-1;;;;;;22478:23:0;;;;;;:15;:23;;;;;;;;22449:52;:82;;;-1:-1:-1;;;;;;22505:26:0;;;;;;:15;:26;;;;;;;;22449:82;22441:112;;;;-1:-1:-1;;;22441:112:0;;9479:2:1;22441:112:0;;;9461:21:1;9518:2;9498:18;;;9491:30;-1:-1:-1;;;9537:18:1;;;9530:47;9594:18;;22441:112:0;9277:341:1;25500:197:0;25587:4;;25549;;-1:-1:-1;;;;;25587:4:0;25573:10;:18;;;;:38;;-1:-1:-1;25605:6:0;;;;;;;25604:7;25573:38;:62;;;;-1:-1:-1;25624:11:0;;;;;;;25573:62;:116;;;;-1:-1:-1;;25676:13:0;;25666:4;25648:24;;;;:9;:24;;;;;;:41;;;25500:197::o;26585:2037::-;15799:6;:13;;-1:-1:-1;;15799:13:0;;;;;26680:15:::1;::::0;26697:26:::1;::::0;15799:13;;26664:60:::1;::::0;:15:::1;:60::i;:::-;:79;;26731:12;;26664:79;;;26727:1;26664:79;26634:109;;26754:23;26780:59;26837:1;26780:52;26823:8;;26780:38;26798:19;26780:13;;:17;;:38;;;;:::i;:59::-;26754:85;;26850:20;26873:34;26891:15;26873:13;;:17;;:34;;;;:::i;:::-;26944:16;::::0;;26958:1:::1;26944:16:::0;;;;;::::1;::::0;;26850:57;;-1:-1:-1;26920:21:0::1;::::0;26944:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;26944:16:0::1;26920:40;;26989:4;26971;26976:1;26971:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;26971:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;27015:4:::1;::::0;27005:7;;27015:4;::::1;::::0;27005;;27015;;27005:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;27005:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;27090:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;27090:188:0;;27056:21:::1;::::0;27090:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;27162:12;;27032:21:::1;::::0;27205:4;;27232::::1;::::0;27252:15:::1;::::0;27090:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;27289:17;27309:40;27335:13;27309:21;:25;;:40;;;;:::i;:::-;27289:60:::0;-1:-1:-1;27360:19:0::1;27382:40;27395:26;:19:::0;27419:1:::1;27395:23;:26::i;:::-;27382:8;::::0;;:12:::1;:40::i;:::-;27360:62:::0;-1:-1:-1;27433:26:0::1;27462:58;27518:1;27462:51;27360:62:::0;27462:51;:9;27476:19;27462:13:::1;:34::i;:58::-;27433:87;;27531:27;27561:45;27594:11;27561:28;27575:13;;27561:9;:13;;:28;;;;:::i;:45::-;27531:75;;27617:26;27646:44;27678:11;27646:27;27660:12;;27646:9;:13;;:27;;;;:::i;:44::-;27617:73;;27701:20;27724:38;27750:11;27724:21;27738:6;;27724:9;:13;;:21;;;;:::i;:38::-;27701:61;;27782:11;;;;;;;;;-1:-1:-1::0;;;;;27782:11:0::1;-1:-1:-1::0;;;;;27782:19:0::1;;27809;27782:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;27912:20:0::1;::::0;27904:77:::1;::::0;27854:21:::1;::::0;-1:-1:-1;;;;;27912:20:0::1;::::0;27971:5:::1;::::0;27946:18;;27854:21;27904:77;27854:21;27904:77;27946:18;27912:20;27971:5;27904:77:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;28045:3:0::1;::::0;28037:54:::1;::::0;27853:128;;-1:-1:-1;27993:15:0::1;::::0;-1:-1:-1;;;;;28045:3:0;;::::1;::::0;28081:5:::1;::::0;28062:12;;27993:15;28037:54;27993:15;28037:54;28062:12;28045:3;28081:5;28037:54:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27992:99;;;28111:16;28103:69;;;::::0;-1:-1:-1;;;28103:69:0;;10181:2:1;28103:69:0::1;::::0;::::1;10163:21:1::0;10220:2;10200:18;;;10193:30;10259:34;10239:18;;;10232:62;-1:-1:-1;;;10310:18:1;;;10303:38;10358:19;;28103:69:0::1;9979:404:1::0;28103:69:0::1;28191:10;28183:57;;;::::0;-1:-1:-1;;;28183:57:0;;11349:2:1;28183:57:0::1;::::0;::::1;11331:21:1::0;11388:2;11368:18;;;11361:30;11427:34;11407:18;;;11400:62;-1:-1:-1;;;11478:18:1;;;11471:32;11520:19;;28183:57:0::1;11147:398:1::0;28183:57:0::1;28256:19:::0;;28253:362:::1;;28291:6;::::0;28465:21:::1;::::0;28291:244:::1;::::0;-1:-1:-1;;;28291:244:0;;28367:4:::1;28291:244;::::0;::::1;7471:34:1::0;7521:18;;;7514:34;;;28291:6:0::1;7564:18:1::0;;;7557:34;;;7607:18;;;7600:34;-1:-1:-1;;;;;28465:21:0;;::::1;7650:19:1::0;;;7643:44;28505:15:0::1;7703:19:1::0;;;7696:35;28291:6:0;::::1;::::0;:22:::1;::::0;28321:18;;7405:19:1;;28291:244:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;28555:48:0::1;::::0;;14301:25:1;;;14357:2;14342:18;;14335:34;;;28555:48:0::1;::::0;-1:-1:-1;14274:18:1;28555:48:0::1;;;;;;;28253:362;-1:-1:-1::0;;15817:6:0;:14;;-1:-1:-1;;15817:14:0;;;-1:-1:-1;;;;;;;;;;;26585:2037:0:o;24619:834::-;24715:7;24735:17;24812:9;24808:460;;;24840:6;24837:335;;;24943:54;24982:14;;24943:34;24975:1;24943:27;24968:1;24943:20;24954:8;;24943:6;:10;;:20;;;;:::i;:54::-;24931:66;;24808:460;;24837:335;25109:47;25141:14;;25109:27;25134:1;25109:20;25120:8;;25109:6;:10;;:20;;;;:::i;24808:460::-;25216:40;25241:14;;25216:20;25227:8;;25216:6;:10;;:20;;;;:::i;:40::-;25204:52;;24808:460;25325:4;25307:24;;;;:9;:24;;;;;;:39;;25336:9;25307:28;:39::i;:::-;25298:4;25280:24;;;;:9;:24;;;;;;;:66;;;;25362:42;;-1:-1:-1;;;;;25362:42:0;;;;;;;25394:9;13504:25:1;;13492:2;13477:18;;13358:177;25362:42:0;;;;;;;;25424:21;:6;25435:9;25424:10;:21::i;:::-;25417:28;24619:834;-1:-1:-1;;;;;;24619:834:0:o;1540:345::-;1626:7;1728:12;1721:5;1713:28;;;;-1:-1:-1;;;1713:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1752:9:0;1764:5;1768:1;1764;:5;:::i;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:60;;164:1;161;154:12;108:60;14:160;;;:::o;179:247::-;238:6;291:2;279:9;270:7;266:23;262:32;259:52;;;307:1;304;297:12;259:52;346:9;333:23;365:31;390:5;365:31;:::i;691:388::-;759:6;767;820:2;808:9;799:7;795:23;791:32;788:52;;;836:1;833;826:12;788:52;875:9;862:23;894:31;919:5;894:31;:::i;:::-;944:5;-1:-1:-1;1001:2:1;986:18;;973:32;1014:33;973:32;1014:33;:::i;:::-;1066:7;1056:17;;;691:388;;;;;:::o;1084:456::-;1161:6;1169;1177;1230:2;1218:9;1209:7;1205:23;1201:32;1198:52;;;1246:1;1243;1236:12;1198:52;1285:9;1272:23;1304:31;1329:5;1304:31;:::i;:::-;1354:5;-1:-1:-1;1411:2:1;1396:18;;1383:32;1424:33;1383:32;1424:33;:::i;:::-;1084:456;;1476:7;;-1:-1:-1;;;1530:2:1;1515:18;;;;1502:32;;1084:456::o;1545:315::-;1610:6;1618;1671:2;1659:9;1650:7;1646:23;1642:32;1639:52;;;1687:1;1684;1677:12;1639:52;1726:9;1713:23;1745:31;1770:5;1745:31;:::i;:::-;1795:5;-1:-1:-1;1819:35:1;1850:2;1835:18;;1819:35;:::i;:::-;1809:45;;1545:315;;;;;:::o;1865:::-;1933:6;1941;1994:2;1982:9;1973:7;1969:23;1965:32;1962:52;;;2010:1;2007;2000:12;1962:52;2049:9;2036:23;2068:31;2093:5;2068:31;:::i;:::-;2118:5;2170:2;2155:18;;;;2142:32;;-1:-1:-1;;;1865:315:1:o;2185:180::-;2241:6;2294:2;2282:9;2273:7;2269:23;2265:32;2262:52;;;2310:1;2307;2300:12;2262:52;2333:26;2349:9;2333:26;:::i;2370:248::-;2435:6;2443;2496:2;2484:9;2475:7;2471:23;2467:32;2464:52;;;2512:1;2509;2502:12;2464:52;2535:26;2551:9;2535:26;:::i;2623:454::-;2712:6;2720;2728;2736;2744;2797:3;2785:9;2776:7;2772:23;2768:33;2765:53;;;2814:1;2811;2804:12;2765:53;2837:26;2853:9;2837:26;:::i;:::-;2827:36;;2910:2;2899:9;2895:18;2882:32;2872:42;;2961:2;2950:9;2946:18;2933:32;2923:42;;3012:2;3001:9;2997:18;2984:32;2974:42;;3035:36;3066:3;3055:9;3051:19;3035:36;:::i;:::-;3025:46;;2623:454;;;;;;;;:::o;3082:337::-;3145:6;3153;3206:2;3194:9;3185:7;3181:23;3177:32;3174:52;;;3222:1;3219;3212:12;3174:52;3245:26;3261:9;3245:26;:::i;:::-;3235:36;;3321:2;3310:9;3306:18;3293:32;3365:4;3358:5;3354:16;3347:5;3344:27;3334:55;;3385:1;3382;3375:12;3424:180;3483:6;3536:2;3524:9;3515:7;3511:23;3507:32;3504:52;;;3552:1;3549;3542:12;3504:52;-1:-1:-1;3575:23:1;;3424:180;-1:-1:-1;3424:180:1:o;3609:184::-;3679:6;3732:2;3720:9;3711:7;3707:23;3703:32;3700:52;;;3748:1;3745;3738:12;3700:52;-1:-1:-1;3771:16:1;;3609:184;-1:-1:-1;3609:184:1:o;3798:248::-;3863:6;3871;3924:2;3912:9;3903:7;3899:23;3895:32;3892:52;;;3940:1;3937;3930:12;3892:52;3976:9;3963:23;3953:33;;4005:35;4036:2;4025:9;4021:18;4005:35;:::i;4051:248::-;4119:6;4127;4180:2;4168:9;4159:7;4155:23;4151:32;4148:52;;;4196:1;4193;4186:12;4148:52;-1:-1:-1;;4219:23:1;;;4289:2;4274:18;;;4261:32;;-1:-1:-1;4051:248:1:o;4304:316::-;4381:6;4389;4397;4450:2;4438:9;4429:7;4425:23;4421:32;4418:52;;;4466:1;4463;4456:12;4418:52;-1:-1:-1;;4489:23:1;;;4559:2;4544:18;;4531:32;;-1:-1:-1;4610:2:1;4595:18;;;4582:32;;4304:316;-1:-1:-1;4304:316:1:o;4625:306::-;4713:6;4721;4729;4782:2;4770:9;4761:7;4757:23;4753:32;4750:52;;;4798:1;4795;4788:12;4750:52;4827:9;4821:16;4811:26;;4877:2;4866:9;4862:18;4856:25;4846:35;;4921:2;4910:9;4906:18;4900:25;4890:35;;4625:306;;;;;:::o;4936:523::-;5040:6;5048;5056;5064;5072;5080;5133:3;5121:9;5112:7;5108:23;5104:33;5101:53;;;5150:1;5147;5140:12;5101:53;-1:-1:-1;;5173:23:1;;;5243:2;5228:18;;5215:32;;-1:-1:-1;5294:2:1;5279:18;;5266:32;;5345:2;5330:18;;5317:32;;-1:-1:-1;5396:3:1;5381:19;;5368:33;;-1:-1:-1;5448:3:1;5433:19;5420:33;;-1:-1:-1;4936:523:1;-1:-1:-1;4936:523:1:o;5464:461::-;5517:3;5555:5;5549:12;5582:6;5577:3;5570:19;5608:4;5637:2;5632:3;5628:12;5621:19;;5674:2;5667:5;5663:14;5695:1;5705:195;5719:6;5716:1;5713:13;5705:195;;;5784:13;;-1:-1:-1;;;;;5780:39:1;5768:52;;5840:12;;;;5875:15;;;;5816:1;5734:9;5705:195;;;-1:-1:-1;5916:3:1;;5464:461;-1:-1:-1;;;;;5464:461:1:o;8160:510::-;8431:6;8420:9;8413:25;8474:3;8469:2;8458:9;8454:18;8447:31;8394:4;8495:57;8547:3;8536:9;8532:19;8524:6;8495:57;:::i;:::-;-1:-1:-1;;;;;8588:32:1;;;;8583:2;8568:18;;8561:60;-1:-1:-1;8652:2:1;8637:18;8630:34;8487:65;8160:510;-1:-1:-1;;8160:510:1:o;8675:597::-;8787:4;8816:2;8845;8834:9;8827:21;8877:6;8871:13;8920:6;8915:2;8904:9;8900:18;8893:34;8945:1;8955:140;8969:6;8966:1;8963:13;8955:140;;;9064:14;;;9060:23;;9054:30;9030:17;;;9049:2;9026:26;9019:66;8984:10;;8955:140;;;9113:6;9110:1;9107:13;9104:91;;;9183:1;9178:2;9169:6;9158:9;9154:22;9150:31;9143:42;9104:91;-1:-1:-1;9256:2:1;9235:15;-1:-1:-1;;9231:29:1;9216:45;;;;9263:2;9212:54;;8675:597;-1:-1:-1;;;8675:597:1:o;11981:329::-;12183:2;12165:21;;;12222:1;12202:18;;;12195:29;-1:-1:-1;;;12255:2:1;12240:18;;12233:36;12301:2;12286:18;;11981:329::o;13018:335::-;13220:2;13202:21;;;13259:2;13239:18;;;13232:30;-1:-1:-1;;;13293:2:1;13278:18;;13271:41;13344:2;13329:18;;13018:335::o;13540:582::-;13839:6;13828:9;13821:25;13882:6;13877:2;13866:9;13862:18;13855:34;13925:3;13920:2;13909:9;13905:18;13898:31;13802:4;13946:57;13998:3;13987:9;13983:19;13975:6;13946:57;:::i;:::-;-1:-1:-1;;;;;14039:32:1;;;;14034:2;14019:18;;14012:60;-1:-1:-1;14103:3:1;14088:19;14081:35;13938:65;13540:582;-1:-1:-1;;;13540:582:1:o;14569:128::-;14609:3;14640:1;14636:6;14633:1;14630:13;14627:39;;;14646:18;;:::i;:::-;-1:-1:-1;14682:9:1;;14569:128::o;14702:217::-;14742:1;14768;14758:132;;14812:10;14807:3;14803:20;14800:1;14793:31;14847:4;14844:1;14837:15;14875:4;14872:1;14865:15;14758:132;-1:-1:-1;14904:9:1;;14702:217::o;14924:168::-;14964:7;15030:1;15026;15022:6;15018:14;15015:1;15012:21;15007:1;15000:9;14993:17;14989:45;14986:71;;;15037:18;;:::i;:::-;-1:-1:-1;15077:9:1;;14924:168::o;15097:125::-;15137:4;15165:1;15162;15159:8;15156:34;;;15170:18;;:::i;:::-;-1:-1:-1;15207:9:1;;15097:125::o;15227:127::-;15288:10;15283:3;15279:20;15276:1;15269:31;15319:4;15316:1;15309:15;15343:4;15340:1;15333:15;15359:127;15420:10;15415:3;15411:20;15408:1;15401:31;15451:4;15448:1;15441:15;15475:4;15472:1;15465:15;15623:131;-1:-1:-1;;;;;15698:31:1;;15688:42;;15678:70;;15744:1;15741;15734:12
Swarm Source
ipfs://ee9758b529db9416879e3b674955e4ce3d167227966d0dc42e50008a882503cb
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.