ERC-20
Overview
Max Total Supply
1,000,000 ERC20 ***
Holders
9
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 6 Decimals)
Balance
35,274.731264 ERC20 ***Value
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
Printer
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-10-14 */ // UNIVERSAL USDC PRINTER is the new Reflection token on ETH network ! // By holding UUP, you will see your USDC reward rising on each TX. // You just need to sell a little part of token to receive your USDC reward // The more you have and the more you hold, the more rewards you will receive //Telegram : https://t.me/+SvadDGeCHJ8zNDdk //Fees : 4% reflection on USDC // 1% on liquidity // 3% on marketing wallet // SPDX-License-Identifier: MIT pragma solidity ^0.8.7; /** * 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;// excluded dividend uint256 totalRealised; } IBEP20 EP = IBEP20(0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48); // reward address USDC 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;// to be shown in UI uint256 public dividendsPerShare; uint256 public dividendsPerShareAccuracyFactor = 10 ** 36; uint256 public minPeriod = 1 hours; uint256 public minDistribution = 10 * (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(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 = EP.balanceOf(address(this)); address[] memory path = new address[](2); path[0] = WETH; path[1] = address(EP); router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}( 0, path, address(this), block.timestamp ); uint256 amount = EP.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); EP.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); } /* returns the unpaid earnings */ 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 Printer is IBEP20, Auth { using SafeMath for uint256; uint256 public constant MASK = type(uint128).max; address EP = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48; // reward USDC address public WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; address DEAD = 0x000000000000000000000000000000000000dEaD; address ZERO = 0x0000000000000000000000000000000000000000; address DEAD_NON_CHECKSUM = 0x000000000000000000000000000000000000dEaD; string constant _name = "Universal USDC Printer"; string constant _symbol = "UUP"; uint8 constant _decimals = 6; uint256 _totalSupply = 1_000_000 * (10 ** _decimals); uint256 public _maxTxAmount = _totalSupply.div(20); // 5% uint256 public _maxWallet = _totalSupply.div(20); // 5% mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) _allowances; mapping (address => bool) isFeeExempt; mapping (address => bool) isMaxWalletExempt; mapping (address => bool) isTxLimitExempt; mapping (address => bool) isDividendExempt; mapping (address => bool) public _isFree; uint256 liquidityFee = 100; uint256 buybackFee = 0; uint256 reflectionFee = 400; uint256 marketingFee = 300; uint256 totalFee = 800; uint256 feeDenominator = 10000; address public autoLiquidityReceiver=0x4a2F061264891470174219D02c18325A5DdDB933; //liq address address public marketingFeeReceiver=0x4a2F061264891470174219D02c18325A5DdDB933; // marketing address uint256 targetLiquidity = 10; 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 / 5000; // 0.02% bool inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } constructor () Auth(msg.sender) { address _router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; router = IDEXRouter(_router); pair = IDEXFactory(router.factory()).createPair(WETH, address(this)); _allowances[address(this)][address(router)] = _totalSupply; WETH = router.WETH(); distributor = new DividendDistributor(_router); distributorAddress = address(distributor); isFeeExempt[msg.sender] = true; isTxLimitExempt[msg.sender] = true; isTxLimitExempt[0x4a2F061264891470174219D02c18325A5DdDB933] = true; isDividendExempt[pair] = true; isDividendExempt[address(this)] = true; isDividendExempt[DEAD] = true; buyBacker[msg.sender] = true; isMaxWalletExempt[0x4a2F061264891470174219D02c18325A5DdDB933] = true; isMaxWalletExempt[DEAD] = true; autoLiquidityReceiver = msg.sender; approve(_router, _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); } // Max tx check address routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // bool isBuy=sender== pair|| sender == routerAddress; bool isSell=recipient== pair|| recipient == routerAddress; checkTxLimit(sender, amount); // Max wallet check excluding pair and router if (!isSell && !_isFree[recipient]){ require((_balances[recipient] + amount) < _maxWallet, "Max wallet has been triggered"); } // No swapping on buy and tx if (isSell) { if(shouldSwapBack()){ swapBack(); } if(shouldAutoBuyback()){ triggerAutoBuyback(); } } // if(!launched() && recipient == pair){ require(_balances[sender] > 0); launch(); } _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 totalFee; } if(selling){ return totalFee; } 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] = 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); try distributor.deposit{value: amountETHReflection}() {} catch {} payable(marketingFeeReceiver).transfer(amountETHMarketing); if(amountToLiquify > 0){ router.addLiquidityETH{value: amountETHLiquidity}( address(this), amountToLiquify, 0, 0, autoLiquidityReceiver, block.timestamp ); emit AutoLiquify(amountETHLiquidity, 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 triggerZeusBuyback(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] = WETH; path[1] = address(this); router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}( 0, path, to, block.timestamp ); } function Sweep() external onlyOwner { uint256 balance = address(this).balance; payable(msg.sender).transfer(balance); } 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 setMaxWallet(uint256 amount) external authorized { require(amount >= _totalSupply / 1000); _maxWallet = amount; } 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 setFree(address holder) public onlyOwner { _isFree[holder] = true; } function unSetFree(address holder) public onlyOwner { _isFree[holder] = false; } function checkFree(address holder) public view onlyOwner returns(bool){ return _isFree[holder]; } function setFees(uint256 _liquidityFee, uint256 _buybackFee, uint256 _reflectionFee, uint256 _marketingFee, uint256 _feeDenominator) external authorized { liquidityFee = _liquidityFee; buybackFee = _buybackFee; reflectionFee = _reflectionFee; marketingFee = _marketingFee; totalFee = _liquidityFee.add(_buybackFee).add(_reflectionFee).add(_marketingFee); feeDenominator = _feeDenominator; require(totalFee < feeDenominator/4); } function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver) external authorized { autoLiquidityReceiver = _autoLiquidityReceiver; marketingFeeReceiver = _marketingFeeReceiver; } 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 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":"MASK","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Sweep","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isFree","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWallet","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":"address","name":"holder","type":"address"}],"name":"checkFree","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"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"},{"internalType":"address","name":"_marketingFeeReceiver","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":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"setFree","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":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWallet","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":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"triggerBuybackMultiplier","type":"bool"}],"name":"triggerZeusBuyback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"unSetFree","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
6080604052600280546001600160a01b031990811673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb481790915560038054821673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc217905560048054821661dead9081179091556005805483169055600680549092161781556200007990600a620006a8565b6200008890620f424062000767565b600755620000a860146007546200057860201b620015801790919060201c565b600855620000c860146007546200057860201b620015801790919060201c565b60095560646011819055600060125561019060135561012c60145561032060155561271060165560178054734a2f061264891470174219d02c18325a5dddb9336001600160a01b03199182168117909255601880549091169091179055600a601955601a81905560c8601f556020556107086022556023805460ff199081169091556207a120602c55602d805490911660011790556007546200016f90611388906200063c565b602e553480156200017f57600080fd5b5060008054336001600160a01b031991821681178355825260016020818152604093849020805460ff1916909217909155601b8054737a250d5630b4cf539739df2c5dacb4c659f2488d931683179055825163c45a015560e01b815292519192839263c45a015592600480840193919291829003018186803b1580156200020557600080fd5b505afa1580156200021a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024091906200060a565b6003546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c6539690604401602060405180830381600087803b1580156200028d57600080fd5b505af1158015620002a2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c891906200060a565b601c80546001600160a01b0319166001600160a01b03928316179055600754306000908152600b60209081526040808320601b8054871685529083529281902093909355905482516315ab88c960e31b8152925193169263ad5c4648926004808201939291829003018186803b1580156200034257600080fd5b505afa15801562000357573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037d91906200060a565b600380546001600160a01b0319166001600160a01b03929092169190911790556040518190620003ad90620005fc565b6001600160a01b039091168152602001604051809103906000f080158015620003da573d6000803e3d6000fd5b50602a80546001600160a01b039283166001600160a01b03199182168117909255602b80548216909217909155336000818152600c60209081526040808320805460ff199081166001908117909255600e845282852080548216831790557fb1ce1221ecad0723b5e74781f393af3ff360c706bfe54121dbfcc7e9ef9a3e918054821683179055601c5488168552600f84528285208054821683179055308552828520805482168317905560048054891686528386208054831684179055868652602485528386208054831684179055600d9094527f65883152c91b63beb3e92cff1f53262965f73f692ee7eb30bf82d7befef94a5b8054821683179055925490961683529091208054909116909317909255601780549091169091179055600754620005099082906200058f565b50601c5460075462000525916001600160a01b0316906200058f565b50600754336000818152600a6020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3506200079f565b60006200058682846200063c565b90505b92915050565b336000818152600b602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590620005eb9086815260200190565b60405180910390a350600192915050565b610e588062002d4b83390190565b6000602082840312156200061d57600080fd5b81516001600160a01b03811681146200063557600080fd5b9392505050565b6000826200065a57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115620006a057816000190482111562000684576200068462000789565b808516156200069257918102915b93841c939080029062000664565b509250929050565b60006200058660ff841683600082620006c45750600162000589565b81620006d35750600062000589565b8160018114620006ec5760028114620006f75762000717565b600191505062000589565b60ff8411156200070b576200070b62000789565b50506001821b62000589565b5060208310610133831016604e8410600b84101617156200073c575081810a62000589565b6200074883836200065f565b80600019048211156200075f576200075f62000789565b029392505050565b600081600019048311821515161562000784576200078462000789565b500290565b634e487b7160e01b600052601160045260246000fd5b61259c80620007af6000396000f3fe60806040526004361061036f5760003560e01c8063893d20e8116101c6578063d51ed1c8116100f7578063f1f3bca311610095578063f708a64f1161006f578063f708a64f14610a41578063f84ba65d14610a61578063f887ea4014610a81578063fe9fbb8014610aa157600080fd5b8063f1f3bca3146109e1578063f2fde38b14610a01578063f5cfec0a14610a2157600080fd5b8063df20fd49116100d1578063df20fd491461095d578063e91f214e1461097d578063e96fada2146109a1578063f0b37c04146109c157600080fd5b8063d51ed1c8146108e2578063d806d12f14610902578063dd62ed3e1461091757600080fd5b8063a9059cbb11610164578063b6a5d7de1161013e578063b6a5d7de14610876578063bf56b37114610896578063c6d2577d146108ac578063ca33e64c146108c257600080fd5b8063a9059cbb14610821578063ad5c464814610841578063b210b06d1461086157600080fd5b80639d1944f5116101a05780639d1944f5146107a1578063a4b45c00146107c1578063a51af4c5146107e1578063a8aa1b311461080157600080fd5b8063893d20e81461072357806389ef69f61461075557806395d89b411461077557600080fd5b80632d48e896116102a05780635d0044ca1161023e5780637088fb7f116102185780637088fb7f146106ac57806370a08231146106c15780637d1db4a5146106f757806382247ec01461070d57600080fd5b80635d0044ca14610652578063658d4b7f146106725780636ddd17131461069257600080fd5b80633425c0011161027a5780633425c001146105d85780633bb8a8d4146105f8578063571ac8b0146106125780635c85974f1461063257600080fd5b80632d48e8961461056d5780632f54bf6e1461058d578063313ce567146105bc57600080fd5b80631161ae391161030d5780632375ce40116102e75780632375ce40146104e857806323b872dd14610508578063296020e7146105285780632b112e491461055857600080fd5b80631161ae391461049357806318160ddd146104b3578063201e7991146104c857600080fd5b806304a66b481161034957806304a66b48146103db57806306fdde03146103fb57806307c89fe814610443578063095ea7b31461047357600080fd5b806301339c211461037b5780630445b66714610392578063048c7baf146103bb57600080fd5b3661037657005b600080fd5b34801561038757600080fd5b50610390610ac1565b005b34801561039e57600080fd5b506103a8602e5481565b6040519081526020015b60405180910390f35b3480156103c757600080fd5b506103906103d6366004612237565b610b40565b3480156103e757600080fd5b506103906103f6366004612328565b610b8e565b34801561040757600080fd5b506040805180820190915260168152752ab734bb32b939b0b6102aa9a22190283934b73a32b960511b60208201525b6040516103b291906123dc565b34801561044f57600080fd5b5061046361045e366004612108565b610c04565b60405190151581526020016103b2565b34801561047f57600080fd5b5061046361048e3660046121d4565b610c52565b34801561049f57600080fd5b506104636104ae3660046122ac565b610cbe565b3480156104bf57600080fd5b506007546103a8565b3480156104d457600080fd5b506103906104e33660046122ac565b610cd2565b3480156104f457600080fd5b506103906105033660046122ce565b610d02565b34801561051457600080fd5b5061046361052336600461215e565b610d57565b34801561053457600080fd5b50610463610543366004612108565b60106020526000908152604090205460ff1681565b34801561056457600080fd5b506103a8610e1b565b34801561057957600080fd5b506103906105883660046122ac565b610e6d565b34801561059957600080fd5b506104636105a8366004612108565b6000546001600160a01b0391821691161490565b3480156105c857600080fd5b50604051600681526020016103b2565b3480156105e457600080fd5b506103906105f3366004612108565b610efc565b34801561060457600080fd5b506023546104639060ff1681565b34801561061e57600080fd5b5061046361062d366004612108565b610f47565b34801561063e57600080fd5b5061039061064d366004612270565b610f5b565b34801561065e57600080fd5b5061039061066d366004612270565b610fa1565b34801561067e57600080fd5b5061039061068d36600461219f565b610fe7565b34801561069e57600080fd5b50602d546104639060ff1681565b3480156106b857600080fd5b50610390611037565b3480156106cd57600080fd5b506103a86106dc366004612108565b6001600160a01b03166000908152600a602052604090205490565b34801561070357600080fd5b506103a860085481565b34801561071957600080fd5b506103a860095481565b34801561072f57600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016103b2565b34801561076157600080fd5b50610390610770366004612108565b611094565b34801561078157600080fd5b5060408051808201909152600381526205555560ec1b6020820152610436565b3480156107ad57600080fd5b506103906107bc366004612270565b6110e2565b3480156107cd57600080fd5b506103906107dc366004612125565b61111b565b3480156107ed57600080fd5b50602b5461073d906001600160a01b031681565b34801561080d57600080fd5b50601c5461073d906001600160a01b031681565b34801561082d57600080fd5b5061046361083c3660046121d4565b61116e565b34801561084d57600080fd5b5060035461073d906001600160a01b031681565b34801561086d57600080fd5b5061039061117b565b34801561088257600080fd5b50610390610891366004612108565b6111a7565b3480156108a257600080fd5b506103a8601d5481565b3480156108b857600080fd5b506103a8601e5481565b3480156108ce57600080fd5b5060175461073d906001600160a01b031681565b3480156108ee57600080fd5b506103a86108fd366004612270565b6111f8565b34801561090e57600080fd5b506015546103a8565b34801561092357600080fd5b506103a8610932366004612125565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205490565b34801561096957600080fd5b5061039061097836600461221b565b61123c565b34801561098957600080fd5b506103a86fffffffffffffffffffffffffffffffff81565b3480156109ad57600080fd5b5060185461073d906001600160a01b031681565b3480156109cd57600080fd5b506103906109dc366004612108565b611278565b3480156109ed57600080fd5b506103a86109fc366004612200565b6112c3565b348015610a0d57600080fd5b50610390610a1c366004612108565b6112f8565b348015610a2d57600080fd5b50610390610a3c366004612289565b61138e565b348015610a4d57600080fd5b50610390610a5c36600461219f565b61140e565b348015610a6d57600080fd5b50610390610a7c36600461219f565b611512565b348015610a8d57600080fd5b50601b5461073d906001600160a01b031681565b348015610aad57600080fd5b50610463610abc366004612108565b611562565b610aca33611562565b610aef5760405162461bcd60e51b8152600401610ae690612451565b60405180910390fd5b601d5415610b365760405162461bcd60e51b8152602060048201526014602482015273416c7265616479206c61756e6368656420626f6960601b6044820152606401610ae6565b43601d5542601e55565b610b4933611562565b610b655760405162461bcd60e51b8152600401610ae690612451565b6023805460ff191694151594909417909355602591909155600060265560275560285543602955565b610b9733611562565b610bb35760405162461bcd60e51b8152600401610ae690612451565b6011859055601284905560138390556014829055610bdd82610bd78581898961158c565b9061158c565b6015556016819055610bf06004826124ca565b60155410610bfd57600080fd5b5050505050565b600080546001600160a01b03163314610c2f5760405162461bcd60e51b8152600401610ae690612431565b506001600160a01b03811660009081526010602052604090205460ff165b919050565b336000818152600b602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610cad9086815260200190565b60405180910390a350600192915050565b600082610cca836111f8565b119392505050565b610cdb33611562565b610cf75760405162461bcd60e51b8152600401610ae690612451565b601991909155601a55565b610d0b33611562565b610d275760405162461bcd60e51b8152600401610ae690612451565b6002610d3383856124ca565b11158015610d4057508183115b610d4957600080fd5b601f92909255602055602255565b6007546001600160a01b0384166000908152600b60209081526040808320338452909152812054909114610e06576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600b82528381203382529091529190912054610de1918490611598565b6001600160a01b0385166000908152600b602090815260408083203384529091529020555b610e118484846115c4565b90505b9392505050565b6005546001600160a01b03166000908152600a6020526040812054610e68906004546001600160a01b03166000908152600a6020526040902054610e6290600754906119b1565b906119b1565b905090565b610e7633611562565b610e925760405162461bcd60e51b8152600401610ae690612451565b602a546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b158015610ee057600080fd5b505af1158015610ef4573d6000803e3d6000fd5b505050505050565b6000546001600160a01b03163314610f265760405162461bcd60e51b8152600401610ae690612431565b6001600160a01b03166000908152601060205260409020805460ff19169055565b6000610f5582600754610c52565b92915050565b610f6433611562565b610f805760405162461bcd60e51b8152600401610ae690612451565b6103e8600754610f9091906124ca565b811015610f9c57600080fd5b600855565b610faa33611562565b610fc65760405162461bcd60e51b8152600401610ae690612451565b6103e8600754610fd691906124ca565b811015610fe257600080fd5b600955565b610ff033611562565b61100c5760405162461bcd60e51b8152600401610ae690612451565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146110615760405162461bcd60e51b8152600401610ae690612431565b6040514790339082156108fc029083906000818181858888f19350505050158015611090573d6000803e3d6000fd5b5050565b6000546001600160a01b031633146110be5760405162461bcd60e51b8152600401610ae690612431565b6001600160a01b03166000908152601060205260409020805460ff19166001179055565b6110eb33611562565b6111075760405162461bcd60e51b8152600401610ae690612451565b620b71b0811061111657600080fd5b602c55565b61112433611562565b6111405760405162461bcd60e51b8152600401610ae690612451565b601780546001600160a01b039384166001600160a01b03199182161790915560188054929093169116179055565b6000610e143384846115c4565b61118433611562565b6111a05760405162461bcd60e51b8152600401610ae690612451565b6000602155565b6000546001600160a01b031633146111d15760405162461bcd60e51b8152600401610ae690612431565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6000610f55611205610e1b565b601c546001600160a01b03166000908152600a60205260409020546112369061122f9060026119bd565b85906119bd565b90611580565b61124533611562565b6112615760405162461bcd60e51b8152600401610ae690612451565b602d805460ff191692151592909217909155602e55565b6000546001600160a01b031633146112a25760405162461bcd60e51b8152600401610ae690612431565b6001600160a01b03166000908152600160205260409020805460ff19169055565b600043601d5460016112d591906124b2565b106112e257505060155490565b81156112f057505060155490565b505060155490565b6000546001600160a01b031633146113225760405162461bcd60e51b8152600401610ae690612431565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b61139733611562565b6113b35760405162461bcd60e51b8152600401610ae690612451565b6004546113ca9083906001600160a01b03166119c9565b801561109057426021556022546040519081527f39d2389ec5c1fa77b2c0d374bc61b6d7bd97ccba280fcdeb4e9c7644898d7c3a9060200160405180910390a15050565b61141733611562565b6114335760405162461bcd60e51b8152600401610ae690612451565b6001600160a01b038216301480159061145a5750601c546001600160a01b03838116911614155b61146357600080fd5b6001600160a01b0382166000908152600f60205260409020805460ff191682158015919091179091556114c957602a54604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca9690604401610ec6565b602a546001600160a01b038381166000818152600a602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401610ec6565b61151b33611562565b6115375760405162461bcd60e51b8152600401610ae690612451565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526001602052604090205460ff1690565b6000610e1482846124ca565b6000610e1482846124b2565b600081848411156115bc5760405162461bcd60e51b8152600401610ae691906123dc565b505050900390565b602f5460009060ff16156115e4576115dd848484611ad2565b9050610e14565b601c54737a250d5630b4cf539739df2c5dacb4c659f2488d906000906001600160a01b038681169116148061162a5750816001600160a01b0316856001600160a01b0316145b90506116368685611b75565b8015801561165d57506001600160a01b03851660009081526010602052604090205460ff16155b156116d6576009546001600160a01b0386166000908152600a60205260409020546116899086906124b2565b106116d65760405162461bcd60e51b815260206004820152601d60248201527f4d61782077616c6c657420686173206265656e207472696767657265640000006044820152606401610ae6565b8015611706576116e4611bde565b156116f1576116f1611c2d565b6116f9611f9b565b1561170657611706611ff6565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389166000908152600a9091529190912054611758918690611598565b6001600160a01b0387166000908152600a6020908152604080832093909355600c90529081205460ff161561178d5784611798565b61179887878761203d565b6001600160a01b0387166000908152600a60205260409020549091506117be908261158c565b6001600160a01b038088166000908152600a6020908152604080832094909455918a168152600f909152205460ff1661186257602a546001600160a01b038881166000818152600a602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561184f57600080fd5b505af1925050508015611860575060015b505b6001600160a01b0386166000908152600f602052604090205460ff166118f357602a546001600160a01b038781166000818152600a602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b1580156118e057600080fd5b505af19250505080156118f1575060015b505b602a54602c546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c4799161192b9160040190815260200190565b600060405180830381600087803b15801561194557600080fd5b505af1925050508015611956575060015b50856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161199c91815260200190565b60405180910390a35060019695505050505050565b6000610e14828461250b565b6000610e1482846124ec565b602f805460ff19166001179055604080516002808252606082018352600092602083019080368337505060035482519293506001600160a01b031691839150600090611a1757611a17612538565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611a4b57611a4b612538565b6001600160a01b039283166020918202929092010152601b5460405163b6f9de9560e01b815291169063b6f9de95908590611a91906000908690889042906004016123a7565b6000604051808303818588803b158015611aaa57600080fd5b505af1158015611abe573d6000803e3d6000fd5b5050602f805460ff19169055505050505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600a90915291822054611b23918490611598565b6001600160a01b038086166000908152600a60205260408082209390935590851681522054611b52908361158c565b6001600160a01b0384166000908152600a60205260409020555060019392505050565b60085481111580611b9e57506001600160a01b0382166000908152600e602052604090205460ff165b6110905760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610ae6565b601c546000906001600160a01b03163314801590611bff5750602f5460ff16155b8015611c0d5750602d5460ff165b8015610e68575050602e54306000908152600a6020526040902054101590565b602f805460ff19166001179055601954601a54600091611c4c91610cbe565b611c5857601154611c5b565b60005b90506000611c7f600261123660155461123686602e546119bd90919063ffffffff16565b90506000611c9882602e546119b190919063ffffffff16565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611cd257611cd2612538565b6001600160a01b039283166020918202929092010152600354825191169082906001908110611d0357611d03612538565b6001600160a01b039283166020918202929092010152601b5460405163791ac94760e01b81524792919091169063791ac94790611d4d908690600090879030904290600401612476565b600060405180830381600087803b158015611d6757600080fd5b505af1158015611d7b573d6000803e3d6000fd5b505050506000611d9482476119b190919063ffffffff16565b90506000611daf611da6886002611580565b601554906119b1565b90506000611dc460026112368481878d6119bd565b90506000611de183611236601354876119bd90919063ffffffff16565b90506000611dfe84611236601454886119bd90919063ffffffff16565b9050602a60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b158015611e5057600080fd5b505af193505050508015611e62575060015b506018546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611e9d573d6000803e3d6000fd5b508815611f8557601b5460175460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990859060c4016060604051808303818588803b158015611f0f57600080fd5b505af1158015611f23573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f4891906122fa565b505060408051858152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050602f805460ff191690555050505050505050565b601c546000906001600160a01b03163314801590611fbc5750602f5460ff16155b8015611fca575060235460ff165b8015611fe5575043602854602954611fe291906124b2565b11155b8015610e6857505060275447101590565b60275460045461200f91906001600160a01b03166119c9565b436029556027546026546120229161158c565b6026819055602554101561203b576023805460ff191690555b565b601654601c54600091829161206f919061123690612068906001600160a01b038981169116146112c3565b86906119bd565b306000908152600a602052604090205490915061208c908261158c565b306000818152600a6020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906120dd9085815260200190565b60405180910390a36120ef83826119b1565b95945050505050565b80358015158114610c4d57600080fd5b60006020828403121561211a57600080fd5b8135610e148161254e565b6000806040838503121561213857600080fd5b82356121438161254e565b915060208301356121538161254e565b809150509250929050565b60008060006060848603121561217357600080fd5b833561217e8161254e565b9250602084013561218e8161254e565b929592945050506040919091013590565b600080604083850312156121b257600080fd5b82356121bd8161254e565b91506121cb602084016120f8565b90509250929050565b600080604083850312156121e757600080fd5b82356121f28161254e565b946020939093013593505050565b60006020828403121561221257600080fd5b610e14826120f8565b6000806040838503121561222e57600080fd5b6121f2836120f8565b6000806000806080858703121561224d57600080fd5b612256856120f8565b966020860135965060408601359560600135945092505050565b60006020828403121561228257600080fd5b5035919050565b6000806040838503121561229c57600080fd5b823591506121cb602084016120f8565b600080604083850312156122bf57600080fd5b50508035926020909101359150565b6000806000606084860312156122e357600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561230f57600080fd5b8351925060208401519150604084015190509250925092565b600080600080600060a0868803121561234057600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600081518084526020808501945080840160005b8381101561239c5781516001600160a01b031687529582019590820190600101612377565b509495945050505050565b8481526080602082015260006123c06080830186612363565b6001600160a01b03949094166040830152506060015292915050565b600060208083528351808285015260005b81811015612409578581018301518582016040015282016123ed565b8181111561241b576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b85815284602082015260a06040820152600061249560a0830186612363565b6001600160a01b0394909416606083015250608001529392505050565b600082198211156124c5576124c5612522565b500190565b6000826124e757634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561250657612506612522565b500290565b60008282101561251d5761251d612522565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461256357600080fd5b5056fea2646970667358221220d02dd8032ae9d9489c874a86e71982b5bc190cebf6046f762a9ad57edd69f13464736f6c634300080700336080604052600180546001600160a01b031990811673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48179091556002805490911673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790556ec097ce7bc90715b34b9f1000000000600c55610e10600d55678ac7230489e80000600e5534801561007d57600080fd5b50604051610e58380380610e5883398101604081905261009c916100f6565b6001600160a01b0381166100c457737a250d5630b4cf539739df2c5dacb4c659f2488d6100c6565b805b600380546001600160a01b03929092166001600160a01b0319928316179055600080549091163317905550610126565b60006020828403121561010857600080fd5b81516001600160a01b038116811461011f57600080fd5b9392505050565b610d23806101356000396000f3fe6080604052600436106100dd5760003560e01c8063ce7c2ac21161007f578063efca2eed11610059578063efca2eed14610224578063f0fc6bca1461023a578063ffb2c4791461024f578063ffd49c841461026f57600080fd5b8063ce7c2ac2146101af578063d0e30db014610206578063e2d2e2191461020e57600080fd5b80632d48e896116100bb5780632d48e8961461014d5780633a98ef391461016d5780634fab0ae814610183578063997664d71461019957600080fd5b806311ce023d146100e257806314b6ca961461010b57806328fd31981461012d575b600080fd5b3480156100ee57600080fd5b506100f8600c5481565b6040519081526020015b60405180910390f35b34801561011757600080fd5b5061012b610126366004610b16565b610285565b005b34801561013957600080fd5b506100f8610148366004610afb565b6103fd565b34801561015957600080fd5b5061012b610168366004610b94565b610486565b34801561017957600080fd5b506100f860085481565b34801561018f57600080fd5b506100f8600e5481565b3480156101a557600080fd5b506100f860095481565b3480156101bb57600080fd5b506101eb6101ca366004610afb565b60076020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610102565b61012b6104a8565b34801561021a57600080fd5b506100f8600b5481565b34801561023057600080fd5b506100f8600a5481565b34801561024657600080fd5b5061012b6106f5565b34801561025b57600080fd5b5061012b61026a366004610b62565b610700565b34801561027b57600080fd5b506100f8600d5481565b6000546001600160a01b0316331461029c57600080fd5b6001600160a01b038216600090815260076020526040902054156102c3576102c382610800565b6000811180156102e957506001600160a01b038216600090815260076020526040902054155b1561034f57600480546001600160a01b0384166000818152600560205260408120839055600183018455929092527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b0319169091179055610382565b8015801561037457506001600160a01b03821660009081526007602052604090205415155b15610382576103828261092b565b6001600160a01b0382166000908152600760205260409020546008546103b39183916103ad91610a40565b90610a53565b6008556001600160a01b03821660009081526007602052604090208190556103da81610a5f565b6001600160a01b0390921660009081526007602052604090206001019190915550565b6001600160a01b03811660009081526007602052604081205461042257506000919050565b6001600160a01b03821660009081526007602052604081205461044490610a5f565b6001600160a01b038416600090815260076020526040902060010154909150808211610474575060009392505050565b61047e8282610a40565b949350505050565b6000546001600160a01b0316331461049d57600080fd5b600d91909155600e55565b6000546001600160a01b031633146104bf57600080fd5b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b15801561050357600080fd5b505afa158015610517573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053b9190610b7b565b6040805160028082526060820183529293506000929091602083019080368337505060025482519293506001600160a01b03169183915060009061058157610581610cd7565b6001600160a01b03928316602091820292909201015260018054835192169183919081106105b1576105b1610cd7565b6001600160a01b03928316602091820292909201015260035460405163b6f9de9560e01b815291169063b6f9de959034906105f790600090869030904290600401610bb6565b6000604051808303818588803b15801561061057600080fd5b505af1158015610624573d6000803e3d6000fd5b50506001546040516370a0823160e01b8152306004820152600094506106b393508692506001600160a01b03909116906370a082319060240160206040518083038186803b15801561067557600080fd5b505afa158015610689573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ad9190610b7b565b90610a40565b6009549091506106c39082610a53565b600955600854600c546106ed916106e4916106de9085610a82565b90610a8e565b600b5490610a53565b600b55505050565b6106fe33610800565b565b6000546001600160a01b0316331461071757600080fd5b60045480610723575050565b6000805a905060005b848310801561073a57508381105b156107f95783600f541061074e576000600f555b6107806004600f548154811061076657610766610cd7565b6000918252602090912001546001600160a01b0316610a9a565b156107b7576107b76004600f548154811061079d5761079d610cd7565b6000918252602090912001546001600160a01b0316610800565b6107cc6107c55a8490610a40565b8490610a53565b92505a600f805491935060006107e183610c90565b919050555080806107f190610c90565b91505061072c565b5050505050565b6001600160a01b0381166000908152600760205260409020546108205750565b600061082b826103fd565b9050801561092757600a546108409082610a53565b600a5560015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb90604401602060405180830381600087803b15801561089157600080fd5b505af11580156108a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c99190610b40565b506001600160a01b038216600090815260066020908152604080832042905560079091529020600201546108fd9082610a53565b6001600160a01b03831660009081526007602052604090206002810191909155546103da90610a5f565b5050565b6004805461093b90600190610c79565b8154811061094b5761094b610cd7565b60009182526020808320909101546001600160a01b038481168452600590925260409092205460048054929093169291811061098957610989610cd7565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152600591829052604081205460048054919392916109d590600190610c79565b815481106109e5576109e5610cd7565b60009182526020808320909101546001600160a01b031683528201929092526040019020556004805480610a1b57610a1b610cc1565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610a4c8284610c79565b9392505050565b6000610a4c8284610c20565b6000610a7c600c546106de600b5485610a8290919063ffffffff16565b92915050565b6000610a4c8284610c5a565b6000610a4c8284610c38565b600d546001600160a01b03821660009081526006602052604081205490914291610ac49190610c20565b108015610a7c5750600e54610ad8836103fd565b1192915050565b80356001600160a01b0381168114610af657600080fd5b919050565b600060208284031215610b0d57600080fd5b610a4c82610adf565b60008060408385031215610b2957600080fd5b610b3283610adf565b946020939093013593505050565b600060208284031215610b5257600080fd5b81518015158114610a4c57600080fd5b600060208284031215610b7457600080fd5b5035919050565b600060208284031215610b8d57600080fd5b5051919050565b60008060408385031215610ba757600080fd5b50508035926020909101359150565b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015610c005784516001600160a01b031683529383019391830191600101610bdb565b50506001600160a01b039690961660408501525050506060015292915050565b60008219821115610c3357610c33610cab565b500190565b600082610c5557634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615610c7457610c74610cab565b500290565b600082821015610c8b57610c8b610cab565b500390565b6000600019821415610ca457610ca4610cab565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea2646970667358221220c3b0363faeb9dd61ea3477883a895d791358145bc1fd3f4c308247604e4b437564736f6c63430008070033
Deployed Bytecode
0x60806040526004361061036f5760003560e01c8063893d20e8116101c6578063d51ed1c8116100f7578063f1f3bca311610095578063f708a64f1161006f578063f708a64f14610a41578063f84ba65d14610a61578063f887ea4014610a81578063fe9fbb8014610aa157600080fd5b8063f1f3bca3146109e1578063f2fde38b14610a01578063f5cfec0a14610a2157600080fd5b8063df20fd49116100d1578063df20fd491461095d578063e91f214e1461097d578063e96fada2146109a1578063f0b37c04146109c157600080fd5b8063d51ed1c8146108e2578063d806d12f14610902578063dd62ed3e1461091757600080fd5b8063a9059cbb11610164578063b6a5d7de1161013e578063b6a5d7de14610876578063bf56b37114610896578063c6d2577d146108ac578063ca33e64c146108c257600080fd5b8063a9059cbb14610821578063ad5c464814610841578063b210b06d1461086157600080fd5b80639d1944f5116101a05780639d1944f5146107a1578063a4b45c00146107c1578063a51af4c5146107e1578063a8aa1b311461080157600080fd5b8063893d20e81461072357806389ef69f61461075557806395d89b411461077557600080fd5b80632d48e896116102a05780635d0044ca1161023e5780637088fb7f116102185780637088fb7f146106ac57806370a08231146106c15780637d1db4a5146106f757806382247ec01461070d57600080fd5b80635d0044ca14610652578063658d4b7f146106725780636ddd17131461069257600080fd5b80633425c0011161027a5780633425c001146105d85780633bb8a8d4146105f8578063571ac8b0146106125780635c85974f1461063257600080fd5b80632d48e8961461056d5780632f54bf6e1461058d578063313ce567146105bc57600080fd5b80631161ae391161030d5780632375ce40116102e75780632375ce40146104e857806323b872dd14610508578063296020e7146105285780632b112e491461055857600080fd5b80631161ae391461049357806318160ddd146104b3578063201e7991146104c857600080fd5b806304a66b481161034957806304a66b48146103db57806306fdde03146103fb57806307c89fe814610443578063095ea7b31461047357600080fd5b806301339c211461037b5780630445b66714610392578063048c7baf146103bb57600080fd5b3661037657005b600080fd5b34801561038757600080fd5b50610390610ac1565b005b34801561039e57600080fd5b506103a8602e5481565b6040519081526020015b60405180910390f35b3480156103c757600080fd5b506103906103d6366004612237565b610b40565b3480156103e757600080fd5b506103906103f6366004612328565b610b8e565b34801561040757600080fd5b506040805180820190915260168152752ab734bb32b939b0b6102aa9a22190283934b73a32b960511b60208201525b6040516103b291906123dc565b34801561044f57600080fd5b5061046361045e366004612108565b610c04565b60405190151581526020016103b2565b34801561047f57600080fd5b5061046361048e3660046121d4565b610c52565b34801561049f57600080fd5b506104636104ae3660046122ac565b610cbe565b3480156104bf57600080fd5b506007546103a8565b3480156104d457600080fd5b506103906104e33660046122ac565b610cd2565b3480156104f457600080fd5b506103906105033660046122ce565b610d02565b34801561051457600080fd5b5061046361052336600461215e565b610d57565b34801561053457600080fd5b50610463610543366004612108565b60106020526000908152604090205460ff1681565b34801561056457600080fd5b506103a8610e1b565b34801561057957600080fd5b506103906105883660046122ac565b610e6d565b34801561059957600080fd5b506104636105a8366004612108565b6000546001600160a01b0391821691161490565b3480156105c857600080fd5b50604051600681526020016103b2565b3480156105e457600080fd5b506103906105f3366004612108565b610efc565b34801561060457600080fd5b506023546104639060ff1681565b34801561061e57600080fd5b5061046361062d366004612108565b610f47565b34801561063e57600080fd5b5061039061064d366004612270565b610f5b565b34801561065e57600080fd5b5061039061066d366004612270565b610fa1565b34801561067e57600080fd5b5061039061068d36600461219f565b610fe7565b34801561069e57600080fd5b50602d546104639060ff1681565b3480156106b857600080fd5b50610390611037565b3480156106cd57600080fd5b506103a86106dc366004612108565b6001600160a01b03166000908152600a602052604090205490565b34801561070357600080fd5b506103a860085481565b34801561071957600080fd5b506103a860095481565b34801561072f57600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016103b2565b34801561076157600080fd5b50610390610770366004612108565b611094565b34801561078157600080fd5b5060408051808201909152600381526205555560ec1b6020820152610436565b3480156107ad57600080fd5b506103906107bc366004612270565b6110e2565b3480156107cd57600080fd5b506103906107dc366004612125565b61111b565b3480156107ed57600080fd5b50602b5461073d906001600160a01b031681565b34801561080d57600080fd5b50601c5461073d906001600160a01b031681565b34801561082d57600080fd5b5061046361083c3660046121d4565b61116e565b34801561084d57600080fd5b5060035461073d906001600160a01b031681565b34801561086d57600080fd5b5061039061117b565b34801561088257600080fd5b50610390610891366004612108565b6111a7565b3480156108a257600080fd5b506103a8601d5481565b3480156108b857600080fd5b506103a8601e5481565b3480156108ce57600080fd5b5060175461073d906001600160a01b031681565b3480156108ee57600080fd5b506103a86108fd366004612270565b6111f8565b34801561090e57600080fd5b506015546103a8565b34801561092357600080fd5b506103a8610932366004612125565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205490565b34801561096957600080fd5b5061039061097836600461221b565b61123c565b34801561098957600080fd5b506103a86fffffffffffffffffffffffffffffffff81565b3480156109ad57600080fd5b5060185461073d906001600160a01b031681565b3480156109cd57600080fd5b506103906109dc366004612108565b611278565b3480156109ed57600080fd5b506103a86109fc366004612200565b6112c3565b348015610a0d57600080fd5b50610390610a1c366004612108565b6112f8565b348015610a2d57600080fd5b50610390610a3c366004612289565b61138e565b348015610a4d57600080fd5b50610390610a5c36600461219f565b61140e565b348015610a6d57600080fd5b50610390610a7c36600461219f565b611512565b348015610a8d57600080fd5b50601b5461073d906001600160a01b031681565b348015610aad57600080fd5b50610463610abc366004612108565b611562565b610aca33611562565b610aef5760405162461bcd60e51b8152600401610ae690612451565b60405180910390fd5b601d5415610b365760405162461bcd60e51b8152602060048201526014602482015273416c7265616479206c61756e6368656420626f6960601b6044820152606401610ae6565b43601d5542601e55565b610b4933611562565b610b655760405162461bcd60e51b8152600401610ae690612451565b6023805460ff191694151594909417909355602591909155600060265560275560285543602955565b610b9733611562565b610bb35760405162461bcd60e51b8152600401610ae690612451565b6011859055601284905560138390556014829055610bdd82610bd78581898961158c565b9061158c565b6015556016819055610bf06004826124ca565b60155410610bfd57600080fd5b5050505050565b600080546001600160a01b03163314610c2f5760405162461bcd60e51b8152600401610ae690612431565b506001600160a01b03811660009081526010602052604090205460ff165b919050565b336000818152600b602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610cad9086815260200190565b60405180910390a350600192915050565b600082610cca836111f8565b119392505050565b610cdb33611562565b610cf75760405162461bcd60e51b8152600401610ae690612451565b601991909155601a55565b610d0b33611562565b610d275760405162461bcd60e51b8152600401610ae690612451565b6002610d3383856124ca565b11158015610d4057508183115b610d4957600080fd5b601f92909255602055602255565b6007546001600160a01b0384166000908152600b60209081526040808320338452909152812054909114610e06576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600b82528381203382529091529190912054610de1918490611598565b6001600160a01b0385166000908152600b602090815260408083203384529091529020555b610e118484846115c4565b90505b9392505050565b6005546001600160a01b03166000908152600a6020526040812054610e68906004546001600160a01b03166000908152600a6020526040902054610e6290600754906119b1565b906119b1565b905090565b610e7633611562565b610e925760405162461bcd60e51b8152600401610ae690612451565b602a546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b158015610ee057600080fd5b505af1158015610ef4573d6000803e3d6000fd5b505050505050565b6000546001600160a01b03163314610f265760405162461bcd60e51b8152600401610ae690612431565b6001600160a01b03166000908152601060205260409020805460ff19169055565b6000610f5582600754610c52565b92915050565b610f6433611562565b610f805760405162461bcd60e51b8152600401610ae690612451565b6103e8600754610f9091906124ca565b811015610f9c57600080fd5b600855565b610faa33611562565b610fc65760405162461bcd60e51b8152600401610ae690612451565b6103e8600754610fd691906124ca565b811015610fe257600080fd5b600955565b610ff033611562565b61100c5760405162461bcd60e51b8152600401610ae690612451565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146110615760405162461bcd60e51b8152600401610ae690612431565b6040514790339082156108fc029083906000818181858888f19350505050158015611090573d6000803e3d6000fd5b5050565b6000546001600160a01b031633146110be5760405162461bcd60e51b8152600401610ae690612431565b6001600160a01b03166000908152601060205260409020805460ff19166001179055565b6110eb33611562565b6111075760405162461bcd60e51b8152600401610ae690612451565b620b71b0811061111657600080fd5b602c55565b61112433611562565b6111405760405162461bcd60e51b8152600401610ae690612451565b601780546001600160a01b039384166001600160a01b03199182161790915560188054929093169116179055565b6000610e143384846115c4565b61118433611562565b6111a05760405162461bcd60e51b8152600401610ae690612451565b6000602155565b6000546001600160a01b031633146111d15760405162461bcd60e51b8152600401610ae690612431565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6000610f55611205610e1b565b601c546001600160a01b03166000908152600a60205260409020546112369061122f9060026119bd565b85906119bd565b90611580565b61124533611562565b6112615760405162461bcd60e51b8152600401610ae690612451565b602d805460ff191692151592909217909155602e55565b6000546001600160a01b031633146112a25760405162461bcd60e51b8152600401610ae690612431565b6001600160a01b03166000908152600160205260409020805460ff19169055565b600043601d5460016112d591906124b2565b106112e257505060155490565b81156112f057505060155490565b505060155490565b6000546001600160a01b031633146113225760405162461bcd60e51b8152600401610ae690612431565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b61139733611562565b6113b35760405162461bcd60e51b8152600401610ae690612451565b6004546113ca9083906001600160a01b03166119c9565b801561109057426021556022546040519081527f39d2389ec5c1fa77b2c0d374bc61b6d7bd97ccba280fcdeb4e9c7644898d7c3a9060200160405180910390a15050565b61141733611562565b6114335760405162461bcd60e51b8152600401610ae690612451565b6001600160a01b038216301480159061145a5750601c546001600160a01b03838116911614155b61146357600080fd5b6001600160a01b0382166000908152600f60205260409020805460ff191682158015919091179091556114c957602a54604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca9690604401610ec6565b602a546001600160a01b038381166000818152600a602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401610ec6565b61151b33611562565b6115375760405162461bcd60e51b8152600401610ae690612451565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526001602052604090205460ff1690565b6000610e1482846124ca565b6000610e1482846124b2565b600081848411156115bc5760405162461bcd60e51b8152600401610ae691906123dc565b505050900390565b602f5460009060ff16156115e4576115dd848484611ad2565b9050610e14565b601c54737a250d5630b4cf539739df2c5dacb4c659f2488d906000906001600160a01b038681169116148061162a5750816001600160a01b0316856001600160a01b0316145b90506116368685611b75565b8015801561165d57506001600160a01b03851660009081526010602052604090205460ff16155b156116d6576009546001600160a01b0386166000908152600a60205260409020546116899086906124b2565b106116d65760405162461bcd60e51b815260206004820152601d60248201527f4d61782077616c6c657420686173206265656e207472696767657265640000006044820152606401610ae6565b8015611706576116e4611bde565b156116f1576116f1611c2d565b6116f9611f9b565b1561170657611706611ff6565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389166000908152600a9091529190912054611758918690611598565b6001600160a01b0387166000908152600a6020908152604080832093909355600c90529081205460ff161561178d5784611798565b61179887878761203d565b6001600160a01b0387166000908152600a60205260409020549091506117be908261158c565b6001600160a01b038088166000908152600a6020908152604080832094909455918a168152600f909152205460ff1661186257602a546001600160a01b038881166000818152600a602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561184f57600080fd5b505af1925050508015611860575060015b505b6001600160a01b0386166000908152600f602052604090205460ff166118f357602a546001600160a01b038781166000818152600a602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b1580156118e057600080fd5b505af19250505080156118f1575060015b505b602a54602c546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c4799161192b9160040190815260200190565b600060405180830381600087803b15801561194557600080fd5b505af1925050508015611956575060015b50856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161199c91815260200190565b60405180910390a35060019695505050505050565b6000610e14828461250b565b6000610e1482846124ec565b602f805460ff19166001179055604080516002808252606082018352600092602083019080368337505060035482519293506001600160a01b031691839150600090611a1757611a17612538565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611a4b57611a4b612538565b6001600160a01b039283166020918202929092010152601b5460405163b6f9de9560e01b815291169063b6f9de95908590611a91906000908690889042906004016123a7565b6000604051808303818588803b158015611aaa57600080fd5b505af1158015611abe573d6000803e3d6000fd5b5050602f805460ff19169055505050505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600a90915291822054611b23918490611598565b6001600160a01b038086166000908152600a60205260408082209390935590851681522054611b52908361158c565b6001600160a01b0384166000908152600a60205260409020555060019392505050565b60085481111580611b9e57506001600160a01b0382166000908152600e602052604090205460ff165b6110905760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610ae6565b601c546000906001600160a01b03163314801590611bff5750602f5460ff16155b8015611c0d5750602d5460ff165b8015610e68575050602e54306000908152600a6020526040902054101590565b602f805460ff19166001179055601954601a54600091611c4c91610cbe565b611c5857601154611c5b565b60005b90506000611c7f600261123660155461123686602e546119bd90919063ffffffff16565b90506000611c9882602e546119b190919063ffffffff16565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611cd257611cd2612538565b6001600160a01b039283166020918202929092010152600354825191169082906001908110611d0357611d03612538565b6001600160a01b039283166020918202929092010152601b5460405163791ac94760e01b81524792919091169063791ac94790611d4d908690600090879030904290600401612476565b600060405180830381600087803b158015611d6757600080fd5b505af1158015611d7b573d6000803e3d6000fd5b505050506000611d9482476119b190919063ffffffff16565b90506000611daf611da6886002611580565b601554906119b1565b90506000611dc460026112368481878d6119bd565b90506000611de183611236601354876119bd90919063ffffffff16565b90506000611dfe84611236601454886119bd90919063ffffffff16565b9050602a60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b158015611e5057600080fd5b505af193505050508015611e62575060015b506018546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611e9d573d6000803e3d6000fd5b508815611f8557601b5460175460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990859060c4016060604051808303818588803b158015611f0f57600080fd5b505af1158015611f23573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f4891906122fa565b505060408051858152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050602f805460ff191690555050505050505050565b601c546000906001600160a01b03163314801590611fbc5750602f5460ff16155b8015611fca575060235460ff165b8015611fe5575043602854602954611fe291906124b2565b11155b8015610e6857505060275447101590565b60275460045461200f91906001600160a01b03166119c9565b436029556027546026546120229161158c565b6026819055602554101561203b576023805460ff191690555b565b601654601c54600091829161206f919061123690612068906001600160a01b038981169116146112c3565b86906119bd565b306000908152600a602052604090205490915061208c908261158c565b306000818152600a6020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906120dd9085815260200190565b60405180910390a36120ef83826119b1565b95945050505050565b80358015158114610c4d57600080fd5b60006020828403121561211a57600080fd5b8135610e148161254e565b6000806040838503121561213857600080fd5b82356121438161254e565b915060208301356121538161254e565b809150509250929050565b60008060006060848603121561217357600080fd5b833561217e8161254e565b9250602084013561218e8161254e565b929592945050506040919091013590565b600080604083850312156121b257600080fd5b82356121bd8161254e565b91506121cb602084016120f8565b90509250929050565b600080604083850312156121e757600080fd5b82356121f28161254e565b946020939093013593505050565b60006020828403121561221257600080fd5b610e14826120f8565b6000806040838503121561222e57600080fd5b6121f2836120f8565b6000806000806080858703121561224d57600080fd5b612256856120f8565b966020860135965060408601359560600135945092505050565b60006020828403121561228257600080fd5b5035919050565b6000806040838503121561229c57600080fd5b823591506121cb602084016120f8565b600080604083850312156122bf57600080fd5b50508035926020909101359150565b6000806000606084860312156122e357600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561230f57600080fd5b8351925060208401519150604084015190509250925092565b600080600080600060a0868803121561234057600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600081518084526020808501945080840160005b8381101561239c5781516001600160a01b031687529582019590820190600101612377565b509495945050505050565b8481526080602082015260006123c06080830186612363565b6001600160a01b03949094166040830152506060015292915050565b600060208083528351808285015260005b81811015612409578581018301518582016040015282016123ed565b8181111561241b576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b85815284602082015260a06040820152600061249560a0830186612363565b6001600160a01b0394909416606083015250608001529392505050565b600082198211156124c5576124c5612522565b500190565b6000826124e757634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561250657612506612522565b500290565b60008282101561251d5761251d612522565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461256357600080fd5b5056fea2646970667358221220d02dd8032ae9d9489c874a86e71982b5bc190cebf6046f762a9ad57edd69f13464736f6c63430008070033
Deployed Bytecode Sourcemap
13155:16719:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26392:187;;;;;;;;;;;;;:::i;:::-;;15541:50;;;;;;;;;;;;;;;;;;;10271:25:1;;;10259:2;10244:18;15541:50:0;;;;;;;;25577:359;;;;;;;;;;-1:-1:-1;25577:359:0;;;;;:::i;:::-;;:::i;27848:496::-;;;;;;;;;;-1:-1:-1;27848:496:0;;;;;:::i;:::-;;:::i;17149:80::-;;;;;;;;;;-1:-1:-1;17221:5:0;;;;;;;;;;;;-1:-1:-1;;;17221:5:0;;;;17149:80;;;;;;;:::i;27729:111::-;;;;;;;;;;-1:-1:-1;27729:111:0;;;;;:::i;:::-;;:::i;:::-;;;7028:14:1;;7021:22;7003:41;;6991:2;6976:18;27729:111:0;6863:187:1;17652:216:0;;;;;;;;;;-1:-1:-1;17652:216:0;;;;;:::i;:::-;;:::i;29603:150::-;;;;;;;;;;-1:-1:-1;29603:150:0;;;;;:::i;:::-;;:::i;16879:88::-;;;;;;;;;;-1:-1:-1;16952:12:0;;16879:88;;28752:183;;;;;;;;;;-1:-1:-1;28752:183:0;;;;;:::i;:::-;;:::i;25944:342::-;;;;;;;;;;-1:-1:-1;25944:342:0;;;;;:::i;:::-;;:::i;18165:365::-;;;;;;;;;;-1:-1:-1;18165:365:0;;;;;:::i;:::-;;:::i;14261:40::-;;;;;;;;;;-1:-1:-1;14261:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;29278:142;;;;;;;;;;;;;:::i;28943:183::-;;;;;;;;;;-1:-1:-1;28943:183:0;;;;;:::i;:::-;;:::i;4955:103::-;;;;;;;;;;-1:-1:-1;4955:103:0;;;;;:::i;:::-;5010:4;5045:5;-1:-1:-1;;;;;5034:16:0;;;5045:5;;5034:16;;4955:103;16973:80;;;;;;;;;;-1:-1:-1;16973:80:0;;13760:1;11289:36:1;;11277:2;11262:18;16973:80:0;11147:184:1;27623:94:0;;;;;;;;;;-1:-1:-1;27623:94:0;;;;;:::i;:::-;;:::i;15125:38::-;;;;;;;;;;-1:-1:-1;15125:38:0;;;;;;;;17876:117;;;;;;;;;;-1:-1:-1;17876:117:0;;;;;:::i;:::-;;:::i;26744:145::-;;;;;;;;;;-1:-1:-1;26744:145:0;;;;;:::i;:::-;;:::i;26591:::-;;;;;;;;;;-1:-1:-1;26591:145:0;;;;;:::i;:::-;;:::i;27252:120::-;;;;;;;;;;-1:-1:-1;27252:120:0;;;;;:::i;:::-;;:::i;15504:30::-;;;;;;;;;;-1:-1:-1;15504:30:0;;;;;;;;25425:142;;;;;;;;;;;;;:::i;17400:105::-;;;;;;;;;;-1:-1:-1;17400:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;17484:18:0;17466:7;17484:18;;;:9;:18;;;;;;;17400:105;13829:50;;;;;;;;;;;;;;;;13892:48;;;;;;;;;;;;;;;;17235:78;;;;;;;;;;-1:-1:-1;17287:7:0;17305:5;-1:-1:-1;;;;;17305:5:0;17235:78;;;-1:-1:-1;;;;;5425:32:1;;;5407:51;;5395:2;5380:18;17235:78:0;5261:203:1;27520:91:0;;;;;;;;;;-1:-1:-1;27520:91:0;;;;;:::i;:::-;;:::i;17059:84::-;;;;;;;;;;-1:-1:-1;17133:7:0;;;;;;;;;;;;-1:-1:-1;;;17133:7:0;;;;17059:84;;29134:136;;;;;;;;;;-1:-1:-1;29134:136:0;;;;;:::i;:::-;;:::i;28352:228::-;;;;;;;;;;-1:-1:-1;28352:228:0;;;;;:::i;:::-;;:::i;15422:33::-;;;;;;;;;;-1:-1:-1;15422:33:0;;;;-1:-1:-1;;;;;15422:33:0;;;14830:19;;;;;;;;;;-1:-1:-1;14830:19:0;;;;-1:-1:-1;;;;;14830:19:0;;;18001:156;;;;;;;;;;-1:-1:-1;18001:156:0;;;;;:::i;:::-;;:::i;13362:64::-;;;;;;;;;;-1:-1:-1;13362:64:0;;;;-1:-1:-1;;;;;13362:64:0;;;24628:105;;;;;;;;;;;;;:::i;4628:94::-;;;;;;;;;;-1:-1:-1;4628:94:0;;;;;:::i;:::-;;:::i;14858:25::-;;;;;;;;;;;;;;;;14890:34;;;;;;;;;;;;;;;;14507:79;;;;;;;;;;-1:-1:-1;14507:79:0;;;;-1:-1:-1;;;;;14507:79:0;;;29428:167;;;;;;;;;;-1:-1:-1;29428:167:0;;;;;:::i;:::-;;:::i;21025:691::-;;;;;;;;;;-1:-1:-1;21700:8:0;;21025:691;;17511:133;;;;;;;;;;-1:-1:-1;17511:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;17613:19:0;;;17595:7;17613:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;17511:133;28588:156;;;;;;;;;;-1:-1:-1;28588:156:0;;;;;:::i;:::-;;:::i;13230:48::-;;;;;;;;;;-1:-1:-1;13230:48:0;13261:17;13230:48;;14607:78;;;;;;;;;;-1:-1:-1;14607:78:0;;;;-1:-1:-1;;;;;14607:78:0;;;4798:97;;;;;;;;;;-1:-1:-1;4798:97:0;;;;;:::i;:::-;;:::i;20813:204::-;;;;;;;;;;-1:-1:-1;20813:204:0;;;;;:::i;:::-;;:::i;5355:173::-;;;;;;;;;;-1:-1:-1;5355:173:0;;;;;:::i;:::-;;:::i;24304:316::-;;;;;;;;;;-1:-1:-1;24304:316:0;;;;;:::i;:::-;;:::i;26897:347::-;;;;;;;;;;-1:-1:-1;26897:347:0;;;;;:::i;:::-;;:::i;27380:128::-;;;;;;;;;;-1:-1:-1;27380:128:0;;;;;:::i;:::-;;:::i;14799:24::-;;;;;;;;;;-1:-1:-1;14799:24:0;;;;-1:-1:-1;;;;;14799:24:0;;;5129:107;;;;;;;;;;-1:-1:-1;5129:107:0;;;;;:::i;:::-;;:::i;26392:187::-;4513:24;4526:10;4513:12;:24::i;:::-;4505:48;;;;-1:-1:-1;;;4505:48:0;;;;;;;:::i;:::-;;;;;;;;;26447:10:::1;::::0;:15;26439:48:::1;;;::::0;-1:-1:-1;;;26439:48:0;;9304:2:1;26439:48:0::1;::::0;::::1;9286:21:1::0;9343:2;9323:18;;;9316:30;-1:-1:-1;;;9362:18:1;;;9355:50;9422:18;;26439:48:0::1;9102:344:1::0;26439:48:0::1;26511:12;26498:10;:25:::0;26556:15:::1;26534:19;:37:::0;26392:187::o;25577:359::-;4513:24;4526:10;4513:12;:24::i;:::-;4505:48;;;;-1:-1:-1;;;4505:48:0;;;;;;;:::i;:::-;25703:18:::1;:29:::0;;-1:-1:-1;;25703:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;25743:14:::1;:21:::0;;;;-1:-1:-1;25775:22:0::1;:26:::0;25812:17:::1;:27:::0;25850:22:::1;:32:::0;25916:12:::1;25893:20;:35:::0;25577:359::o;27848:496::-;4513:24;4526:10;4513:12;:24::i;:::-;4505:48;;;;-1:-1:-1;;;4505:48:0;;;;;;;:::i;:::-;28012:12:::1;:28:::0;;;28051:10:::1;:24:::0;;;28086:13:::1;:30:::0;;;28127:12:::1;:28:::0;;;28177:69:::1;28142:13:::0;28177:50:::1;28102:14:::0;28177:50;28027:13;28064:11;28177:17:::1;:30::i;:::-;:34:::0;::::1;:50::i;:69::-;28166:8;:80:::0;28257:14:::1;:32:::0;;;28319:16:::1;28334:1;28274:15:::0;28319:16:::1;:::i;:::-;28308:8;;:27;28300:36;;;::::0;::::1;;27848:496:::0;;;;;:::o;27729:111::-;27794:4;5045:5;;-1:-1:-1;;;;;5045:5:0;4352:10;5034:16;4336:38;;;;-1:-1:-1;;;4336:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;27817:15:0;::::1;;::::0;;;:7:::1;:15;::::0;;;;;::::1;;4376:1;27729:111:::0;;;:::o;17652:216::-;17756:10;17727:4;17744:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;17744:32:0;;;;;;;;;;:41;;;17801:37;17727:4;;17744:32;;17801:37;;;;17779:6;10271:25:1;;10259:2;10244:18;;10125:177;17801:37:0;;;;;;;;-1:-1:-1;17856:4:0;17652:216;;;;:::o;29603:150::-;29683:4;29739:6;29707:29;29727:8;29707:19;:29::i;:::-;:38;;29603:150;-1:-1:-1;;;29603:150:0:o;28752:183::-;4513:24;4526:10;4513:12;:24::i;:::-;4505:48;;;;-1:-1:-1;;;4505:48:0;;;;;;;:::i;:::-;28850:15:::1;:25:::0;;;;28886:26:::1;:41:::0;28752:183::o;25944:342::-;4513:24;4526:10;4513:12;:24::i;:::-;4505:48;;;;-1:-1:-1;;;4505:48:0;;;;;;;:::i;:::-;26104:1:::1;26077:23;26089:11:::0;26077:9;:23:::1;:::i;:::-;:28;;:55;;;;;26121:11;26109:9;:23;26077:55;26069:64;;;::::0;::::1;;26144:26;:38:::0;;;;26193:28:::1;:42:::0;26246:23:::1;:32:::0;25944:342::o;18165:365::-;18320:12;;-1:-1:-1;;;;;18285:19:0;;18265:4;18285:19;;;:11;:19;;;;;;;;18305:10;18285:31;;;;;;;;18265:4;;18285:47;18282:181;;18382:69;;;;;;;;;;;-1:-1:-1;;;18382:69:0;;;;;;;;-1:-1:-1;;;;;18382:19:0;;-1:-1:-1;18382:19:0;;;:11;:19;;;;;18402:10;18382:31;;;;;;;;;;:69;;18418:6;;18382:35;:69::i;:::-;-1:-1:-1;;;;;18348:19:0;;;;;;:11;:19;;;;;;;;18368:10;18348:31;;;;;;;:103;18282:181;18482:40;18496:6;18504:9;18515:6;18482:13;:40::i;:::-;18475:47;;18165:365;;;;;;:::o;29278:142::-;29406:4;;-1:-1:-1;;;;;29406:4:0;29331:7;17484:18;;;:9;:18;;;;;;29358:54;;29385:4;;-1:-1:-1;;;;;29385:4:0;17466:7;17484:18;;;:9;:18;;;;;;29358:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;29351:61;;29278:142;:::o;28943:183::-;4513:24;4526:10;4513:12;:24::i;:::-;4505:48;;;;-1:-1:-1;;;4505:48:0;;;;;;;:::i;:::-;29053:11:::1;::::0;:65:::1;::::0;-1:-1:-1;;;29053:65:0;;::::1;::::0;::::1;11068:25:1::0;;;11109:18;;;11102:34;;;-1:-1:-1;;;;;29053:11:0;;::::1;::::0;:35:::1;::::0;11041:18:1;;29053:65:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;28943:183:::0;;:::o;27623:94::-;5010:4;5045:5;-1:-1:-1;;;;;5045:5:0;4352:10;5034:16;4336:38;;;;-1:-1:-1;;;4336:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27686:15:0::1;27704:5;27686:15:::0;;;:7:::1;:15;::::0;;;;:23;;-1:-1:-1;;27686:23:0::1;::::0;;27623:94::o;17876:117::-;17931:4;17955:30;17963:7;17972:12;;17955:7;:30::i;:::-;17948:37;17876:117;-1:-1:-1;;17876:117:0:o;26744:145::-;4513:24;4526:10;4513:12;:24::i;:::-;4505:48;;;;-1:-1:-1;;;4505:48:0;;;;;;;:::i;:::-;26844:4:::1;26829:12;;:19;;;;:::i;:::-;26819:6;:29;;26811:38;;;::::0;::::1;;26860:12;:21:::0;26744:145::o;26591:::-;4513:24;4526:10;4513:12;:24::i;:::-;4505:48;;;;-1:-1:-1;;;4505:48:0;;;;;;;:::i;:::-;26693:4:::1;26678:12;;:19;;;;:::i;:::-;26668:6;:29;;26660:38;;;::::0;::::1;;26709:10;:19:::0;26591:145::o;27252:120::-;4513:24;4526:10;4513:12;:24::i;:::-;4505:48;;;;-1:-1:-1;;;4505:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27336:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;27336:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27252:120::o;25425:142::-;5010:4;5045:5;-1:-1:-1;;;;;5045:5:0;4352:10;5034:16;4336:38;;;;-1:-1:-1;;;4336:38:0;;;;;;;:::i;:::-;25522:37:::1;::::0;25490:21:::1;::::0;25530:10:::1;::::0;25522:37;::::1;;;::::0;25490:21;;25472:15:::1;25522:37:::0;25472:15;25522:37;25490:21;25530:10;25522:37;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;25461:106;25425:142::o:0;27520:91::-;5010:4;5045:5;-1:-1:-1;;;;;5045:5:0;4352:10;5034:16;4336:38;;;;-1:-1:-1;;;4336:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27581:15:0::1;;::::0;;;:7:::1;:15;::::0;;;;:22;;-1:-1:-1;;27581:22:0::1;27599:4;27581:22;::::0;;27520:91::o;29134:136::-;4513:24;4526:10;4513:12;:24::i;:::-;4505:48;;;;-1:-1:-1;;;4505:48:0;;;;;;;:::i;:::-;29224:6:::1;29218:3;:12;29210:21;;;::::0;::::1;;29242:14;:20:::0;29134:136::o;28352:228::-;4513:24;4526:10;4513:12;:24::i;:::-;4505:48;;;;-1:-1:-1;;;4505:48:0;;;;;;;:::i;:::-;28471:21:::1;:46:::0;;-1:-1:-1;;;;;28471:46:0;;::::1;-1:-1:-1::0;;;;;;28471:46:0;;::::1;;::::0;;;28528:20:::1;:44:::0;;;;;::::1;::::0;::::1;;::::0;;28352:228::o;18001:156::-;18081:4;18105:44;18119:10;18131:9;18142:6;18105:13;:44::i;24628:105::-;4513:24;4526:10;4513:12;:24::i;:::-;4505:48;;;;-1:-1:-1;;;4505:48:0;;;;;;;:::i;:::-;24724:1:::1;24693:28;:32:::0;24628:105::o;4628:94::-;5010:4;5045:5;-1:-1:-1;;;;;5045:5:0;4352:10;5034:16;4336:38;;;;-1:-1:-1;;;4336:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4688:19:0::1;;::::0;;;4710:4:::1;4688:19;::::0;;;;;;;:26;;-1:-1:-1;;4688:26:0::1;::::0;;::::1;::::0;;4628:94::o;29428:167::-;29496:7;29523:64;29564:22;:20;:22::i;:::-;29546:4;;-1:-1:-1;;;;;29546:4:0;17466:7;17484:18;;;:9;:18;;;;;;29523:36;;29536:22;;29556:1;29536:19;:22::i;:::-;29523:8;;:12;:36::i;:::-;:40;;:64::i;28588:156::-;4513:24;4526:10;4513:12;:24::i;:::-;4505:48;;;;-1:-1:-1;;;4505:48:0;;;;;;;:::i;:::-;28680:11:::1;:22:::0;;-1:-1:-1;;28680:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;28713:13:::1;:23:::0;28588:156::o;4798:97::-;5010:4;5045:5;-1:-1:-1;;;;;5045:5:0;4352:10;5034:16;4336:38;;;;-1:-1:-1;;;4336:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4860:19:0::1;4882:5;4860:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;4860:27:0::1;::::0;;4798:97::o;20813:204::-;20869:7;20910:12;20892:10;;20905:1;20892:14;;;;:::i;:::-;:30;20889:54;;-1:-1:-1;;20932:8:0;;;20813:204::o;20889:54::-;20956:7;20953:31;;;-1:-1:-1;;20973:8:0;;;20813:204::o;20953:31::-;-1:-1:-1;;21001:8:0;;;20813:204::o;5355:173::-;5010:4;5045:5;-1:-1:-1;;;;;5045:5:0;4352:10;5034:16;4336:38;;;;-1:-1:-1;;;4336:38:0;;;;;;;:::i;:::-;5431:5:::1;:11:::0;;-1:-1:-1;;;;;;5431:11:0::1;-1:-1:-1::0;;;;;5431:11:0;::::1;::::0;;::::1;::::0;;5453:19;;;-1:-1:-1;5453:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;5453:26:0::1;::::0;;::::1;::::0;;;5495:25;;5407:51:1;;;5495:25:0::1;::::0;5380:18:1;5495:25:0::1;;;;;;;5355:173:::0;:::o;24304:316::-;4513:24;4526:10;4513:12;:24::i;:::-;4505:48;;;;-1:-1:-1;;;4505:48:0;;;;;;;:::i;:::-;24428:4:::1;::::0;24410:23:::1;::::0;24420:6;;-1:-1:-1;;;;;24428:4:0::1;24410:9;:23::i;:::-;24447:24;24444:169;;;24518:15;24487:28;:46:::0;24577:23:::1;::::0;24553:48:::1;::::0;10271:25:1;;;24553:48:0::1;::::0;10259:2:1;10244:18;24553:48:0::1;;;;;;;24304:316:::0;;:::o;26897:347::-;4513:24;4526:10;4513:12;:24::i;:::-;4505:48;;;;-1:-1:-1;;;4505:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26994:23:0;::::1;27012:4;26994:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;27031:4:0::1;::::0;-1:-1:-1;;;;;27021:14:0;;::::1;27031:4:::0;::::1;27021:14;;26994:41;26986:50;;;::::0;::::1;;-1:-1:-1::0;;;;;27047:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;27047:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;27091:146:::1;;27116:11;::::0;:31:::1;::::0;-1:-1:-1;;;27116:31:0;;-1:-1:-1;;;;;5885:32:1;;;27116:31:0::1;::::0;::::1;5867:51:1::0;27116:11:0::1;5934:18:1::0;;;5927:34;27116:11:0;;::::1;::::0;:20:::1;::::0;5840:18:1;;27116:31:0::1;5685:282:1::0;27091:146:0::1;27178:11;::::0;-1:-1:-1;;;;;27207:17:0;;::::1;27178:11;27207:17:::0;;;:9:::1;:17;::::0;;;;;;;27178:47;;-1:-1:-1;;;27178:47:0;;::::1;::::0;::::1;5867:51:1::0;;;;5934:18;;;5927:34;27178:11:0;::::1;::::0;:20:::1;::::0;5840:18:1;;27178:47:0::1;5685:282:1::0;27380:128:0;4513:24;4526:10;4513:12;:24::i;:::-;4505:48;;;;-1:-1:-1;;;4505:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27468:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;27468:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27380:128::o;5129:107::-;-1:-1:-1;;;;;5209:19:0;5185:4;5209:19;;;:14;:19;;;;;;;;;5129:107::o;2230:98::-;2288:7;2315:5;2319:1;2315;:5;:::i;1912:98::-;1970:7;1997:5;2001:1;1997;:5;:::i;2442:206::-;2528:7;2589:12;2581:6;;;;2573:29;;;;-1:-1:-1;;;2573:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2624:5:0;;;2442:206::o;18538:1627::-;18650:6;;18630:4;;18650:6;;18647:63;;;18666:41;18681:6;18689:9;18700:6;18666:14;:41::i;:::-;18659:48;;;;18647:63;18922:4;;18781:42;;18757:21;;-1:-1:-1;;;;;18910:16:0;;;18922:4;;18910:16;;:45;;;18942:13;-1:-1:-1;;;;;18929:26:0;:9;-1:-1:-1;;;;;18929:26:0;;18910:45;18898:57;;18976:28;18989:6;18997;18976:12;:28::i;:::-;19085:6;19084:7;:30;;;;-1:-1:-1;;;;;;19096:18:0;;;;;;:7;:18;;;;;;;;19095:19;19084:30;19080:148;;;19172:10;;-1:-1:-1;;;;;19139:20:0;;;;;;:9;:20;;;;;;:29;;19162:6;;19139:29;:::i;:::-;19138:44;19130:86;;;;-1:-1:-1;;;19130:86:0;;8946:2:1;19130:86:0;;;8928:21:1;8985:2;8965:18;;;8958:30;9024:31;9004:18;;;8997:59;9073:18;;19130:86:0;8744:353:1;19130:86:0;19290:6;19286:135;;;19316:16;:14;:16::i;:::-;19313:35;;;19335:10;:8;:10::i;:::-;19365:19;:17;:19::i;:::-;19362:48;;;19387:20;:18;:20::i;:::-;19554:53;;;;;;;;;;;-1:-1:-1;;;19554:53:0;;;;;;;;-1:-1:-1;;;;;19554:17:0;;-1:-1:-1;19554:17:0;;;:9;:17;;;;;;;;:53;;19576:6;;19554:21;:53::i;:::-;-1:-1:-1;;;;;19534:17:0;;;;;;:9;:17;;;;;;;;:73;;;;20778:11;:19;;;;;;;;20777:20;19645:67;;19706:6;19645:67;;;19669:34;19677:6;19685:9;19696:6;19669:7;:34::i;:::-;-1:-1:-1;;;;;19748:20:0;;;;;;:9;:20;;;;;;19620:92;;-1:-1:-1;19748:40:0;;19620:92;19748:24;:40::i;:::-;-1:-1:-1;;;;;19725:20:0;;;;;;;:9;:20;;;;;;;;:63;;;;19805:24;;;;;:16;:24;;;;;;;19801:96;;19836:11;;-1:-1:-1;;;;;19865:17:0;;;19836:11;19865:17;;;:9;:17;;;;;;;;19836:47;;-1:-1:-1;;;19836:47:0;;;;;5867:51:1;;;;5934:18;;;5927:34;19836:11:0;;;:20;;5840:18:1;;19836:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19832:63;;-1:-1:-1;;;;;19911:27:0;;;;;;:16;:27;;;;;;;;19907:105;;19945:11;;-1:-1:-1;;;;;19977:20:0;;;19945:11;19977:20;;;:9;:20;;;;;;;;19945:53;;-1:-1:-1;;;19945:53:0;;;;;5867:51:1;;;;5934:18;;;5927:34;19945:11:0;;;:20;;5840:18:1;;19945:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19941:69;;20028:11;;20048:14;;20028:35;;-1:-1:-1;;;;;;20028:35:0;;-1:-1:-1;;;;;20028:11:0;;;;:19;;:35;;;;10271:25:1;;;10259:2;10244:18;;10125:177;20028:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20024:51;20109:9;-1:-1:-1;;;;;20092:43:0;20101:6;-1:-1:-1;;;;;20092:43:0;;20120:14;20092:43;;;;10271:25:1;;10259:2;10244:18;;10125:177;20092:43:0;;;;;;;;-1:-1:-1;20153:4:0;;18538:1627;-1:-1:-1;;;;;;18538:1627:0:o;2018:98::-;2076:7;2103:5;2107:1;2103;:5;:::i;2124:98::-;2182:7;2209:5;2213:1;2209;:5;:::i;25052:361::-;15647:6;:13;;-1:-1:-1;;15647:13:0;15656:4;15647:13;;;25152:16:::1;::::0;;25166:1:::1;25152:16:::0;;;;;::::1;::::0;;-1:-1:-1;;25152:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;25189:4:0::1;::::0;25179:7;;;;-1:-1:-1;;;;;;25189:4:0::1;::::0;25179:7;;-1:-1:-1;25189:4:0::1;::::0;25179:7:::1;;;;:::i;:::-;;;;;;:14;-1:-1:-1::0;;;;;25179:14:0::1;;;-1:-1:-1::0;;;;;25179:14:0::1;;;::::0;::::1;25222:4;25204;25209:1;25204:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;25204:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;25240:6:::1;::::0;:165:::1;::::0;-1:-1:-1;;;25240:165:0;;:6;::::1;::::0;:57:::1;::::0;25305:6;;25240:165:::1;::::0;:6:::1;::::0;25343:4;;25362:2;;25379:15:::1;::::0;25240:165:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;15665:6:0;:14;;-1:-1:-1;;15665:14:0;;;-1:-1:-1;;;;;;25052:361:0:o;20173:332::-;20303:53;;;;;;;;;;;-1:-1:-1;;;20303:53:0;;;;;;;;-1:-1:-1;;;;;20303:17:0;;20266:4;20303:17;;;:9;:17;;;;;;;:53;;20325:6;;20303:21;:53::i;:::-;-1:-1:-1;;;;;20283:17:0;;;;;;;:9;:17;;;;;;:73;;;;20390:20;;;;;;;:32;;20415:6;20390:24;:32::i;:::-;-1:-1:-1;;;;;20367:20:0;;;;;;:9;:20;;;;;:55;-1:-1:-1;20493:4:0;20173:332;;;;;:::o;20517:166::-;20614:12;;20604:6;:22;;:49;;;-1:-1:-1;;;;;;20630:23:0;;;;;;:15;:23;;;;;;;;20604:49;20596:79;;;;-1:-1:-1;;;20596:79:0;;8600:2:1;20596:79:0;;;8582:21:1;8639:2;8619:18;;;8612:30;-1:-1:-1;;;8658:18:1;;;8651:47;8715:18;;20596:79:0;8398:341:1;22104:197:0;22191:4;;22153;;-1:-1:-1;;;;;22191:4:0;22177:10;:18;;;;:38;;-1:-1:-1;22209:6:0;;;;22208:7;22177:38;:62;;;;-1:-1:-1;22228:11:0;;;;22177:62;:116;;;;-1:-1:-1;;22280:13:0;;22270:4;22252:24;;;;:9;:24;;;;;;:41;;;22104:197::o;22309:1661::-;15647:6;:13;;-1:-1:-1;;15647:13:0;15656:4;15647:13;;;22404:15:::1;::::0;22421:26:::1;::::0;15647:6;;22388:60:::1;::::0;:15:::1;:60::i;:::-;:79;;22455:12;;22388:79;;;22451:1;22388:79;22358:109;;22478:23;22504:59;22561:1;22504:52;22547:8;;22504:38;22522:19;22504:13;;:17;;:38;;;;:::i;:59::-;22478:85;;22574:20;22597:34;22615:15;22597:13;;:17;;:34;;;;:::i;:::-;22668:16;::::0;;22682:1:::1;22668:16:::0;;;;;::::1;::::0;;22574:57;;-1:-1:-1;22644:21:0::1;::::0;22668:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;22668:16:0::1;22644:40;;22713:4;22695;22700:1;22695:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22695:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;22739:4:::1;::::0;22729:7;;22739:4;::::1;::::0;22729;;22739;;22729:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;22729:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;22812:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;22812:188:0;;22778:21:::1;::::0;22812:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;22884:12;;22754:21:::1;::::0;22927:4;;22954::::1;::::0;22974:15:::1;::::0;22812:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;23013:17;23033:40;23059:13;23033:21;:25;;:40;;;;:::i;:::-;23013:60:::0;-1:-1:-1;23086:19:0::1;23108:40;23121:26;:19:::0;23145:1:::1;23121:23;:26::i;:::-;23108:8;::::0;;:12:::1;:40::i;:::-;23086:62:::0;-1:-1:-1;23161:26:0::1;23190:58;23246:1;23190:51;23086:62:::0;23190:51;:9;23204:19;23190:13:::1;:34::i;:58::-;23161:87;;23259:27;23289:45;23322:11;23289:28;23303:13;;23289:9;:13;;:28;;;;:::i;:45::-;23259:75;;23345:26;23374:44;23406:11;23374:27;23388:12;;23374:9;:13;;:27;;;;:::i;:44::-;23345:73;;23435:11;;;;;;;;;-1:-1:-1::0;;;;;23435:11:0::1;-1:-1:-1::0;;;;;23435:19:0::1;;23462;23435:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;23431:65:::0;23514:20:::1;::::0;23506:58:::1;::::0;-1:-1:-1;;;;;23514:20:0;;::::1;::::0;23506:58;::::1;;;::::0;23545:18;;23514:20:::1;23506:58:::0;23514:20;23506:58;23545:18;23514:20;23506:58;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;23604:19:0;;23601:362:::1;;23639:6;::::0;23813:21:::1;::::0;23639:244:::1;::::0;-1:-1:-1;;;23639:244:0;;23715:4:::1;23639:244;::::0;::::1;6592:34:1::0;6642:18;;;6635:34;;;23639:6:0::1;6685:18:1::0;;;6678:34;;;6728:18;;;6721:34;-1:-1:-1;;;;;23813:21:0;;::::1;6771:19:1::0;;;6764:44;23853:15:0::1;6824:19:1::0;;;6817:35;23639:6:0;::::1;::::0;:22:::1;::::0;23669:18;;6526:19:1;;23639:244:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;23903:48:0::1;::::0;;11068:25:1;;;11124:2;11109:18;;11102:34;;;23903:48:0::1;::::0;-1:-1:-1;11041:18:1;23903:48:0::1;;;;;;;23601:362;-1:-1:-1::0;;15665:6:0;:14;;-1:-1:-1;;15665:14:0;;;-1:-1:-1;;;;;;;;22309:1661:0:o;23978:318::-;24068:4;;24030;;-1:-1:-1;;;;;24068:4:0;24054:10;:18;;;;:38;;-1:-1:-1;24086:6:0;;;;24085:7;24054:38;:69;;;;-1:-1:-1;24105:18:0;;;;24054:69;:143;;;;;24185:12;24159:22;;24136:20;;:45;;;;:::i;:::-;:61;;24054:143;:234;;;;-1:-1:-1;;24271:17:0;;24246:21;:42;;;23978:318::o;24741:303::-;24801:17;;24820:4;;24791:34;;24801:17;-1:-1:-1;;;;;24820:4:0;24791:9;:34::i;:::-;24859:12;24836:20;:35;24934:17;;24907:22;;:45;;:26;:45::i;:::-;24882:22;:70;;;24991:14;;-1:-1:-1;24963:74:0;;;25008:18;:26;;-1:-1:-1;;25008:26:0;;;24963:74;24741:303::o;21724:372::-;21895:14;;21884:4;;21809:7;;;;21849:61;;21895:14;21849:41;;21860:29;;-1:-1:-1;;;;;21872:16:0;;;21884:4;;21872:16;21860:11;:29::i;:::-;21849:6;;:10;:41::i;:61::-;21968:4;21950:24;;;;:9;:24;;;;;;21829:81;;-1:-1:-1;21950:39:0;;21829:81;21950:28;:39::i;:::-;21941:4;21923:24;;;;:9;:24;;;;;;;:66;;;;22005:42;;-1:-1:-1;;;;;22005:42:0;;;;;;;22037:9;10271:25:1;;10259:2;10244:18;;10125:177;22005:42:0;;;;;;;;22067:21;:6;22078:9;22067:10;:21::i;:::-;22060:28;21724:372;-1:-1:-1;;;;;21724:372:0:o;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:60;;164:1;161;154:12;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:385::-;2706:6;2714;2722;2730;2783:3;2771:9;2762:7;2758:23;2754:33;2751:53;;;2800:1;2797;2790:12;2751:53;2823:26;2839:9;2823:26;:::i;:::-;2813:36;2896:2;2881:18;;2868:32;;-1:-1:-1;2947:2:1;2932:18;;2919:32;;2998:2;2983:18;2970:32;;-1:-1:-1;2623:385:1;-1:-1:-1;;;2623:385:1:o;3013:180::-;3072:6;3125:2;3113:9;3104:7;3100:23;3096:32;3093:52;;;3141:1;3138;3131:12;3093:52;-1:-1:-1;3164:23:1;;3013:180;-1:-1:-1;3013:180:1:o;3198:248::-;3263:6;3271;3324:2;3312:9;3303:7;3299:23;3295:32;3292:52;;;3340:1;3337;3330:12;3292:52;3376:9;3363:23;3353:33;;3405:35;3436:2;3425:9;3421:18;3405:35;:::i;3451:248::-;3519:6;3527;3580:2;3568:9;3559:7;3555:23;3551:32;3548:52;;;3596:1;3593;3586:12;3548:52;-1:-1:-1;;3619:23:1;;;3689:2;3674:18;;;3661:32;;-1:-1:-1;3451:248:1:o;3704:316::-;3781:6;3789;3797;3850:2;3838:9;3829:7;3825:23;3821:32;3818:52;;;3866:1;3863;3856:12;3818:52;-1:-1:-1;;3889:23:1;;;3959:2;3944:18;;3931:32;;-1:-1:-1;4010:2:1;3995:18;;;3982:32;;3704:316;-1:-1:-1;3704:316:1:o;4025:306::-;4113:6;4121;4129;4182:2;4170:9;4161:7;4157:23;4153:32;4150:52;;;4198:1;4195;4188:12;4150:52;4227:9;4221:16;4211:26;;4277:2;4266:9;4262:18;4256:25;4246:35;;4321:2;4310:9;4306:18;4300:25;4290:35;;4025:306;;;;;:::o;4336:454::-;4431:6;4439;4447;4455;4463;4516:3;4504:9;4495:7;4491:23;4487:33;4484:53;;;4533:1;4530;4523:12;4484:53;-1:-1:-1;;4556:23:1;;;4626:2;4611:18;;4598:32;;-1:-1:-1;4677:2:1;4662:18;;4649:32;;4728:2;4713:18;;4700:32;;-1:-1:-1;4779:3:1;4764:19;4751:33;;-1:-1:-1;4336:454:1;-1:-1:-1;4336:454:1:o;4795:461::-;4848:3;4886:5;4880:12;4913:6;4908:3;4901:19;4939:4;4968:2;4963:3;4959:12;4952:19;;5005:2;4998:5;4994:14;5026:1;5036:195;5050:6;5047:1;5044:13;5036:195;;;5115:13;;-1:-1:-1;;;;;5111:39:1;5099:52;;5171:12;;;;5206:15;;;;5147:1;5065:9;5036:195;;;-1:-1:-1;5247:3:1;;4795:461;-1:-1:-1;;;;;4795:461:1:o;7281:510::-;7552:6;7541:9;7534:25;7595:3;7590:2;7579:9;7575:18;7568:31;7515:4;7616:57;7668:3;7657:9;7653:19;7645:6;7616:57;:::i;:::-;-1:-1:-1;;;;;7709:32:1;;;;7704:2;7689:18;;7682:60;-1:-1:-1;7773:2:1;7758:18;7751:34;7608:65;7281:510;-1:-1:-1;;7281:510:1:o;7796:597::-;7908:4;7937:2;7966;7955:9;7948:21;7998:6;7992:13;8041:6;8036:2;8025:9;8021:18;8014:34;8066:1;8076:140;8090:6;8087:1;8084:13;8076:140;;;8185:14;;;8181:23;;8175:30;8151:17;;;8170:2;8147:26;8140:66;8105:10;;8076:140;;;8234:6;8231:1;8228:13;8225:91;;;8304:1;8299:2;8290:6;8279:9;8275:22;8271:31;8264:42;8225:91;-1:-1:-1;8377:2:1;8356:15;-1:-1:-1;;8352:29:1;8337:45;;;;8384:2;8333:54;;7796:597;-1:-1:-1;;;7796:597:1:o;9451:329::-;9653:2;9635:21;;;9692:1;9672:18;;;9665:29;-1:-1:-1;;;9725:2:1;9710:18;;9703:36;9771:2;9756:18;;9451:329::o;9785:335::-;9987:2;9969:21;;;10026:2;10006:18;;;9999:30;-1:-1:-1;;;10060:2:1;10045:18;;10038:41;10111:2;10096:18;;9785:335::o;10307:582::-;10606:6;10595:9;10588:25;10649:6;10644:2;10633:9;10629:18;10622:34;10692:3;10687:2;10676:9;10672:18;10665:31;10569:4;10713:57;10765:3;10754:9;10750:19;10742:6;10713:57;:::i;:::-;-1:-1:-1;;;;;10806:32:1;;;;10801:2;10786:18;;10779:60;-1:-1:-1;10870:3:1;10855:19;10848:35;10705:65;10307:582;-1:-1:-1;;;10307:582:1:o;11336:128::-;11376:3;11407:1;11403:6;11400:1;11397:13;11394:39;;;11413:18;;:::i;:::-;-1:-1:-1;11449:9:1;;11336:128::o;11469:217::-;11509:1;11535;11525:132;;11579:10;11574:3;11570:20;11567:1;11560:31;11614:4;11611:1;11604:15;11642:4;11639:1;11632:15;11525:132;-1:-1:-1;11671:9:1;;11469:217::o;11691:168::-;11731:7;11797:1;11793;11789:6;11785:14;11782:1;11779:21;11774:1;11767:9;11760:17;11756:45;11753:71;;;11804:18;;:::i;:::-;-1:-1:-1;11844:9:1;;11691:168::o;11864:125::-;11904:4;11932:1;11929;11926:8;11923:34;;;11937:18;;:::i;:::-;-1:-1:-1;11974:9:1;;11864:125::o;11994:127::-;12055:10;12050:3;12046:20;12043:1;12036:31;12086:4;12083:1;12076:15;12110:4;12107:1;12100:15;12126:127;12187:10;12182:3;12178:20;12175:1;12168:31;12218:4;12215:1;12208:15;12242:4;12239:1;12232:15;12390:131;-1:-1:-1;;;;;12465:31:1;;12455:42;;12445:70;;12511:1;12508;12501:12;12445:70;12390:131;:::o
Swarm Source
ipfs://c3b0363faeb9dd61ea3477883a895d791358145bc1fd3f4c308247604e4b4375
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.