Token Frog
Overview ERC-20
Price
$0.00 @ 0.000000 FTM
Fully Diluted Market Cap
Total Supply:
1,000,000,000,000,000 FROG
Holders:
1,594 addresses
Transfers:
-
Contract:
Decimals:
9
[ Download CSV Export ]
[ Download CSV Export ]
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Frog
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-10-26 */ /** *Submitted for verification at BscScan.com on 2021-09-16 */ /** *Submitted for verification at BscScan.com on 2021-09-16 */ //SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * SAFEMATH LIBRARY */ library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } interface IBEP20 { 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); } 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 adr) public onlyOwner { authorizations[adr] = true; } /** * Remove address' authorization. Owner only */ function unauthorize(address adr) public onlyOwner { authorizations[adr] = false; } /** * Check if address is owner */ function isOwner(address account) public view returns (bool) { return account == owner; } /** * Return address' authorization status */ function isAuthorized(address adr) public view returns (bool) { return authorizations[adr]; } /** * Transfer ownership to new address. Caller must be owner. Leaves old owner authorized */ function transferOwnership(address payable adr) public onlyOwner { owner = adr; authorizations[adr] = true; emit OwnershipTransferred(adr); } event OwnershipTransferred(address owner); } interface IDEXFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IDEXRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function 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 IDividendDistributor { function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external; function setShare(address shareholder, uint256 amount) external; function deposit() external payable; function process(uint256 gas) external; } contract DividendDistributor is IDividendDistributor { using SafeMath for uint256; address _token; struct Share { uint256 amount; uint256 totalExcluded; uint256 totalRealised; } IBEP20 BUSD = IBEP20(0xDDc0385169797937066bBd8EF409b5B3c0dFEB52); // wMEMO address WBNB = 0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83; // wFTM 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 = 1 hours; uint256 public minDistribution = 1 * (10 ** 18); 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(0x16327E3FbDaCA3bcF7E38F5Af2599D2DDc33aE52); // spirit _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 = BUSD.balanceOf(address(this)); address[] memory path = new address[](2); path[0] = WBNB; path[1] = address(BUSD); router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}( 0, path, address(this), block.timestamp ); uint256 amount = BUSD.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); BUSD.transfer(shareholder, amount); shareholderClaims[shareholder] = block.timestamp; shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount); shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount); } } function claimDividend() external { distributeDividend(msg.sender); } 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(); } } contract Frog is IBEP20, Auth { using SafeMath for uint256; uint256 public constant MASK = type(uint128).max; address BUSD = 0xDDc0385169797937066bBd8EF409b5B3c0dFEB52; // wMEMO address public WBNB = 0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83; // wFTM address DEAD = 0x000000000000000000000000000000000000dEaD; address ZERO = 0x0000000000000000000000000000000000000000; address DEAD_NON_CHECKSUM = 0x000000000000000000000000000000000000dEaD; string constant _name = "Frog"; string constant _symbol = "FROG"; uint8 constant _decimals = 9; uint256 _totalSupply = 1_000_000_000_000_000 * (10 ** _decimals); uint256 public _maxTxAmount = _totalSupply.div(200); // 0.5% mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) _allowances; mapping (address => bool) isFeeExempt; mapping (address => bool) isTxLimitExempt; mapping (address => bool) isDividendExempt; uint256 liquidityFee = 200; uint256 buybackFee = 300; uint256 reflectionFee = 800; uint256 totalFee = 1300; uint256 feeDenominator = 10000; address public autoLiquidityReceiver; uint256 targetLiquidity = 25; uint256 targetLiquidityDenominator = 100; IDEXRouter public router; address public pair; uint256 public launchedAt; uint256 public launchedAtTimestamp; uint256 buybackMultiplierNumerator = 200; uint256 buybackMultiplierDenominator = 100; uint256 buybackMultiplierTriggeredAt; uint256 buybackMultiplierLength = 30 minutes; bool public autoBuybackEnabled = false; mapping (address => bool) buyBacker; uint256 autoBuybackCap; uint256 autoBuybackAccumulator; uint256 autoBuybackAmount; uint256 autoBuybackBlockPeriod; uint256 autoBuybackBlockLast; DividendDistributor distributor; address public distributorAddress; uint256 distributorGas = 500000; bool public swapEnabled = true; uint256 public swapThreshold = _totalSupply.div(2000); // 0.05% bool inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } constructor ( address _dexRouter ) Auth(msg.sender) { router = IDEXRouter(_dexRouter); pair = IDEXFactory(router.factory()).createPair(WBNB, address(this)); _allowances[address(this)][address(router)] = _totalSupply; WBNB = router.WETH(); distributor = new DividendDistributor(_dexRouter); distributorAddress = address(distributor); isFeeExempt[msg.sender] = true; isTxLimitExempt[msg.sender] = true; isDividendExempt[pair] = true; isDividendExempt[address(this)] = true; isDividendExempt[DEAD] = true; buyBacker[msg.sender] = true; autoLiquidityReceiver = msg.sender; approve(_dexRouter, _totalSupply); approve(address(pair), _totalSupply); _balances[msg.sender] = _totalSupply; emit Transfer(address(0), msg.sender, _totalSupply); } receive() external payable { } function totalSupply() external view override returns (uint256) { return _totalSupply; } function decimals() external pure override returns (uint8) { return _decimals; } function symbol() external pure override returns (string memory) { return _symbol; } function name() external pure override returns (string memory) { return _name; } function getOwner() external view override returns (address) { return owner; } modifier onlyBuybacker() { require(buyBacker[msg.sender] == true, ""); _; } 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, _totalSupply); } 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] != _totalSupply){ _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance"); } return _transferFrom(sender, recipient, amount); } function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) { if(inSwap){ return _basicTransfer(sender, recipient, amount); } checkTxLimit(sender, amount); // if(shouldSwapBack()){ swapBack(); } if(shouldAutoBuyback()){ triggerAutoBuyback(); } _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); uint256 amountReceived = shouldTakeFee(sender) ? takeFee(sender, recipient, amount) : amount; _balances[recipient] = _balances[recipient].add(amountReceived); 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; } 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; } function checkTxLimit(address sender, uint256 amount) internal view { require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded"); } function shouldTakeFee(address sender) internal view returns (bool) { return !isFeeExempt[sender]; } function getTotalFee(bool selling) public view returns (uint256) { if(launchedAt + 1 >= block.number){ return feeDenominator.sub(1); } if(selling){ return getMultipliedFee(); } return totalFee; } function getMultipliedFee() public view returns (uint256) { if (launchedAtTimestamp + 1 days > block.timestamp) { return totalFee.mul(18000).div(feeDenominator); } else if (buybackMultiplierTriggeredAt.add(buybackMultiplierLength) > block.timestamp) { 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)); } return totalFee; } function takeFee(address sender, address receiver, uint256 amount) internal returns (uint256) { uint256 feeAmount = amount.mul(getTotalFee(receiver == pair)).div(feeDenominator); _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); return amount.sub(feeAmount); } function shouldSwapBack() internal view returns (bool) { return msg.sender != pair && !inSwap && swapEnabled && _balances[address(this)] >= swapThreshold; } 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] = WBNB; uint256 balanceBefore = address(this).balance; router.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); uint256 amountBNB = address(this).balance.sub(balanceBefore); uint256 totalBNBFee = totalFee.sub(dynamicLiquidityFee.div(2)); uint256 amountBNBLiquidity = amountBNB.mul(dynamicLiquidityFee).div(totalBNBFee).div(2); uint256 amountBNBReflection = amountBNB.mul(reflectionFee).div(totalBNBFee); try distributor.deposit{value: amountBNBReflection}() {} catch {} if(amountToLiquify > 0){ router.addLiquidityETH{value: amountBNBLiquidity}( address(this), amountToLiquify, 0, 0, autoLiquidityReceiver, block.timestamp ); emit AutoLiquify(amountBNBLiquidity, amountToLiquify); } } function shouldAutoBuyback() internal view returns (bool) { return msg.sender != pair && !inSwap && autoBuybackEnabled && autoBuybackBlockLast + autoBuybackBlockPeriod <= block.number // After N blocks from last buyback && address(this).balance >= autoBuybackAmount; } function castMerlinCandle(uint256 amount, bool triggerBuybackMultiplier) external authorized { buyTokens(amount, DEAD); if(triggerBuybackMultiplier){ buybackMultiplierTriggeredAt = block.timestamp; emit BuybackMultiplierActive(buybackMultiplierLength); } } function clearBuybackMultiplier() external authorized { buybackMultiplierTriggeredAt = 0; } function triggerAutoBuyback() internal { buyTokens(autoBuybackAmount, DEAD); autoBuybackBlockLast = block.number; autoBuybackAccumulator = autoBuybackAccumulator.add(autoBuybackAmount); if(autoBuybackAccumulator > autoBuybackCap){ autoBuybackEnabled = false; } } function buyTokens(uint256 amount, address to) internal swapping { address[] memory path = new address[](2); path[0] = WBNB; path[1] = address(this); router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}( 0, path, to, block.timestamp ); } function setAutoBuybackSettings(bool _enabled, uint256 _cap, uint256 _amount, uint256 _period) external authorized { autoBuybackEnabled = _enabled; autoBuybackCap = _cap; autoBuybackAccumulator = 0; autoBuybackAmount = _amount; autoBuybackBlockPeriod = _period; autoBuybackBlockLast = block.number; } function setBuybackMultiplierSettings(uint256 numerator, uint256 denominator, uint256 length) external authorized { require(numerator / denominator <= 2 && numerator > denominator); buybackMultiplierNumerator = numerator; buybackMultiplierDenominator = denominator; buybackMultiplierLength = length; } function launched() internal view returns (bool) { return launchedAt != 0; } function launch() public authorized { require(launchedAt == 0, "Already launched boi"); launchedAt = block.number; launchedAtTimestamp = block.timestamp; } function setTxLimit(uint256 amount) external authorized { require(amount >= _totalSupply / 1000); _maxTxAmount = amount; } 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]); } } function setIsFeeExempt(address holder, bool exempt) external authorized { isFeeExempt[holder] = exempt; } function setIsTxLimitExempt(address holder, bool exempt) external authorized { isTxLimitExempt[holder] = exempt; } function setFees(uint256 _liquidityFee, uint256 _buybackFee, uint256 _reflectionFee, uint256 _feeDenominator) external authorized { liquidityFee = _liquidityFee; buybackFee = _buybackFee; reflectionFee = _reflectionFee; totalFee = _liquidityFee.add(_buybackFee).add(_reflectionFee); feeDenominator = _feeDenominator; require(totalFee < feeDenominator/4); } function setFeeReceivers(address _autoLiquidityReceiver) external authorized { autoLiquidityReceiver = _autoLiquidityReceiver; } function setSwapBackSettings(bool _enabled, uint256 _amount) external authorized { swapEnabled = _enabled; swapThreshold = _amount; } function setTargetLiquidity(uint256 _target, uint256 _denominator) external authorized { targetLiquidity = _target; targetLiquidityDenominator = _denominator; } function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external authorized { distributor.setDistributionCriteria(_minPeriod, _minDistribution); } function setDistributorSettings(uint256 gas) external authorized { require(gas < 750000); distributorGas = gas; } function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO)); } function getLiquidityBacking(uint256 accuracy) public view returns (uint256) { return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply()); } function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) { return getLiquidityBacking(accuracy) > target; } event AutoLiquify(uint256 amountBNB, uint256 amountBOG); event BuybackMultiplierActive(uint256 duration); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_dexRouter","type":"address"}],"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":"amountBNB","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":"MASK","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WBNB","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoBuybackEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"triggerBuybackMultiplier","type":"bool"}],"name":"castMerlinCandle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearBuybackMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"distributorAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"adr","type":"address"}],"name":"isAuthorized","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":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAtTimestamp","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":"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"}],"name":"setAutoBuybackSettings","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"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_buybackFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","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":"setIsTxLimitExempt","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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimit","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600280546001600160a01b031990811673ddc0385169797937066bbd8ef409b5b3c0dfeb52179091556003805482167321be370d5312f44cb42ce377bc9b8a0cef1a4c8317905560048054821661dead9081179091556005805483169055600680549092161790556200007a6009600a6200067f565b6200008d9066038d7ea4c6800062000690565b600755620000ad60c8600754620004da60201b620012d31790919060201c565b60085560c8600e81905561012c600f55610320601055610514601155612710601255601960145560646015819055601a91909155601b55610708601d55601e805460ff199081169091556207a12060275560288054909116600117905560075462000127906107d0620004da602090811b620012d317901c565b6029553480156200013757600080fd5b5060405162003711380380620037118339810160408190526200015a91620006b2565b600080546001600160a01b0319908116339081178355825260016020818152604093849020805460ff1916909217909155601680546001600160a01b038616931683179055825163c45a015560e01b81529251919263c45a01559260048083019392829003018186803b158015620001d157600080fd5b505afa158015620001e6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020c9190620006b2565b6003546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c6539690604401602060405180830381600087803b1580156200025957600080fd5b505af11580156200026e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002949190620006b2565b601780546001600160a01b0319166001600160a01b03928316179055600754306000908152600a6020908152604080832060168054871685529083529281902093909355905482516315ab88c960e31b8152925193169263ad5c4648926004808201939291829003018186803b1580156200030e57600080fd5b505afa15801562000323573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003499190620006b2565b600380546001600160a01b0319166001600160a01b0392909216919091179055604051819062000379906200055e565b6001600160a01b039091168152602001604051809103906000f080158015620003a6573d6000803e3d6000fd5b50602580546001600160a01b039283166001600160a01b03199182168117909255602680548216909217909155336000818152600b60209081526040808320805460ff199081166001908117909255600c8452828520805482168317905560175488168552600d84528285208054821683179055308552828520805482168317905560045490971684528184208054881682179055848452601f9092529091208054909416179092556013805490911690911790556007546200046b908290620004f1565b5060175460075462000487916001600160a01b031690620004f1565b5060075433600081815260096020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35062000707565b6000620004e88284620006e4565b90505b92915050565b336000818152600a602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906200054d9086815260200190565b60405180910390a350600192915050565b610e5880620028b983390190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620005c3578160001904821115620005a757620005a76200056c565b80851615620005b557918102915b93841c939080029062000587565b509250929050565b600082620005dc57506001620004eb565b81620005eb57506000620004eb565b81600181146200060457600281146200060f576200062f565b6001915050620004eb565b60ff8411156200062357620006236200056c565b50506001821b620004eb565b5060208310610133831016604e8410600b841016171562000654575081810a620004eb565b62000660838362000582565b80600019048211156200067757620006776200056c565b029392505050565b6000620004e860ff841683620005cb565b6000816000190483118215151615620006ad57620006ad6200056c565b500290565b600060208284031215620006c557600080fd5b81516001600160a01b0381168114620006dd57600080fd5b9392505050565b6000826200070257634e487b7160e01b600052601260045260246000fd5b500490565b6121a280620007176000396000f3fe6080604052600436106102975760003560e01c80638dd950021161015a578063d806d12f116100c1578063f1f3bca31161007a578063f1f3bca31461081d578063f2fde38b1461083d578063f708a64f1461085d578063f84ba65d1461087d578063f887ea401461089d578063fe9fbb80146108bd57600080fd5b8063d806d12f1461073e578063dd62ed3e14610753578063df20fd4914610799578063e01bb688146107b9578063e91f214e146107d9578063f0b37c04146107fd57600080fd5b8063b210b06d11610113578063b210b06d1461069d578063b6a5d7de146106b2578063bf56b371146106d2578063c6d2577d146106e8578063ca33e64c146106fe578063d51ed1c81461071e57600080fd5b80638dd95002146105d057806395d89b41146105f05780639d1944f51461061d578063a51af4c51461063d578063a8aa1b311461065d578063a9059cbb1461067d57600080fd5b80632f54bf6e116101fe578063658d4b7f116101b7578063658d4b7f146104f85780636ddd1713146105185780636fcba3771461053257806370a08231146105525780637d1db4a514610588578063893d20e81461059e57600080fd5b80632f54bf6e14610433578063313ce567146104625780633bb8a8d41461047e57806341c2664b14610498578063571ac8b0146104b85780635c85974f146104d857600080fd5b806318160ddd1161025057806318160ddd14610389578063201e79911461039e5780632375ce40146103be57806323b872dd146103de5780632b112e49146103fe5780632d48e8961461041357600080fd5b806301339c21146102a35780630445b667146102ba578063048c7baf146102e357806306fdde0314610303578063095ea7b3146103395780631161ae391461036957600080fd5b3661029e57005b600080fd5b3480156102af57600080fd5b506102b86108dd565b005b3480156102c657600080fd5b506102d060295481565b6040519081526020015b60405180910390f35b3480156102ef57600080fd5b506102b86102fe366004611d17565b61095c565b34801561030f57600080fd5b5060408051808201909152600481526346726f6760e01b60208201525b6040516102da9190611d50565b34801561034557600080fd5b50610359610354366004611dbd565b6109aa565b60405190151581526020016102da565b34801561037557600080fd5b50610359610384366004611de9565b610a16565b34801561039557600080fd5b506007546102d0565b3480156103aa57600080fd5b506102b86103b9366004611de9565b610a2a565b3480156103ca57600080fd5b506102b86103d9366004611e0b565b610a5a565b3480156103ea57600080fd5b506103596103f9366004611e37565b610aaf565b34801561040a57600080fd5b506102d0610b73565b34801561041f57600080fd5b506102b861042e366004611de9565b610bc5565b34801561043f57600080fd5b5061035961044e366004611e78565b6000546001600160a01b0391821691161490565b34801561046e57600080fd5b50604051600981526020016102da565b34801561048a57600080fd5b50601e546103599060ff1681565b3480156104a457600080fd5b506102b86104b3366004611e95565b610c54565b3480156104c457600080fd5b506103596104d3366004611e78565b610cd5565b3480156104e457600080fd5b506102b86104f3366004611ec1565b610ce9565b34801561050457600080fd5b506102b8610513366004611eda565b610d2f565b34801561052457600080fd5b506028546103599060ff1681565b34801561053e57600080fd5b506102b861054d366004611f06565b610d7f565b34801561055e57600080fd5b506102d061056d366004611e78565b6001600160a01b031660009081526009602052604090205490565b34801561059457600080fd5b506102d060085481565b3480156105aa57600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016102da565b3480156105dc57600080fd5b506003546105b8906001600160a01b031681565b3480156105fc57600080fd5b5060408051808201909152600481526346524f4760e01b602082015261032c565b34801561062957600080fd5b506102b8610638366004611ec1565b610ded565b34801561064957600080fd5b506026546105b8906001600160a01b031681565b34801561066957600080fd5b506017546105b8906001600160a01b031681565b34801561068957600080fd5b50610359610698366004611dbd565b610e26565b3480156106a957600080fd5b506102b8610e33565b3480156106be57600080fd5b506102b86106cd366004611e78565b610e5f565b3480156106de57600080fd5b506102d060185481565b3480156106f457600080fd5b506102d060195481565b34801561070a57600080fd5b506013546105b8906001600160a01b031681565b34801561072a57600080fd5b506102d0610739366004611ec1565b610eb0565b34801561074a57600080fd5b506102d0610ef4565b34801561075f57600080fd5b506102d061076e366004611f38565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b3480156107a557600080fd5b506102b86107b4366004611f71565b610fc2565b3480156107c557600080fd5b506102b86107d4366004611e78565b610ffe565b3480156107e557600080fd5b506102d06fffffffffffffffffffffffffffffffff81565b34801561080957600080fd5b506102b8610818366004611e78565b611045565b34801561082957600080fd5b506102d0610838366004611f8d565b611090565b34801561084957600080fd5b506102b8610858366004611e78565b6110cb565b34801561086957600080fd5b506102b8610878366004611eda565b611161565b34801561088957600080fd5b506102b8610898366004611eda565b611265565b3480156108a957600080fd5b506016546105b8906001600160a01b031681565b3480156108c957600080fd5b506103596108d8366004611e78565b6112b5565b6108e6336112b5565b61090b5760405162461bcd60e51b815260040161090290611fa8565b60405180910390fd5b601854156109525760405162461bcd60e51b8152602060048201526014602482015273416c7265616479206c61756e6368656420626f6960601b6044820152606401610902565b4360185542601955565b610965336112b5565b6109815760405162461bcd60e51b815260040161090290611fa8565b601e805460ff191694151594909417909355602091909155600060215560225560235543602455565b336000818152600a602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610a059086815260200190565b60405180910390a350600192915050565b600082610a2283610eb0565b119392505050565b610a33336112b5565b610a4f5760405162461bcd60e51b815260040161090290611fa8565b601491909155601555565b610a63336112b5565b610a7f5760405162461bcd60e51b815260040161090290611fa8565b6002610a8b8385611fe3565b11158015610a9857508183115b610aa157600080fd5b601a92909255601b55601d55565b6007546001600160a01b0384166000908152600a60209081526040808320338452909152812054909114610b5e576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600a82528381203382529091529190912054610b399184906112df565b6001600160a01b0385166000908152600a602090815260408083203384529091529020555b610b6984848461130b565b90505b9392505050565b6005546001600160a01b0316600090815260096020526040812054610bc0906004546001600160a01b0316600090815260096020526040902054610bba9060075490611608565b90611608565b905090565b610bce336112b5565b610bea5760405162461bcd60e51b815260040161090290611fa8565b6025546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b158015610c3857600080fd5b505af1158015610c4c573d6000803e3d6000fd5b505050505050565b610c5d336112b5565b610c795760405162461bcd60e51b815260040161090290611fa8565b600454610c909083906001600160a01b0316611614565b8015610cd15742601c55601d546040519081527f39d2389ec5c1fa77b2c0d374bc61b6d7bd97ccba280fcdeb4e9c7644898d7c3a9060200160405180910390a15b5050565b6000610ce3826007546109aa565b92915050565b610cf2336112b5565b610d0e5760405162461bcd60e51b815260040161090290611fa8565b6103e8600754610d1e9190611fe3565b811015610d2a57600080fd5b600855565b610d38336112b5565b610d545760405162461bcd60e51b815260040161090290611fa8565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b610d88336112b5565b610da45760405162461bcd60e51b815260040161090290611fa8565b600e849055600f8390556010829055610dc782610dc1868661171d565b9061171d565b6011556012819055610dda600482611fe3565b60115410610de757600080fd5b50505050565b610df6336112b5565b610e125760405162461bcd60e51b815260040161090290611fa8565b620b71b08110610e2157600080fd5b602755565b6000610b6c33848461130b565b610e3c336112b5565b610e585760405162461bcd60e51b815260040161090290611fa8565b6000601c55565b6000546001600160a01b03163314610e895760405162461bcd60e51b815260040161090290612005565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6000610ce3610ebd610b73565b6017546001600160a01b0316600090815260096020526040902054610eee90610ee7906002611729565b8590611729565b906112d3565b60004260195462015180610f089190612025565b1115610f2b57610bc0601254610eee61465060115461172990919063ffffffff16565b42610f43601d54601c5461171d90919063ffffffff16565b1115610fbb576000610f6642610bba601d54601c5461171d90919063ffffffff16565b90506000610f8d601154610bba601b54610eee601a5460115461172990919063ffffffff16565b9050610fb4610fab601d54610eee858561172990919063ffffffff16565b6011549061171d565b9250505090565b5060115490565b610fcb336112b5565b610fe75760405162461bcd60e51b815260040161090290611fa8565b6028805460ff191692151592909217909155602955565b611007336112b5565b6110235760405162461bcd60e51b815260040161090290611fa8565b601380546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461106f5760405162461bcd60e51b815260040161090290612005565b6001600160a01b03166000908152600160205260409020805460ff19169055565b60004360185460016110a29190612025565b106110b557601254610ce3906001611608565b81156110c357610ce3610ef4565b505060115490565b6000546001600160a01b031633146110f55760405162461bcd60e51b815260040161090290612005565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b61116a336112b5565b6111865760405162461bcd60e51b815260040161090290611fa8565b6001600160a01b03821630148015906111ad57506017546001600160a01b03838116911614155b6111b657600080fd5b6001600160a01b0382166000908152600d60205260409020805460ff1916821580159190911790915561121c57602554604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca9690604401610c1e565b6025546001600160a01b0383811660008181526009602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401610c1e565b61126e336112b5565b61128a5760405162461bcd60e51b815260040161090290611fa8565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526001602052604090205460ff1690565b6000610b6c8284611fe3565b600081848411156113035760405162461bcd60e51b81526004016109029190611d50565b505050900390565b602a5460009060ff161561132b57611324848484611735565b9050610b6c565b61133584836117d8565b61133d611841565b1561134a5761134a611890565b611352611ba5565b1561135f5761135f611c00565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600990915291909120546113b19184906112df565b6001600160a01b038516600090815260096020908152604080832093909355600b90529081205460ff16156113e657826113f1565b6113f1858585611c47565b6001600160a01b038516600090815260096020526040902054909150611417908261171d565b6001600160a01b038086166000908152600960209081526040808320949094559188168152600d909152205460ff166114bb576025546001600160a01b0386811660008181526009602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b1580156114a857600080fd5b505af19250505080156114b9575060015b505b6001600160a01b0384166000908152600d602052604090205460ff1661154c576025546001600160a01b0385811660008181526009602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561153957600080fd5b505af192505050801561154a575060015b505b6025546027546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c479916115849160040190815260200190565b600060405180830381600087803b15801561159e57600080fd5b505af19250505080156115af575060015b50836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516115f591815260200190565b60405180910390a3506001949350505050565b6000610b6c828461203d565b602a805460ff19166001179055604080516002808252606082018352600092602083019080368337505060035482519293506001600160a01b03169183915060009061166257611662612054565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061169657611696612054565b6001600160a01b03928316602091820292909201015260165460405163b6f9de9560e01b815291169063b6f9de959085906116dc906000908690889042906004016120ae565b6000604051808303818588803b1580156116f557600080fd5b505af1158015611709573d6000803e3d6000fd5b5050602a805460ff19169055505050505050565b6000610b6c8284612025565b6000610b6c82846120e3565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526009909152918220546117869184906112df565b6001600160a01b0380861660009081526009602052604080822093909355908516815220546117b5908361171d565b6001600160a01b0384166000908152600960205260409020555060019392505050565b6008548111158061180157506001600160a01b0382166000908152600c602052604090205460ff165b610cd15760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610902565b6017546000906001600160a01b031633148015906118625750602a5460ff16155b8015611870575060285460ff165b8015610bc057505060295430600090815260096020526040902054101590565b602a805460ff191660011790556014546015546000916118af91610a16565b6118bb57600e546118be565b60005b905060006118e26002610eee601154610eee8660295461172990919063ffffffff16565b905060006118fb8260295461160890919063ffffffff16565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061193557611935612054565b6001600160a01b03928316602091820292909201015260035482519116908290600190811061196657611966612054565b6001600160a01b03928316602091820292909201015260165460405163791ac94760e01b81524792919091169063791ac947906119b0908690600090879030904290600401612102565b600060405180830381600087803b1580156119ca57600080fd5b505af11580156119de573d6000803e3d6000fd5b5050505060006119f7824761160890919063ffffffff16565b90506000611a12611a098860026112d3565b60115490611608565b90506000611a276002610eee8481878d611729565b90506000611a4483610eee6010548761172990919063ffffffff16565b9050602560009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015611a9657600080fd5b505af193505050508015611aa8575060015b508715611b905760165460135460405163f305d71960e01b8152306004820152602481018b905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990849060c4016060604051808303818588803b158015611b1a57600080fd5b505af1158015611b2e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b53919061213e565b505060408051848152602081018b90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050602a805460ff1916905550505050505050565b6017546000906001600160a01b03163314801590611bc65750602a5460ff16155b8015611bd45750601e5460ff165b8015611bef575043602354602454611bec9190612025565b11155b8015610bc057505060225447101590565b602254600454611c1991906001600160a01b0316611614565b43602455602254602154611c2c9161171d565b60218190556020541015611c4557601e805460ff191690555b565b6012546017546000918291611c799190610eee90611c72906001600160a01b03898116911614611090565b8690611729565b30600090815260096020526040902054909150611c96908261171d565b30600081815260096020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611ce79085815260200190565b60405180910390a3611cf98382611608565b95945050505050565b80358015158114611d1257600080fd5b919050565b60008060008060808587031215611d2d57600080fd5b611d3685611d02565b966020860135965060408601359560600135945092505050565b600060208083528351808285015260005b81811015611d7d57858101830151858201604001528201611d61565b81811115611d8f576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114611dba57600080fd5b50565b60008060408385031215611dd057600080fd5b8235611ddb81611da5565b946020939093013593505050565b60008060408385031215611dfc57600080fd5b50508035926020909101359150565b600080600060608486031215611e2057600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215611e4c57600080fd5b8335611e5781611da5565b92506020840135611e6781611da5565b929592945050506040919091013590565b600060208284031215611e8a57600080fd5b8135610b6c81611da5565b60008060408385031215611ea857600080fd5b82359150611eb860208401611d02565b90509250929050565b600060208284031215611ed357600080fd5b5035919050565b60008060408385031215611eed57600080fd5b8235611ef881611da5565b9150611eb860208401611d02565b60008060008060808587031215611f1c57600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215611f4b57600080fd5b8235611f5681611da5565b91506020830135611f6681611da5565b809150509250929050565b60008060408385031215611f8457600080fd5b611ddb83611d02565b600060208284031215611f9f57600080fd5b610b6c82611d02565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008261200057634e487b7160e01b600052601260045260246000fd5b500490565b60208082526006908201526510a7aba722a960d11b604082015260600190565b6000821982111561203857612038611fcd565b500190565b60008282101561204f5761204f611fcd565b500390565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b838110156120a35781516001600160a01b03168752958201959082019060010161207e565b509495945050505050565b8481526080602082015260006120c7608083018661206a565b6001600160a01b03949094166040830152506060015292915050565b60008160001904831182151516156120fd576120fd611fcd565b500290565b85815284602082015260a06040820152600061212160a083018661206a565b6001600160a01b0394909416606083015250608001529392505050565b60008060006060848603121561215357600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220de1aec3ee39c3cf02adf1bc07833db79653477952711b668734cfd89a4f36f9a64736f6c634300080900336080604052600180546001600160a01b031990811673ddc0385169797937066bbd8ef409b5b3c0dfeb5217909155600280549091167321be370d5312f44cb42ce377bc9b8a0cef1a4c831790556ec097ce7bc90715b34b9f1000000000600c55610e10600d55670de0b6b3a7640000600e5534801561007d57600080fd5b50604051610e58380380610e5883398101604081905261009c916100f6565b6001600160a01b0381166100c4577316327e3fbdaca3bcf7e38f5af2599d2ddc33ae526100c6565b805b600380546001600160a01b03929092166001600160a01b0319928316179055600080549091163317905550610126565b60006020828403121561010857600080fd5b81516001600160a01b038116811461011f57600080fd5b9392505050565b610d23806101356000396000f3fe6080604052600436106100dd5760003560e01c8063ce7c2ac21161007f578063efca2eed11610059578063efca2eed14610224578063f0fc6bca1461023a578063ffb2c4791461024f578063ffd49c841461026f57600080fd5b8063ce7c2ac2146101af578063d0e30db014610206578063e2d2e2191461020e57600080fd5b80632d48e896116100bb5780632d48e8961461014d5780633a98ef391461016d5780634fab0ae814610183578063997664d71461019957600080fd5b806311ce023d146100e257806314b6ca961461010b57806328fd31981461012d575b600080fd5b3480156100ee57600080fd5b506100f8600c5481565b6040519081526020015b60405180910390f35b34801561011757600080fd5b5061012b610126366004610afb565b610285565b005b34801561013957600080fd5b506100f8610148366004610b25565b6103fd565b34801561015957600080fd5b5061012b610168366004610b40565b610486565b34801561017957600080fd5b506100f860085481565b34801561018f57600080fd5b506100f8600e5481565b3480156101a557600080fd5b506100f860095481565b3480156101bb57600080fd5b506101eb6101ca366004610b25565b60076020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610102565b61012b6104a8565b34801561021a57600080fd5b506100f8600b5481565b34801561023057600080fd5b506100f8600a5481565b34801561024657600080fd5b5061012b6106f5565b34801561025b57600080fd5b5061012b61026a366004610b62565b610700565b34801561027b57600080fd5b506100f8600d5481565b6000546001600160a01b0316331461029c57600080fd5b6001600160a01b038216600090815260076020526040902054156102c3576102c382610800565b6000811180156102e957506001600160a01b038216600090815260076020526040902054155b1561034f57600480546001600160a01b0384166000818152600560205260408120839055600183018455929092527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b0319169091179055610382565b8015801561037457506001600160a01b03821660009081526007602052604090205415155b15610382576103828261092b565b6001600160a01b0382166000908152600760205260409020546008546103b39183916103ad91610a40565b90610a53565b6008556001600160a01b03821660009081526007602052604090208190556103da81610a5f565b6001600160a01b0390921660009081526007602052604090206001019190915550565b6001600160a01b03811660009081526007602052604081205461042257506000919050565b6001600160a01b03821660009081526007602052604081205461044490610a5f565b6001600160a01b038416600090815260076020526040902060010154909150808211610474575060009392505050565b61047e8282610a40565b949350505050565b6000546001600160a01b0316331461049d57600080fd5b600d91909155600e55565b6000546001600160a01b031633146104bf57600080fd5b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b15801561050357600080fd5b505afa158015610517573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053b9190610b7b565b6040805160028082526060820183529293506000929091602083019080368337505060025482519293506001600160a01b03169183915060009061058157610581610b94565b6001600160a01b03928316602091820292909201015260018054835192169183919081106105b1576105b1610b94565b6001600160a01b03928316602091820292909201015260035460405163b6f9de9560e01b815291169063b6f9de959034906105f790600090869030904290600401610baa565b6000604051808303818588803b15801561061057600080fd5b505af1158015610624573d6000803e3d6000fd5b50506001546040516370a0823160e01b8152306004820152600094506106b393508692506001600160a01b03909116906370a082319060240160206040518083038186803b15801561067557600080fd5b505afa158015610689573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ad9190610b7b565b90610a40565b6009549091506106c39082610a53565b600955600854600c546106ed916106e4916106de9085610a82565b90610a8e565b600b5490610a53565b600b55505050565b6106fe33610800565b565b6000546001600160a01b0316331461071757600080fd5b60045480610723575050565b6000805a905060005b848310801561073a57508381105b156107f95783600f541061074e576000600f555b6107806004600f548154811061076657610766610b94565b6000918252602090912001546001600160a01b0316610a9a565b156107b7576107b76004600f548154811061079d5761079d610b94565b6000918252602090912001546001600160a01b0316610800565b6107cc6107c55a8490610a40565b8490610a53565b92505a600f805491935060006107e183610c2a565b919050555080806107f190610c2a565b91505061072c565b5050505050565b6001600160a01b0381166000908152600760205260409020546108205750565b600061082b826103fd565b9050801561092757600a546108409082610a53565b600a5560015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb90604401602060405180830381600087803b15801561089157600080fd5b505af11580156108a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c99190610c45565b506001600160a01b038216600090815260066020908152604080832042905560079091529020600201546108fd9082610a53565b6001600160a01b03831660009081526007602052604090206002810191909155546103da90610a5f565b5050565b6004805461093b90600190610c67565b8154811061094b5761094b610b94565b60009182526020808320909101546001600160a01b038481168452600590925260409092205460048054929093169291811061098957610989610b94565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152600591829052604081205460048054919392916109d590600190610c67565b815481106109e5576109e5610b94565b60009182526020808320909101546001600160a01b031683528201929092526040019020556004805480610a1b57610a1b610c7e565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610a4c8284610c67565b9392505050565b6000610a4c8284610c94565b6000610a7c600c546106de600b5485610a8290919063ffffffff16565b92915050565b6000610a4c8284610cac565b6000610a4c8284610ccb565b600d546001600160a01b03821660009081526006602052604081205490914291610ac49190610c94565b108015610a7c5750600e54610ad8836103fd565b1192915050565b80356001600160a01b0381168114610af657600080fd5b919050565b60008060408385031215610b0e57600080fd5b610b1783610adf565b946020939093013593505050565b600060208284031215610b3757600080fd5b610a4c82610adf565b60008060408385031215610b5357600080fd5b50508035926020909101359150565b600060208284031215610b7457600080fd5b5035919050565b600060208284031215610b8d57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015610bf45784516001600160a01b031683529383019391830191600101610bcf565b50506001600160a01b039690961660408501525050506060015292915050565b634e487b7160e01b600052601160045260246000fd5b6000600019821415610c3e57610c3e610c14565b5060010190565b600060208284031215610c5757600080fd5b81518015158114610a4c57600080fd5b600082821015610c7957610c79610c14565b500390565b634e487b7160e01b600052603160045260246000fd5b60008219821115610ca757610ca7610c14565b500190565b6000816000190483118215151615610cc657610cc6610c14565b500290565b600082610ce857634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220886779863e2f9b1eac89e9aaf8826254757f27d0f24f6719608c47bc2059af1b64736f6c6343000809003300000000000000000000000016327e3fbdaca3bcf7e38f5af2599d2ddc33ae52
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000016327e3fbdaca3bcf7e38f5af2599d2ddc33ae52
-----Decoded View---------------
Arg [0] : _dexRouter (address): 0x16327e3fbdaca3bcf7e38f5af2599d2ddc33ae52
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000016327e3fbdaca3bcf7e38f5af2599d2ddc33ae52
Deployed ByteCode Sourcemap
12787:14512:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24473:187;;;;;;;;;;;;;:::i;:::-;;14821:53;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;14821:53:0;;;;;;;;23658:359;;;;;;;;;;-1:-1:-1;23658:359:0;;;;;:::i;:::-;;:::i;16202:80::-;;;;;;;;;;-1:-1:-1;16274:5:0;;;;;;;;;;;;-1:-1:-1;;;16274:5:0;;;;16202:80;;;;;;;:::i;16705:216::-;;;;;;;;;;-1:-1:-1;16705:216:0;;;;;:::i;:::-;;:::i;:::-;;;1974:14:1;;1967:22;1949:41;;1937:2;1922:18;16705:216:0;1809:187:1;27028:150:0;;;;;;;;;;-1:-1:-1;27028:150:0;;;;;:::i;:::-;;:::i;15932:88::-;;;;;;;;;;-1:-1:-1;16005:12:0;;15932:88;;26177:183;;;;;;;;;;-1:-1:-1;26177:183:0;;;;;:::i;:::-;;:::i;24025:342::-;;;;;;;;;;-1:-1:-1;24025:342:0;;;;;:::i;:::-;;:::i;17218:365::-;;;;;;;;;;-1:-1:-1;17218:365:0;;;;;:::i;:::-;;:::i;26703:142::-;;;;;;;;;;;;;:::i;26368:183::-;;;;;;;;;;-1:-1:-1;26368:183:0;;;;;:::i;:::-;;:::i;4656:103::-;;;;;;;;;;-1:-1:-1;4656:103:0;;;;;:::i;:::-;4711:4;4746:5;-1:-1:-1;;;;;4735:16:0;;;4746:5;;4735:16;;4656:103;16026:80;;;;;;;;;;-1:-1:-1;16026:80:0;;13376:1;3430:36:1;;3418:2;3403:18;16026:80:0;3288:184:1;14405:38:0;;;;;;;;;;-1:-1:-1;14405:38:0;;;;;;;;22543:314;;;;;;;;;;-1:-1:-1;22543:314:0;;;;;:::i;:::-;;:::i;16929:117::-;;;;;;;;;;-1:-1:-1;16929:117:0;;;;;:::i;:::-;;:::i;24668:145::-;;;;;;;;;;-1:-1:-1;24668:145:0;;;;;:::i;:::-;;:::i;25176:120::-;;;;;;;;;;-1:-1:-1;25176:120:0;;;;;:::i;:::-;;:::i;14784:30::-;;;;;;;;;;-1:-1:-1;14784:30:0;;;;;;;;25440:415;;;;;;;;;;-1:-1:-1;25440:415:0;;;;;:::i;:::-;;:::i;16453:105::-;;;;;;;;;;-1:-1:-1;16453:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;16537:18:0;16519:7;16537:18;;;:9;:18;;;;;;;16453:105;13457:51;;;;;;;;;;;;;;;;16288:78;;;;;;;;;;-1:-1:-1;16340:7:0;16358:5;-1:-1:-1;;;;;16358:5:0;16288:78;;;-1:-1:-1;;;;;4789:32:1;;;4771:51;;4759:2;4744:18;16288:78:0;4625:203:1;12987:64:0;;;;;;;;;;-1:-1:-1;12987:64:0;;;;-1:-1:-1;;;;;12987:64:0;;;16112:84;;;;;;;;;;-1:-1:-1;16186:7:0;;;;;;;;;;;;-1:-1:-1;;;16186:7:0;;;;16112:84;;26559:136;;;;;;;;;;-1:-1:-1;26559:136:0;;;;;:::i;:::-;;:::i;14702:33::-;;;;;;;;;;-1:-1:-1;14702:33:0;;;;-1:-1:-1;;;;;14702:33:0;;;14110:19;;;;;;;;;;-1:-1:-1;14110:19:0;;;;-1:-1:-1;;;;;14110:19:0;;;17054:156;;;;;;;;;;-1:-1:-1;17054:156:0;;;;;:::i;:::-;;:::i;22865:105::-;;;;;;;;;;;;;:::i;4329:94::-;;;;;;;;;;-1:-1:-1;4329:94:0;;;;;:::i;:::-;;:::i;14138:25::-;;;;;;;;;;;;;;;;14170:34;;;;;;;;;;;;;;;;13950:36;;;;;;;;;;-1:-1:-1;13950:36:0;;;;-1:-1:-1;;;;;13950:36:0;;;26853:167;;;;;;;;;;-1:-1:-1;26853:167:0;;;;;:::i;:::-;;:::i;19445:663::-;;;;;;;;;;;;;:::i;16564:133::-;;;;;;;;;;-1:-1:-1;16564:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;16666:19:0;;;16648:7;16666:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;16564:133;26013:156;;;;;;;;;;-1:-1:-1;26013:156:0;;;;;:::i;:::-;;:::i;25863:142::-;;;;;;;;;;-1:-1:-1;25863:142:0;;;;;:::i;:::-;;:::i;12859:48::-;;;;;;;;;;-1:-1:-1;12859:48:0;12890:17;12859:48;;4499:97;;;;;;;;;;-1:-1:-1;4499:97:0;;;;;:::i;:::-;;:::i;19210:227::-;;;;;;;;;;-1:-1:-1;19210:227:0;;;;;:::i;:::-;;:::i;5056:173::-;;;;;;;;;;-1:-1:-1;5056:173:0;;;;;:::i;:::-;;:::i;24821:347::-;;;;;;;;;;-1:-1:-1;24821:347:0;;;;;:::i;:::-;;:::i;25304:128::-;;;;;;;;;;-1:-1:-1;25304:128:0;;;;;:::i;:::-;;:::i;14079:24::-;;;;;;;;;;-1:-1:-1;14079:24:0;;;;-1:-1:-1;;;;;14079:24:0;;;4830:107;;;;;;;;;;-1:-1:-1;4830:107:0;;;;;:::i;:::-;;:::i;24473:187::-;4214:24;4227:10;4214:12;:24::i;:::-;4206:48;;;;-1:-1:-1;;;4206:48:0;;;;;;;:::i;:::-;;;;;;;;;24528:10:::1;::::0;:15;24520:48:::1;;;::::0;-1:-1:-1;;;24520:48:0;;6692:2:1;24520:48:0::1;::::0;::::1;6674:21:1::0;6731:2;6711:18;;;6704:30;-1:-1:-1;;;6750:18:1;;;6743:50;6810:18;;24520:48:0::1;6490:344:1::0;24520:48:0::1;24592:12;24579:10;:25:::0;24637:15:::1;24615:19;:37:::0;24473:187::o;23658:359::-;4214:24;4227:10;4214:12;:24::i;:::-;4206:48;;;;-1:-1:-1;;;4206:48:0;;;;;;;:::i;:::-;23784:18:::1;:29:::0;;-1:-1:-1;;23784:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;23824:14:::1;:21:::0;;;;-1:-1:-1;23856:22:0::1;:26:::0;23893:17:::1;:27:::0;23931:22:::1;:32:::0;23997:12:::1;23974:20;:35:::0;23658:359::o;16705:216::-;16809:10;16780:4;16797:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;16797:32:0;;;;;;;;;;:41;;;16854:37;16780:4;;16797:32;;16854:37;;;;16832:6;160:25:1;;148:2;133:18;;14:177;16854:37:0;;;;;;;;-1:-1:-1;16909:4:0;16705:216;;;;:::o;27028:150::-;27108:4;27164:6;27132:29;27152:8;27132:19;:29::i;:::-;:38;;27028:150;-1:-1:-1;;;27028:150:0:o;26177:183::-;4214:24;4227:10;4214:12;:24::i;:::-;4206:48;;;;-1:-1:-1;;;4206:48:0;;;;;;;:::i;:::-;26275:15:::1;:25:::0;;;;26311:26:::1;:41:::0;26177:183::o;24025:342::-;4214:24;4227:10;4214:12;:24::i;:::-;4206:48;;;;-1:-1:-1;;;4206:48:0;;;;;;;:::i;:::-;24185:1:::1;24158:23;24170:11:::0;24158:9;:23:::1;:::i;:::-;:28;;:55;;;;;24202:11;24190:9;:23;24158:55;24150:64;;;::::0;::::1;;24225:26;:38:::0;;;;24274:28:::1;:42:::0;24327:23:::1;:32:::0;24025:342::o;17218:365::-;17373:12;;-1:-1:-1;;;;;17338:19:0;;17318:4;17338:19;;;:11;:19;;;;;;;;17358:10;17338:31;;;;;;;;17318:4;;17338:47;17335:181;;17435:69;;;;;;;;;;;-1:-1:-1;;;17435:69:0;;;;;;;;-1:-1:-1;;;;;17435:19:0;;-1:-1:-1;17435:19:0;;;:11;:19;;;;;17455:10;17435:31;;;;;;;;;;:69;;17471:6;;17435:35;:69::i;:::-;-1:-1:-1;;;;;17401:19:0;;;;;;:11;:19;;;;;;;;17421:10;17401:31;;;;;;;:103;17335:181;17535:40;17549:6;17557:9;17568:6;17535:13;:40::i;:::-;17528:47;;17218:365;;;;;;:::o;26703:142::-;26831:4;;-1:-1:-1;;;;;26831:4:0;26756:7;16537:18;;;:9;:18;;;;;;26783:54;;26810:4;;-1:-1:-1;;;;;26810:4:0;16519:7;16537:18;;;:9;:18;;;;;;26783:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;26776:61;;26703:142;:::o;26368:183::-;4214:24;4227:10;4214:12;:24::i;:::-;4206:48;;;;-1:-1:-1;;;4206:48:0;;;;;;;:::i;:::-;26478:11:::1;::::0;:65:::1;::::0;-1:-1:-1;;;26478:65:0;;::::1;::::0;::::1;7367:25:1::0;;;7408:18;;;7401:34;;;-1:-1:-1;;;;;26478:11:0;;::::1;::::0;:35:::1;::::0;7340:18:1;;26478:65:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;26368:183:::0;;:::o;22543:314::-;4214:24;4227:10;4214:12;:24::i;:::-;4206:48;;;;-1:-1:-1;;;4206:48:0;;;;;;;:::i;:::-;22665:4:::1;::::0;22647:23:::1;::::0;22657:6;;-1:-1:-1;;;;;22665:4:0::1;22647:9;:23::i;:::-;22684:24;22681:169;;;22755:15;22724:28;:46:::0;22814:23:::1;::::0;22790:48:::1;::::0;160:25:1;;;22790:48:0::1;::::0;148:2:1;133:18;22790:48:0::1;;;;;;;22681:169;22543:314:::0;;:::o;16929:117::-;16984:4;17008:30;17016:7;17025:12;;17008:7;:30::i;:::-;17001:37;16929:117;-1:-1:-1;;16929:117:0:o;24668:145::-;4214:24;4227:10;4214:12;:24::i;:::-;4206:48;;;;-1:-1:-1;;;4206:48:0;;;;;;;:::i;:::-;24768:4:::1;24753:12;;:19;;;;:::i;:::-;24743:6;:29;;24735:38;;;::::0;::::1;;24784:12;:21:::0;24668:145::o;25176:120::-;4214:24;4227:10;4214:12;:24::i;:::-;4206:48;;;;-1:-1:-1;;;4206:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25260:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;25260:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25176:120::o;25440:415::-;4214:24;4227:10;4214:12;:24::i;:::-;4206:48;;;;-1:-1:-1;;;4206:48:0;;;;;;;:::i;:::-;25581:12:::1;:28:::0;;;25620:10:::1;:24:::0;;;25655:13:::1;:30:::0;;;25707:50:::1;25671:14:::0;25707:30:::1;25596:13:::0;25633:11;25707:17:::1;:30::i;:::-;:34:::0;::::1;:50::i;:::-;25696:8;:61:::0;25768:14:::1;:32:::0;;;25830:16:::1;25845:1;25785:15:::0;25830:16:::1;:::i;:::-;25819:8;;:27;25811:36;;;::::0;::::1;;25440:415:::0;;;;:::o;26559:136::-;4214:24;4227:10;4214:12;:24::i;:::-;4206:48;;;;-1:-1:-1;;;4206:48:0;;;;;;;:::i;:::-;26649:6:::1;26643:3;:12;26635:21;;;::::0;::::1;;26667:14;:20:::0;26559:136::o;17054:156::-;17134:4;17158:44;17172:10;17184:9;17195:6;17158:13;:44::i;22865:105::-;4214:24;4227:10;4214:12;:24::i;:::-;4206:48;;;;-1:-1:-1;;;4206:48:0;;;;;;;:::i;:::-;22961:1:::1;22930:28;:32:::0;22865:105::o;4329:94::-;4711:4;4746:5;-1:-1:-1;;;;;4746:5:0;4053:10;4735:16;4037:38;;;;-1:-1:-1;;;4037:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4389:19:0::1;;::::0;;;4411:4:::1;4389:19;::::0;;;;;;;:26;;-1:-1:-1;;4389:26:0::1;::::0;;::::1;::::0;;4329:94::o;26853:167::-;26921:7;26948:64;26989:22;:20;:22::i;:::-;26971:4;;-1:-1:-1;;;;;26971:4:0;16519:7;16537:18;;;:9;:18;;;;;;26948:36;;26961:22;;26981:1;26961:19;:22::i;:::-;26948:8;;:12;:36::i;:::-;:40;;:64::i;19445:663::-;19494:7;19549:15;19518:19;;19540:6;19518:28;;;;:::i;:::-;:46;19514:561;;;19588:39;19612:14;;19588:19;19601:5;19588:8;;:12;;:19;;;;:::i;19514:561::-;19709:15;19649:57;19682:23;;19649:28;;:32;;:57;;;;:::i;:::-;:75;19645:430;;;19741:21;19765:78;19827:15;19765:57;19798:23;;19765:28;;:32;;:57;;;;:::i;:78::-;19741:102;;19858:19;19880:88;19959:8;;19880:74;19925:28;;19880:40;19893:26;;19880:8;;:12;;:40;;;;:::i;:88::-;19858:110;;19990:73;20003:59;20038:23;;20003:30;20019:13;20003:11;:15;;:30;;;;:::i;:59::-;19990:8;;;:12;:73::i;:::-;19983:80;;;;19445:663;:::o;19645:430::-;-1:-1:-1;20092:8:0;;;19445:663::o;26013:156::-;4214:24;4227:10;4214:12;:24::i;:::-;4206:48;;;;-1:-1:-1;;;4206:48:0;;;;;;;:::i;:::-;26105:11:::1;:22:::0;;-1:-1:-1;;26105:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;26138:13:::1;:23:::0;26013:156::o;25863:142::-;4214:24;4227:10;4214:12;:24::i;:::-;4206:48;;;;-1:-1:-1;;;4206:48:0;;;;;;;:::i;:::-;25951:21:::1;:46:::0;;-1:-1:-1;;;;;;25951:46:0::1;-1:-1:-1::0;;;;;25951:46:0;;;::::1;::::0;;;::::1;::::0;;25863:142::o;4499:97::-;4711:4;4746:5;-1:-1:-1;;;;;4746:5:0;4053:10;4735:16;4037:38;;;;-1:-1:-1;;;4037:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4561:19:0::1;4583:5;4561:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;4561:27:0::1;::::0;;4499:97::o;19210:227::-;19266:7;19307:12;19289:10;;19302:1;19289:14;;;;:::i;:::-;:30;19286:67;;19329:14;;:21;;19348:1;19329:18;:21::i;19286:67::-;19366:7;19363:41;;;19383:18;:16;:18::i;19363:41::-;-1:-1:-1;;19421:8:0;;;19210:227::o;5056:173::-;4711:4;4746:5;-1:-1:-1;;;;;4746:5:0;4053:10;4735:16;4037:38;;;;-1:-1:-1;;;4037:38:0;;;;;;;:::i;:::-;5132:5:::1;:11:::0;;-1:-1:-1;;;;;;5132:11:0::1;-1:-1:-1::0;;;;;5132:11:0;::::1;::::0;;::::1;::::0;;5154:19;;;-1:-1:-1;5154:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;5154:26:0::1;::::0;;::::1;::::0;;;5196:25;;4771:51:1;;;5196:25:0::1;::::0;4744:18:1;5196:25:0::1;;;;;;;5056:173:::0;:::o;24821:347::-;4214:24;4227:10;4214:12;:24::i;:::-;4206:48;;;;-1:-1:-1;;;4206:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24918:23:0;::::1;24936:4;24918:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;24955:4:0::1;::::0;-1:-1:-1;;;;;24945:14:0;;::::1;24955:4:::0;::::1;24945:14;;24918:41;24910:50;;;::::0;::::1;;-1:-1:-1::0;;;;;24971:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;24971:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;25015:146:::1;;25040:11;::::0;:31:::1;::::0;-1:-1:-1;;;25040:31:0;;-1:-1:-1;;;;;8329:32:1;;;25040:31:0::1;::::0;::::1;8311:51:1::0;25040:11:0::1;8378:18:1::0;;;8371:34;25040:11:0;;::::1;::::0;:20:::1;::::0;8284:18:1;;25040:31:0::1;8129:282:1::0;25015:146:0::1;25102:11;::::0;-1:-1:-1;;;;;25131:17:0;;::::1;25102:11;25131:17:::0;;;:9:::1;:17;::::0;;;;;;;25102:47;;-1:-1:-1;;;25102:47:0;;::::1;::::0;::::1;8311:51:1::0;;;;8378:18;;;8371:34;25102:11:0;::::1;::::0;:20:::1;::::0;8284:18:1;;25102:47:0::1;8129:282:1::0;25304:128:0;4214:24;4227:10;4214:12;:24::i;:::-;4206:48;;;;-1:-1:-1;;;4206:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25392:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;25392:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25304:128::o;4830:107::-;-1:-1:-1;;;;;4910:19:0;4886:4;4910:19;;;:14;:19;;;;;;;;;4830:107::o;1931:98::-;1989:7;2016:5;2020:1;2016;:5;:::i;2143:206::-;2229:7;2290:12;2282:6;;;;2274:29;;;;-1:-1:-1;;;2274:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2325:5:0;;;2143:206::o;17591:971::-;17703:6;;17683:4;;17703:6;;17700:63;;;17719:41;17734:6;17742:9;17753:6;17719:14;:41::i;:::-;17712:48;;;;17700:63;17775:28;17788:6;17796;17775:12;:28::i;:::-;17829:16;:14;:16::i;:::-;17826:35;;;17848:10;:8;:10::i;:::-;17874:19;:17;:19::i;:::-;17871:48;;;17896:20;:18;:20::i;:::-;17951:53;;;;;;;;;;;-1:-1:-1;;;17951:53:0;;;;;;;;-1:-1:-1;;;;;17951:17:0;;-1:-1:-1;17951:17:0;;;:9;:17;;;;;;;;:53;;17973:6;;17951:21;:53::i;:::-;-1:-1:-1;;;;;17931:17:0;;;;;;:9;:17;;;;;;;;:73;;;;19175:11;:19;;;;;;;;19174:20;18042:67;;18103:6;18042:67;;;18066:34;18074:6;18082:9;18093:6;18066:7;:34::i;:::-;-1:-1:-1;;;;;18145:20:0;;;;;;:9;:20;;;;;;18017:92;;-1:-1:-1;18145:40:0;;18017:92;18145:24;:40::i;:::-;-1:-1:-1;;;;;18122:20:0;;;;;;;:9;:20;;;;;;;;:63;;;;18202:24;;;;;:16;:24;;;;;;;18198:96;;18233:11;;-1:-1:-1;;;;;18262:17:0;;;18233:11;18262:17;;;:9;:17;;;;;;;;18233:47;;-1:-1:-1;;;18233:47:0;;;;;8311:51:1;;;;8378:18;;;8371:34;18233:11:0;;;:20;;8284:18:1;;18233:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18229:63;;-1:-1:-1;;;;;18308:27:0;;;;;;:16;:27;;;;;;;;18304:105;;18342:11;;-1:-1:-1;;;;;18374:20:0;;;18342:11;18374:20;;;:9;:20;;;;;;;;18342:53;;-1:-1:-1;;;18342:53:0;;;;;8311:51:1;;;;8378:18;;;8371:34;18342:11:0;;;:20;;8284:18:1;;18342:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18338:69;;18425:11;;18445:14;;18425:35;;-1:-1:-1;;;;;;18425:35:0;;-1:-1:-1;;;;;18425:11:0;;;;:19;;:35;;;;160:25:1;;;148:2;133:18;;14:177;18425:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18421:51;18506:9;-1:-1:-1;;;;;18489:43:0;18498:6;-1:-1:-1;;;;;18489:43:0;;18517:14;18489:43;;;;160:25:1;;148:2;133:18;;14:177;18489:43:0;;;;;;;;-1:-1:-1;18550:4:0;;17591:971;-1:-1:-1;;;;17591:971:0:o;1719:98::-;1777:7;1804:5;1808:1;1804;:5;:::i;23289:361::-;14931:6;:13;;-1:-1:-1;;14931:13:0;14940:4;14931:13;;;23389:16:::1;::::0;;23403:1:::1;23389:16:::0;;;;;::::1;::::0;;-1:-1:-1;;23389:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;23426:4:0::1;::::0;23416:7;;;;-1:-1:-1;;;;;;23426:4:0::1;::::0;23416:7;;-1:-1:-1;23426:4:0::1;::::0;23416:7:::1;;;;:::i;:::-;;;;;;:14;-1:-1:-1::0;;;;;23416:14:0::1;;;-1:-1:-1::0;;;;;23416:14:0::1;;;::::0;::::1;23459:4;23441;23446:1;23441:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23441:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;23477:6:::1;::::0;:165:::1;::::0;-1:-1:-1;;;23477:165:0;;:6;::::1;::::0;:57:::1;::::0;23542:6;;23477:165:::1;::::0;:6:::1;::::0;23580:4;;23599:2;;23616:15:::1;::::0;23477:165:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;14949:6:0;:14;;-1:-1:-1;;14949:14:0;;;-1:-1:-1;;;;;;23289:361:0:o;1613:98::-;1671:7;1698:5;1702:1;1698;:5;:::i;1825:98::-;1883:7;1910:5;1914:1;1910;:5;:::i;18570:332::-;18700:53;;;;;;;;;;;-1:-1:-1;;;18700:53:0;;;;;;;;-1:-1:-1;;;;;18700:17:0;;18663:4;18700:17;;;:9;:17;;;;;;;:53;;18722:6;;18700:21;:53::i;:::-;-1:-1:-1;;;;;18680:17:0;;;;;;;:9;:17;;;;;;:73;;;;18787:20;;;;;;;:32;;18812:6;18787:24;:32::i;:::-;-1:-1:-1;;;;;18764:20:0;;;;;;:9;:20;;;;;:55;-1:-1:-1;18890:4:0;18570:332;;;;;:::o;18914:166::-;19011:12;;19001:6;:22;;:49;;;-1:-1:-1;;;;;;19027:23:0;;;;;;:15;:23;;;;;;;;19001:49;18993:79;;;;-1:-1:-1;;;18993:79:0;;10445:2:1;18993:79:0;;;10427:21:1;10484:2;10464:18;;;10457:30;-1:-1:-1;;;10503:18:1;;;10496:47;10560:18;;18993:79:0;10243:341:1;20496:197:0;20583:4;;20545;;-1:-1:-1;;;;;20583:4:0;20569:10;:18;;;;:38;;-1:-1:-1;20601:6:0;;;;20600:7;20569:38;:62;;;;-1:-1:-1;20620:11:0;;;;20569:62;:116;;;;-1:-1:-1;;20672:13:0;;20662:4;20644:24;;;;:9;:24;;;;;;:41;;;20496:197::o;20701:1508::-;14931:6;:13;;-1:-1:-1;;14931:13:0;14940:4;14931:13;;;20796:15:::1;::::0;20813:26:::1;::::0;14931:6;;20780:60:::1;::::0;:15:::1;:60::i;:::-;:79;;20847:12;;20780:79;;;20843:1;20780:79;20750:109;;20870:23;20896:59;20953:1;20896:52;20939:8;;20896:38;20914:19;20896:13;;:17;;:38;;;;:::i;:59::-;20870:85;;20966:20;20989:34;21007:15;20989:13;;:17;;:34;;;;:::i;:::-;21060:16;::::0;;21074:1:::1;21060:16:::0;;;;;::::1;::::0;;20966:57;;-1:-1:-1;21036:21:0::1;::::0;21060:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;21060:16:0::1;21036:40;;21105:4;21087;21092:1;21087:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21087:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;21131:4:::1;::::0;21121:7;;21131:4;::::1;::::0;21121;;21131;;21121:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;21121:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;21204:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;21204:188:0;;21170:21:::1;::::0;21204:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;21276:12;;21146:21:::1;::::0;21319:4;;21346::::1;::::0;21366:15:::1;::::0;21204:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21405:17;21425:40;21451:13;21425:21;:25;;:40;;;;:::i;:::-;21405:60:::0;-1:-1:-1;21478:19:0::1;21500:40;21513:26;:19:::0;21537:1:::1;21513:23;:26::i;:::-;21500:8;::::0;;:12:::1;:40::i;:::-;21478:62:::0;-1:-1:-1;21553:26:0::1;21582:58;21638:1;21582:51;21478:62:::0;21582:51;:9;21596:19;21582:13:::1;:34::i;:58::-;21553:87;;21651:27;21681:45;21714:11;21681:28;21695:13;;21681:9;:13;;:28;;;;:::i;:45::-;21651:75;;21743:11;;;;;;;;;-1:-1:-1::0;;;;;21743:11:0::1;-1:-1:-1::0;;;;;21743:19:0::1;;21770;21743:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;21739:65:::0;21843:19;;21840:362:::1;;21878:6;::::0;22052:21:::1;::::0;21878:244:::1;::::0;-1:-1:-1;;;21878:244:0;;21954:4:::1;21878:244;::::0;::::1;11517:34:1::0;11567:18;;;11560:34;;;21878:6:0::1;11610:18:1::0;;;11603:34;;;11653:18;;;11646:34;-1:-1:-1;;;;;22052:21:0;;::::1;11696:19:1::0;;;11689:44;22092:15:0::1;11749:19:1::0;;;11742:35;21878:6:0;::::1;::::0;:22:::1;::::0;21908:18;;11451:19:1;;21878:244:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;22142:48:0::1;::::0;;7367:25:1;;;7423:2;7408:18;;7401:34;;;22142:48:0::1;::::0;-1:-1:-1;7340:18:1;22142:48:0::1;;;;;;;21840:362;-1:-1:-1::0;;14949:6:0;:14;;-1:-1:-1;;14949:14:0;;;-1:-1:-1;;;;;;;20701:1508:0:o;22217:318::-;22307:4;;22269;;-1:-1:-1;;;;;22307:4:0;22293:10;:18;;;;:38;;-1:-1:-1;22325:6:0;;;;22324:7;22293:38;:69;;;;-1:-1:-1;22344:18:0;;;;22293:69;:143;;;;;22424:12;22398:22;;22375:20;;:45;;;;:::i;:::-;:61;;22293:143;:234;;;;-1:-1:-1;;22510:17:0;;22485:21;:42;;;22217:318::o;22978:303::-;23038:17;;23057:4;;23028:34;;23038:17;-1:-1:-1;;;;;23057:4:0;23028:9;:34::i;:::-;23096:12;23073:20;:35;23171:17;;23144:22;;:45;;:26;:45::i;:::-;23119:22;:70;;;23228:14;;-1:-1:-1;23200:74:0;;;23245:18;:26;;-1:-1:-1;;23245:26:0;;;23200:74;22978:303::o;20116:372::-;20287:14;;20276:4;;20201:7;;;;20241:61;;20287:14;20241:41;;20252:29;;-1:-1:-1;;;;;20264:16:0;;;20276:4;;20264:16;20252:11;:29::i;:::-;20241:6;;:10;:41::i;:61::-;20360:4;20342:24;;;;:9;:24;;;;;;20221:81;;-1:-1:-1;20342:39:0;;20221:81;20342:28;:39::i;:::-;20333:4;20315:24;;;;:9;:24;;;;;;;:66;;;;20397:42;;-1:-1:-1;;;;;20397:42:0;;;;;;;20429:9;160:25:1;;148:2;133:18;;14:177;20397:42:0;;;;;;;;20459:21;:6;20470:9;20459:10;:21::i;:::-;20452:28;20116:372;-1:-1:-1;;;;;20116:372:0:o;196:160:1:-;261:20;;317:13;;310:21;300:32;;290:60;;346:1;343;336:12;290:60;196:160;;;:::o;361:385::-;444:6;452;460;468;521:3;509:9;500:7;496:23;492:33;489:53;;;538:1;535;528:12;489:53;561:26;577:9;561:26;:::i;:::-;551:36;634:2;619:18;;606:32;;-1:-1:-1;685:2:1;670:18;;657:32;;736:2;721:18;708:32;;-1:-1:-1;361:385:1;-1:-1:-1;;;361:385:1:o;751:597::-;863:4;892:2;921;910:9;903:21;953:6;947:13;996:6;991:2;980:9;976:18;969:34;1021:1;1031:140;1045:6;1042:1;1039:13;1031:140;;;1140:14;;;1136:23;;1130:30;1106:17;;;1125:2;1102:26;1095:66;1060:10;;1031:140;;;1189:6;1186:1;1183:13;1180:91;;;1259:1;1254:2;1245:6;1234:9;1230:22;1226:31;1219:42;1180:91;-1:-1:-1;1332:2:1;1311:15;-1:-1:-1;;1307:29:1;1292:45;;;;1339:2;1288:54;;751:597;-1:-1:-1;;;751:597:1:o;1353:131::-;-1:-1:-1;;;;;1428:31:1;;1418:42;;1408:70;;1474:1;1471;1464:12;1408:70;1353:131;:::o;1489:315::-;1557:6;1565;1618:2;1606:9;1597:7;1593:23;1589:32;1586:52;;;1634:1;1631;1624:12;1586:52;1673:9;1660:23;1692:31;1717:5;1692:31;:::i;:::-;1742:5;1794:2;1779:18;;;;1766:32;;-1:-1:-1;;;1489:315:1:o;2001:248::-;2069:6;2077;2130:2;2118:9;2109:7;2105:23;2101:32;2098:52;;;2146:1;2143;2136:12;2098:52;-1:-1:-1;;2169:23:1;;;2239:2;2224:18;;;2211:32;;-1:-1:-1;2001:248:1:o;2254:316::-;2331:6;2339;2347;2400:2;2388:9;2379:7;2375:23;2371:32;2368:52;;;2416:1;2413;2406:12;2368:52;-1:-1:-1;;2439:23:1;;;2509:2;2494:18;;2481:32;;-1:-1:-1;2560:2:1;2545:18;;;2532:32;;2254:316;-1:-1:-1;2254:316:1:o;2575:456::-;2652:6;2660;2668;2721:2;2709:9;2700:7;2696:23;2692:32;2689:52;;;2737:1;2734;2727:12;2689:52;2776:9;2763:23;2795:31;2820:5;2795:31;:::i;:::-;2845:5;-1:-1:-1;2902:2:1;2887:18;;2874:32;2915:33;2874:32;2915:33;:::i;:::-;2575:456;;2967:7;;-1:-1:-1;;;3021:2:1;3006:18;;;;2993:32;;2575:456::o;3036:247::-;3095:6;3148:2;3136:9;3127:7;3123:23;3119:32;3116:52;;;3164:1;3161;3154:12;3116:52;3203:9;3190:23;3222:31;3247:5;3222:31;:::i;3477:248::-;3542:6;3550;3603:2;3591:9;3582:7;3578:23;3574:32;3571:52;;;3619:1;3616;3609:12;3571:52;3655:9;3642:23;3632:33;;3684:35;3715:2;3704:9;3700:18;3684:35;:::i;:::-;3674:45;;3477:248;;;;;:::o;3730:180::-;3789:6;3842:2;3830:9;3821:7;3817:23;3813:32;3810:52;;;3858:1;3855;3848:12;3810:52;-1:-1:-1;3881:23:1;;3730:180;-1:-1:-1;3730:180:1:o;3915:315::-;3980:6;3988;4041:2;4029:9;4020:7;4016:23;4012:32;4009:52;;;4057:1;4054;4047:12;4009:52;4096:9;4083:23;4115:31;4140:5;4115:31;:::i;:::-;4165:5;-1:-1:-1;4189:35:1;4220:2;4205:18;;4189:35;:::i;4235:385::-;4321:6;4329;4337;4345;4398:3;4386:9;4377:7;4373:23;4369:33;4366:53;;;4415:1;4412;4405:12;4366:53;-1:-1:-1;;4438:23:1;;;4508:2;4493:18;;4480:32;;-1:-1:-1;4559:2:1;4544:18;;4531:32;;4610:2;4595:18;4582:32;;-1:-1:-1;4235:385:1;-1:-1:-1;4235:385:1:o;4833:388::-;4901:6;4909;4962:2;4950:9;4941:7;4937:23;4933:32;4930:52;;;4978:1;4975;4968:12;4930:52;5017:9;5004:23;5036:31;5061:5;5036:31;:::i;:::-;5086:5;-1:-1:-1;5143:2:1;5128:18;;5115:32;5156:33;5115:32;5156:33;:::i;:::-;5208:7;5198:17;;;4833:388;;;;;:::o;5226:248::-;5291:6;5299;5352:2;5340:9;5331:7;5327:23;5323:32;5320:52;;;5368:1;5365;5358:12;5320:52;5391:26;5407:9;5391:26;:::i;5479:180::-;5535:6;5588:2;5576:9;5567:7;5563:23;5559:32;5556:52;;;5604:1;5601;5594:12;5556:52;5627:26;5643:9;5627:26;:::i;6150:335::-;6352:2;6334:21;;;6391:2;6371:18;;;6364:30;-1:-1:-1;;;6425:2:1;6410:18;;6403:41;6476:2;6461:18;;6150:335::o;6839:127::-;6900:10;6895:3;6891:20;6888:1;6881:31;6931:4;6928:1;6921:15;6955:4;6952:1;6945:15;6971:217;7011:1;7037;7027:132;;7081:10;7076:3;7072:20;7069:1;7062:31;7116:4;7113:1;7106:15;7144:4;7141:1;7134:15;7027:132;-1:-1:-1;7173:9:1;;6971:217::o;7446:329::-;7648:2;7630:21;;;7687:1;7667:18;;;7660:29;-1:-1:-1;;;7720:2:1;7705:18;;7698:36;7766:2;7751:18;;7446:329::o;7780:128::-;7820:3;7851:1;7847:6;7844:1;7841:13;7838:39;;;7857:18;;:::i;:::-;-1:-1:-1;7893:9:1;;7780:128::o;8695:125::-;8735:4;8763:1;8760;8757:8;8754:34;;;8768:18;;:::i;:::-;-1:-1:-1;8805:9:1;;8695:125::o;8957:127::-;9018:10;9013:3;9009:20;9006:1;8999:31;9049:4;9046:1;9039:15;9073:4;9070:1;9063:15;9089:461;9142:3;9180:5;9174:12;9207:6;9202:3;9195:19;9233:4;9262:2;9257:3;9253:12;9246:19;;9299:2;9292:5;9288:14;9320:1;9330:195;9344:6;9341:1;9338:13;9330:195;;;9409:13;;-1:-1:-1;;;;;9405:39:1;9393:52;;9465:12;;;;9500:15;;;;9441:1;9359:9;9330:195;;;-1:-1:-1;9541:3:1;;9089:461;-1:-1:-1;;;;;9089:461:1:o;9555:510::-;9826:6;9815:9;9808:25;9869:3;9864:2;9853:9;9849:18;9842:31;9789:4;9890:57;9942:3;9931:9;9927:19;9919:6;9890:57;:::i;:::-;-1:-1:-1;;;;;9983:32:1;;;;9978:2;9963:18;;9956:60;-1:-1:-1;10047:2:1;10032:18;10025:34;9882:65;9555:510;-1:-1:-1;;9555:510:1:o;10070:168::-;10110:7;10176:1;10172;10168:6;10164:14;10161:1;10158:21;10153:1;10146:9;10139:17;10135:45;10132:71;;;10183:18;;:::i;:::-;-1:-1:-1;10223:9:1;;10070:168::o;10589:582::-;10888:6;10877:9;10870:25;10931:6;10926:2;10915:9;10911:18;10904:34;10974:3;10969:2;10958:9;10954:18;10947:31;10851:4;10995:57;11047:3;11036:9;11032:19;11024:6;10995:57;:::i;:::-;-1:-1:-1;;;;;11088:32:1;;;;11083:2;11068:18;;11061:60;-1:-1:-1;11152:3:1;11137:19;11130:35;10987:65;10589:582;-1:-1:-1;;;10589:582:1:o;11788:306::-;11876:6;11884;11892;11945:2;11933:9;11924:7;11920:23;11916:32;11913:52;;;11961:1;11958;11951:12;11913:52;11990:9;11984:16;11974:26;;12040:2;12029:9;12025:18;12019:25;12009:35;;12084:2;12073:9;12069:18;12063:25;12053:35;;11788:306;;;;;:::o
Swarm Source
ipfs://886779863e2f9b1eac89e9aaf8826254757f27d0f24f6719608c47bc2059af1b