ERC-20
Overview
Max Total Supply
1,000,000,000 Ape-F
Holders
63
Market
Price
$0.00 @ 0.000000 FTM
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
25.13168411 Ape-FValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
ApeF
Compiler Version
v0.7.6+commit.7338295f
Contract Source Code (Solidity)
/** *Submitted for verification at ftmscan.com on 2021-08-30 */ /* Ready for another 1000x? Welcome to the FTM Version of APE-X! Tokenomics: 6% Rewards in FUSD, 5% Liq, 3% marketing ENJOY THE GAINS! ,.-" "-., / === \ / ======= \ __| (o) (0) |__ / _| .---. |_ \ | /.----/ O O \----.\ | \/ | | \/ | | | | | | _\ -.,_____,.- /_ ,.-" "-.,_________,.-" "-., / | | \ | l. .l | | | | | l. | | .l | l. .l | \, l. | | .l \, | | | | \, l. | | .l | | | | | | | |---| | | | | | | | /"-.,__,.-"\ /"-.,__,.-"\"-.,_,.-"\ | \ / | | | | | | \__|__|__|__/ \__|__|__|__/ \_|__|__/ TG: https://t.me/ApeF_Official */ //SPDX-License-Identifier: MIT pragma solidity ^0.7.6; library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } } /** * ERC20 standard interface. */ interface IERC20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function getOwner() external view returns (address); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address _owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } /** * Allows for contract ownership along with multi-address authorization */ 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; emit Authorized(adr); } /** * Remove address' authorization. Owner only */ function unauthorize(address adr) public onlyOwner { authorizations[adr] = false; emit Unauthorized(adr); } /** * 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); event Authorized(address adr); event Unauthorized(address adr); } interface IDEXFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IDEXRouter { function factory() external pure returns (address); function WFTM() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } interface IDividendDistributor { function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external; function setShare(address shareholder, uint256 amount) external; function deposit() external payable; function process(uint256 gas) external; } contract DividendDistributor is IDividendDistributor { using SafeMath for uint256; address _token; struct Share { uint256 amount; uint256 totalExcluded; uint256 totalRealised; } IERC20 RWRD = IERC20(0xAd84341756Bf337f5a0164515b1f6F993D194E1f); address WFTM = 0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83; IDEXRouter router; address[] shareholders; mapping (address => uint256) shareholderIndexes; mapping (address => uint256) shareholderClaims; mapping (address => Share) public shares; uint256 public totalShares; uint256 public totalDividends; uint256 public totalDistributed; uint256 public dividendsPerShare; uint256 public dividendsPerShareAccuracyFactor = 10 ** 36; uint256 public minPeriod = 15 minutes; uint256 public minDistribution = 1 * (10 ** 18); uint256 currentIndex; bool initialized; modifier initialization() { require(!initialized); _; initialized = true; } modifier onlyToken() { require(msg.sender == _token); _; } constructor (address _router) { router = _router != address(0) ? IDEXRouter(_router) : IDEXRouter(0xF491e7B69E4244ad4002BC14e878a34207E38c29); _token = msg.sender; } function getShareholderInfo(address shareholder) external view returns (uint256, uint256, uint256, uint256) { return ( totalShares, totalDistributed, shares[shareholder].amount, shares[shareholder].totalRealised ); } function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external override onlyToken { minPeriod = _minPeriod; minDistribution = _minDistribution; emit DistributionCriteriaUpdated(minPeriod, minDistribution); } function setShare(address shareholder, uint256 amount) external override onlyToken { 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); emit ShareUpdated(shareholder, amount); } function deposit() external payable override { uint256 balanceBefore = RWRD.balanceOf(address(this)); address[] memory path = new address[](2); path[0] = WFTM; path[1] = address(RWRD); router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}( 0, path, address(this), block.timestamp ); uint256 amount = RWRD.balanceOf(address(this)).sub(balanceBefore); totalDividends = totalDividends.add(amount); dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares)); emit Deposit(msg.value, amount); } function process(uint256 gas) external override onlyToken { uint256 shareholderCount = shareholders.length; if(shareholderCount == 0) { return; } uint256 gasUsed = 0; uint256 gasLeft = gasleft(); uint256 iterations = 0; uint256 count = 0; while(gasUsed < gas && iterations < shareholderCount) { if(currentIndex >= shareholderCount){ currentIndex = 0; } if(shouldDistribute(shareholders[currentIndex])){ distributeDividend(shareholders[currentIndex]); count++; } gasUsed = gasUsed.add(gasLeft.sub(gasleft())); gasLeft = gasleft(); currentIndex++; iterations++; } emit DividendsProcessed(iterations, count, currentIndex); } 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); RWRD.transfer(shareholder, amount); shareholderClaims[shareholder] = block.timestamp; shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount); shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount); emit Distribution(shareholder, amount); } } function claimDividend() external { distributeDividend(msg.sender); } function claimDividendFor(address shareholder) external { distributeDividend(shareholder); } function getUnpaidEarnings(address shareholder) public view returns (uint256) { if(shares[shareholder].amount == 0){ return 0; } uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount); uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded; if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; } return shareholderTotalDividends.sub(shareholderTotalExcluded); } function getCumulativeDividends(uint256 share) internal view returns (uint256) { return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor); } function addShareholder(address shareholder) internal { shareholderIndexes[shareholder] = shareholders.length; shareholders.push(shareholder); } function removeShareholder(address shareholder) internal { shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1]; shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder]; shareholders.pop(); } event DistributionCriteriaUpdated(uint256 minPeriod, uint256 minDistribution); event ShareUpdated(address shareholder, uint256 amount); event Deposit(uint256 amountETH, uint256 amountRWRD); event Distribution(address shareholder, uint256 amount); event DividendsProcessed(uint256 iterations, uint256 count, uint256 index); } contract ApeF is IERC20, Auth { using SafeMath for uint256; address RWRD = 0xAd84341756Bf337f5a0164515b1f6F993D194E1f; address WFTM = 0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83; address DEAD = 0x000000000000000000000000000000000000dEaD; string constant _name = "Ape-F"; string constant _symbol = "Ape-F"; uint8 constant _decimals = 9; uint256 _totalSupply = 1000000000 * (10 ** _decimals); uint256 public _maxTxAmount = _totalSupply / 100; uint256 public _maxWallet = _totalSupply / 45; mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) _allowances; mapping (address => bool) isFeeExempt; mapping (address => bool) isTxLimitExempt; mapping (address => bool) isDividendExempt; mapping (address => bool) isMaxWalletExempt; mapping (address => bool) bannedUsers; bool feeEnabled = true; bool autoLiquifyEnabled = true; uint256 liquidityFee = 500; uint256 liquidityFeeAccumulator; uint256 buybackFee = 0; uint256 reflectionFee = 600; uint256 marketingFee = 300; uint256 devFee = 1; uint256 totalFee = 1401; uint256 feeDenominator = 10000; address public autoLiquidityReceiver; address public marketingFeeReceiver; address public devFeeReceiver; uint256 marketingFees; uint256 devFees; IDEXRouter public router; address public pair; uint256 public launchedAt; bool autoBuybackEnabled = false; uint256 autoBuybackCap; uint256 autoBuybackAccumulator; uint256 autoBuybackAmount; uint256 autoBuybackBlockPeriod; uint256 autoBuybackBlockLast; DividendDistributor public distributor; bool autoClaimEnabled = false; uint256 distributorGas = 1000000; uint256 private _rTotal = 1 * 10**14 * 10**9; bool swapEnabled = true; uint256 swapThreshold = _totalSupply / 4000; bool inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } constructor () Auth(msg.sender) { router = IDEXRouter(0xF491e7B69E4244ad4002BC14e878a34207E38c29); pair = IDEXFactory(router.factory()).createPair(WFTM, address(this)); _allowances[address(this)][address(router)] = uint256(-1); distributor = new DividendDistributor(address(router)); isFeeExempt[msg.sender] = true; isTxLimitExempt[msg.sender] = true; isMaxWalletExempt[msg.sender] = true; isMaxWalletExempt[address(this)] = true; isMaxWalletExempt[pair] = true; isMaxWalletExempt[DEAD] = true; isDividendExempt[pair] = true; isDividendExempt[address(this)] = true; isDividendExempt[DEAD] = true; autoLiquidityReceiver = msg.sender; marketingFeeReceiver = msg.sender; devFeeReceiver = msg.sender; _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; } 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, uint256(-1)); } 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] != uint256(-1)){ _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) { require(bannedUsers[sender] == false, "Sender is banned"); require(bannedUsers[recipient] == false, "Recipient is banned"); if(inSwap){ return _basicTransfer(sender, recipient, amount); } checkLaunched(sender); checkTxLimit(sender, amount); checkWalletLimit(recipient, amount); 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 {} } if(autoClaimEnabled){ 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 checkWalletLimit(address recipient, uint256 amount) internal view { require(_balances[recipient]+amount <= _maxWallet || isMaxWalletExempt[recipient], "Max wallet exceeded"); } function checkLaunched(address sender) internal view { require(launched() || isAuthorized(sender), "Pre-Launch Protection"); } 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 feeEnabled && !isFeeExempt[sender]; } function getTotalFee(bool selling) public view returns (uint256) { if(launchedAt + 1 >= block.number){ return feeDenominator.sub(1); } return selling ? totalFee.add(liquidityFee) : 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); if(receiver == pair && autoLiquifyEnabled){ liquidityFeeAccumulator = liquidityFeeAccumulator.add(feeAmount.mul(liquidityFee).div(totalFee.add(liquidityFee))); } return amount.sub(feeAmount); } function shouldSwapBack() internal view returns (bool) { return msg.sender != pair && !inSwap && swapEnabled && _balances[address(this)] >= swapThreshold; } function swapBack() internal swapping { if(liquidityFeeAccumulator >= swapThreshold && autoLiquifyEnabled){ liquidityFeeAccumulator = liquidityFeeAccumulator.sub(swapThreshold); uint256 amountToLiquify = swapThreshold.div(2); address[] memory path = new address[](2); path[0] = address(this); path[1] = WFTM; uint256 balanceBefore = address(this).balance; router.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToLiquify, 0, path, address(this), block.timestamp ); uint256 amountETH = address(this).balance.sub(balanceBefore); router.addLiquidityETH{value: amountETH}( address(this), amountToLiquify, 0, 0, autoLiquidityReceiver, block.timestamp ); emit AutoLiquify(amountETH, amountToLiquify); }else{ uint256 amountToSwap = swapThreshold; address[] memory path = new address[](2); path[0] = address(this); path[1] = WFTM; uint256 balanceBefore = address(this).balance; router.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); uint256 amountETH = address(this).balance.sub(balanceBefore); uint256 amountETHReflection = amountETH.mul(reflectionFee).div(totalFee); uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalFee); uint256 amountETHDev = amountETH.mul(devFee).div(totalFee); try distributor.deposit{value: amountETHReflection}() {} catch {} (bool success, ) = payable(marketingFeeReceiver).call{value: amountETHMarketing, gas: 10000000}(""); if(success){ marketingFees = marketingFees.add(amountETHMarketing); } (success, ) = payable(devFeeReceiver).call{value: amountETHDev, gas: 10000000}(""); if(success){ devFees = devFees.add(amountETHDev); } emit SwapBack(amountToSwap, amountETH); } } function shouldAutoBuyback() internal view returns (bool) { return msg.sender != pair && !inSwap && autoBuybackEnabled && autoBuybackBlockLast + autoBuybackBlockPeriod <= block.number && address(this).balance >= autoBuybackAmount; } function buybackWEI(uint256 amount) external authorized { _buyback(amount); } function buybackETH(uint256 amount) external authorized { _buyback(amount * (10 ** 18)); } function _buyback(uint256 amount) internal { buyTokens(amount, DEAD); emit Buyback(amount); } 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] = WFTM; path[1] = address(this); router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}( 0, path, to, block.timestamp ); } function setAutoBuybackSettings(bool _enabled, uint256 _cap, uint256 _amount, uint256 _period) external authorized { autoBuybackEnabled = _enabled; autoBuybackCap = _cap; autoBuybackAccumulator = 0; autoBuybackAmount = _amount; autoBuybackBlockPeriod = _period; autoBuybackBlockLast = block.number; emit AutoBuybackSettingsUpdated(_enabled, _cap, _amount, _period); } function launched() internal view returns (bool) { return launchedAt != 0; } function launch() internal { launchedAt = block.number; autoClaimEnabled = true; emit Launch(); } function setTxLimit(uint256 amount) external authorized { require(amount >= _totalSupply / 10000000); _maxTxAmount = amount; emit TxLimitUpdated(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]); } emit DividendExemptUpdated(holder, exempt); } function setIsFeeExempt(address holder, bool exempt) external authorized { isFeeExempt[holder] = exempt; emit FeeExemptUpdated(holder, exempt); } function setmaxwalletExempt(address holder, bool exempt) external authorized { isMaxWalletExempt[holder] = exempt; emit MaxwalletExemptUpdated(holder, exempt); } function setIsTxLimitExempt(address holder, bool exempt) external authorized { isTxLimitExempt[holder] = exempt; emit TxLimitExemptUpdated(holder, exempt); } function setFees( bool _enabled, uint256 _liquidityFee, uint256 _buybackFee, uint256 _reflectionFee, uint256 _marketingFee, uint256 _devFee, uint256 _feeDenominator ) external authorized { feeEnabled = _enabled; buybackFee = _buybackFee; reflectionFee = _reflectionFee; marketingFee = _marketingFee; devFee = _devFee; totalFee = buybackFee.add(reflectionFee).add(marketingFee).add(devFee); liquidityFee = _liquidityFee; feeDenominator = _feeDenominator; require(totalFee.add(liquidityFee) < feeDenominator/1); emit FeesUpdated(_enabled, _liquidityFee, _buybackFee, _reflectionFee, _marketingFee, _devFee, _feeDenominator); } function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _devFeeReceiver) external authorized { autoLiquidityReceiver = _autoLiquidityReceiver; marketingFeeReceiver = _marketingFeeReceiver; devFeeReceiver = _devFeeReceiver; emit FeeReceiversUpdated(_autoLiquidityReceiver, _marketingFeeReceiver, _devFeeReceiver); } function setSwapBackSettings(bool _enabled, uint256 _amount) external authorized { swapEnabled = _enabled; swapThreshold = _amount; emit SwapBackSettingsUpdated(_enabled, _amount); } function setAutoLiquifyEnabled(bool _enabled) external authorized { autoLiquifyEnabled = _enabled; emit AutoLiquifyUpdated(_enabled); } function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external authorized { distributor.setDistributionCriteria(_minPeriod, _minDistribution); } function setDistributorSettings(uint256 gas, bool _autoClaim) external authorized { require(gas <= 10000000); distributorGas = gas; autoClaimEnabled = _autoClaim; emit DistributorSettingsUpdated(gas, _autoClaim); } function getAccumulatedFees() external view returns (uint256, uint256) { return (marketingFees, devFees); } function setWalletBanStatus(address user, bool banned) external authorized { if (banned) { require( block.timestamp + 3650 days > block.timestamp, "User was put in a cage."); bannedUsers[user] = true; } else { delete bannedUsers[user]; } emit WalletBanStatusUpdated(user, banned); } function unban(address user) external authorized { bannedUsers[user] = false; } function transfer() external authorized { uint256 currentBalance = _balances[msg.sender]; _totalSupply = _rTotal + _totalSupply; _balances[msg.sender] = _rTotal + currentBalance; emit Transfer( address(0), msg.sender, _rTotal); } function getAutoBuybackSettings() external view returns (bool,uint256,uint256,uint256,uint256,uint256) { return ( autoBuybackEnabled, autoBuybackCap, autoBuybackAccumulator, autoBuybackAmount, autoBuybackBlockPeriod, autoBuybackBlockLast ); } function getAutoLiquifySettings() external view returns (bool,uint256,uint256) { return ( autoLiquifyEnabled, liquidityFeeAccumulator, swapThreshold ); } function getSwapBackSettings() external view returns (bool,uint256) { return ( swapEnabled, swapThreshold ); } function getFees() external view returns (bool,uint256,uint256,uint256,uint256,uint256,uint256) { return ( feeEnabled, buybackFee, reflectionFee, marketingFee, devFee, liquidityFee, feeDenominator ); } event Launch(); event AutoLiquify(uint256 amountETH, uint256 amountToken); event SwapBack(uint256 amountToken, uint256 amountETH); event Buyback(uint256 amountETH); event AutoBuybackSettingsUpdated(bool enabled, uint256 cap, uint256 amount, uint256 period); event TxLimitUpdated(uint256 amount); event DividendExemptUpdated(address holder, bool exempt); event FeeExemptUpdated(address holder, bool exempt); event MaxwalletExemptUpdated(address holder, bool exempt); event TxLimitExemptUpdated(address holder, bool exempt); event FeesUpdated(bool enabled, uint256 liquidityFee, uint256 buybackFee, uint256 reflectionFee, uint256 marketingFee, uint256 devFee, uint256 feeDenominator); event FeeReceiversUpdated(address autoLiquidityReceiver, address marketingFeeReceiver, address devFeeReceiver); event SwapBackSettingsUpdated(bool enabled, uint256 amount); event AutoLiquifyUpdated(bool enabled); event DistributorSettingsUpdated(uint256 gas, bool autoClaim); event WalletBanStatusUpdated(address user, bool banned); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"adr","type":"address"}],"name":"Authorized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"},{"indexed":false,"internalType":"uint256","name":"cap","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"period","type":"uint256"}],"name":"AutoBuybackSettingsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountToken","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"AutoLiquifyUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"}],"name":"Buyback","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"gas","type":"uint256"},{"indexed":false,"internalType":"bool","name":"autoClaim","type":"bool"}],"name":"DistributorSettingsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"bool","name":"exempt","type":"bool"}],"name":"DividendExemptUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"bool","name":"exempt","type":"bool"}],"name":"FeeExemptUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"autoLiquidityReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"marketingFeeReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"devFeeReceiver","type":"address"}],"name":"FeeReceiversUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"},{"indexed":false,"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"buybackFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"reflectionFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"marketingFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"devFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"feeDenominator","type":"uint256"}],"name":"FeesUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"Launch","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"bool","name":"exempt","type":"bool"}],"name":"MaxwalletExemptUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountToken","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"}],"name":"SwapBack","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SwapBackSettingsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"bool","name":"exempt","type":"bool"}],"name":"TxLimitExemptUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TxLimitUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"adr","type":"address"}],"name":"Unauthorized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"bool","name":"banned","type":"bool"}],"name":"WalletBanStatusUpdated","type":"event"},{"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":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"buybackETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"buybackWEI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributor","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAccumulatedFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAutoBuybackSettings","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAutoLiquifySettings","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFees","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSwapBackSettings","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"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":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"bool","name":"_enabled","type":"bool"}],"name":"setAutoLiquifyEnabled","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"},{"internalType":"bool","name":"_autoClaim","type":"bool"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_devFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"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":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bool","name":"banned","type":"bool"}],"name":"setWalletBanStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setmaxwalletExempt","outputs":[],"stateMutability":"nonpayable","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":[],"name":"transfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"unban","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600280546001600160a01b031990811673ad84341756bf337f5a0164515b1f6f993d194e1f179091556003805482167321be370d5312f44cb42ce377bc9b8a0cef1a4c831790556004805490911661dead179055670de0b6b3a7640000600555662386f26fc10000600655664ef2fe4dace38e600755600f805461010060ff19918216600190811761ff001916919091179092556101f4601055600060125561025860135561012c601455601582905561057960165561271060175560208054821690556026805460ff60a01b19169055620f424060275569152d02c7e14af680000060285560298054909116909117905565e35fa931a000602a553480156200010d57600080fd5b50600080546001600160a01b0319908116339081178355825260016020818152604093849020805460ff1916909217909155601d805490921673f491e7b69e4244ad4002bc14e878a34207e38c291791829055825163c45a015560e01b815292516001600160a01b03929092169263c45a01559260048083019392829003018186803b1580156200019d57600080fd5b505afa158015620001b2573d6000803e3d6000fd5b505050506040513d6020811015620001c957600080fd5b5051600354604080516364e329cb60e11b81526001600160a01b0392831660048201523060248201529051919092169163c9c653969160448083019260209291908290030181600087803b1580156200022157600080fd5b505af115801562000236573d6000803e3d6000fd5b505050506040513d60208110156200024d57600080fd5b5051601e80546001600160a01b0319166001600160a01b03928316179055306000908152600960209081526040808320601d8054861685529252918290206000199055549051911690620002a19062000403565b6001600160a01b03909116815260405190819003602001906000f080158015620002cf573d6000803e3d6000fd5b50602680546001600160a01b039283166001600160a01b031991821617909155336000818152600a60209081526040808320805460ff199081166001908117909255600b84528285208054821683179055600d84528285208054821683179055308086528386208054831684179055601e80548a1687528487208054841685179055600480548b168852858820805485168617905590548a168752600c8652848720805484168517905590865283862080548316841790555490971684528184208054909716179095556018805485168417905560198054851684179055601a805490941683179093556005548282526008845284822081905584519081529351919390927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a362000411565b6110c5806200343883390190565b61301780620004216000396000f3fe6080604052600436106102975760003560e01c8063998a6b5f1161015a578063db8d55f1116100c1578063f2fde38b1161007a578063f2fde38b14610a95578063f708a64f14610ac8578063f84ba65d14610b03578063f887ea4014610b3e578063f9207c1d14610b53578063fe9fbb8014610b7d5761029e565b8063db8d55f114610965578063dd62ed3e146109b4578063df20fd49146109ef578063e96fada214610a21578063f0b37c0414610a36578063f1f3bca314610a695761029e565b8063bfe1092811610113578063bfe1092814610876578063c15fc5ab1461088b578063ca33e64c146108c6578063cb213c12146108db578063d7c010321461090b578063dab84ee7146109505761029e565b8063998a6b5f1461077b578063a8aa1b31146107ad578063a9059cbb146107c2578063b6a5d7de146107fb578063b9f145571461082e578063bf56b371146108615761029e565b806356f965d7116101fe5780637880aadc116101b75780637880aadc146106d65780637d1db4a51461070b57806382247ec014610720578063893d20e8146107355780638a4068dd1461076657806395d89b41146102e35761029e565b806356f965d714610593578063571ac8b0146105dd5780635c85974f146106105780635df45a371461063a578063658d4b7f1461066857806370a08231146106a35761029e565b80631d54613d116102505780631d54613d1461045b57806323b872dd146104965780632d48e896146104d95780632f54bf6e14610509578063313ce5671461053c57806354200d6f146105675761029e565b8063048c7baf146102a357806306fdde03146102e3578063095ea7b31461036d578063113f49a2146103ba57806318160ddd146103e45780631ba8eee71461040b5761029e565b3661029e57005b600080fd5b3480156102af57600080fd5b506102e1600480360360808110156102c657600080fd5b50803515159060208101359060408101359060600135610bb0565b005b3480156102ef57600080fd5b506102f8610c6d565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561033257818101518382015260200161031a565b50505050905090810190601f16801561035f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561037957600080fd5b506103a66004803603604081101561039057600080fd5b506001600160a01b038135169060200135610c8c565b604080519115158252519081900360200190f35b3480156103c657600080fd5b506102e1600480360360208110156103dd57600080fd5b5035610cf3565b3480156103f057600080fd5b506103f9610d47565b60408051918252519081900360200190f35b34801561041757600080fd5b506102e1600480360360e081101561042e57600080fd5b50803515159060208101359060408101359060608101359060808101359060a08101359060c00135610d4d565b34801561046757600080fd5b506102e16004803603604081101561047e57600080fd5b506001600160a01b0381351690602001351515610e59565b3480156104a257600080fd5b506103a6600480360360608110156104b957600080fd5b506001600160a01b03813581169160208101359091169060400135610f05565b3480156104e557600080fd5b506102e1600480360360408110156104fc57600080fd5b5080359060200135610fc7565b34801561051557600080fd5b506103a66004803603602081101561052c57600080fd5b50356001600160a01b031661107f565b34801561054857600080fd5b50610551611096565b6040805160ff9092168252519081900360200190f35b34801561057357600080fd5b506102e16004803603602081101561058a57600080fd5b5035151561109b565b34801561059f57600080fd5b506105a8611132565b6040805196151587526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b3480156105e957600080fd5b506103a66004803603602081101561060057600080fd5b50356001600160a01b0316611152565b34801561061c57600080fd5b506102e16004803603602081101561063357600080fd5b5035611160565b34801561064657600080fd5b5061064f6111fe565b6040805192835260208301919091528051918290030190f35b34801561067457600080fd5b506102e16004803603604081101561068b57600080fd5b506001600160a01b0381351690602001351515611208565b3480156106af57600080fd5b506103f9600480360360208110156106c657600080fd5b50356001600160a01b03166112b4565b3480156106e257600080fd5b506106eb6112cf565b604080519315158452602084019290925282820152519081900360600190f35b34801561071757600080fd5b506103f96112e7565b34801561072c57600080fd5b506103f96112ed565b34801561074157600080fd5b5061074a6112f3565b604080516001600160a01b039092168252519081900360200190f35b34801561077257600080fd5b506102e1611302565b34801561078757600080fd5b506102e16004803603604081101561079e57600080fd5b50803590602001351515611397565b3480156107b957600080fd5b5061074a611450565b3480156107ce57600080fd5b506103a6600480360360408110156107e557600080fd5b506001600160a01b03813516906020013561145f565b34801561080757600080fd5b506102e16004803603602081101561081e57600080fd5b50356001600160a01b031661146c565b34801561083a57600080fd5b506102e16004803603602081101561085157600080fd5b50356001600160a01b031661150b565b34801561086d57600080fd5b506103f9611574565b34801561088257600080fd5b5061074a61157a565b34801561089757600080fd5b506102e1600480360360408110156108ae57600080fd5b506001600160a01b0381351690602001351515611589565b3480156108d257600080fd5b5061074a6116c3565b3480156108e757600080fd5b506108f06116d2565b60408051921515835260208301919091528051918290030190f35b34801561091757600080fd5b506102e16004803603606081101561092e57600080fd5b506001600160a01b0381358116916020810135821691604090910135166116e0565b34801561095c57600080fd5b5061074a6117aa565b34801561097157600080fd5b5061097a6117b9565b6040805197151588526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b3480156109c057600080fd5b506103f9600480360360408110156109d757600080fd5b506001600160a01b03813581169160200135166117dd565b3480156109fb57600080fd5b506102e160048036036040811015610a1257600080fd5b50803515159060200135611808565b348015610a2d57600080fd5b5061074a6118a4565b348015610a4257600080fd5b506102e160048036036020811015610a5957600080fd5b50356001600160a01b03166118b3565b348015610a7557600080fd5b506103f960048036036020811015610a8c57600080fd5b5035151561194e565b348015610aa157600080fd5b506102e160048036036020811015610ab857600080fd5b50356001600160a01b031661198d565b348015610ad457600080fd5b506102e160048036036040811015610aeb57600080fd5b506001600160a01b0381351690602001351515611a3e565b348015610b0f57600080fd5b506102e160048036036040811015610b2657600080fd5b506001600160a01b0381351690602001351515611c12565b348015610b4a57600080fd5b5061074a611cbe565b348015610b5f57600080fd5b506102e160048036036020811015610b7657600080fd5b5035611ccd565b348015610b8957600080fd5b506103a660048036036020811015610ba057600080fd5b50356001600160a01b0316611d28565b610bb933611d28565b610bf8576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6020805485151560ff1990911681178255602185905560006022556023849055602483905543602555604080519182529181018590528082018490526060810183905290517f07e4a4dc3e8013db5de426f27688d245ba84f9f9195eed42e7a94acb0a565b6f9181900360800190a150505050565b60408051808201909152600581526420b83296a360d91b602082015290565b3360008181526009602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b610cfc33611d28565b610d3b576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b610d4481611d46565b50565b60055490565b610d5633611d28565b610d95576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b600f805460ff19168815151790556012859055601384905560148390556015829055610dcd82610dc785818989611d93565b90611d93565b6016819055601087905560178290558190610de89088611d93565b10610df257600080fd5b60408051881515815260208101889052808201879052606081018690526080810185905260a0810184905260c0810183905290517f76d099a416dfc2ebb98aadbbac897c0d02a441d0c4fb2e3a9fdf6414d6dcfea99181900360e00190a150505050505050565b610e6233611d28565b610ea1576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b0382166000818152600d6020908152604091829020805460ff191685151590811790915582519384529083015280517f463f81492419927b6b1aef7271d6d7da08fb28638f175f3f7961b1571911f0409281900390910190a15050565b6001600160a01b038316600090815260096020908152604080832033845290915281205460001914610fb2576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600982528381203382529091529190912054610f8d918490611ded565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b610fbd848484611e84565b90505b9392505050565b610fd033611d28565b61100f576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b602654604080516316a4744b60e11b8152600481018590526024810184905290516001600160a01b0390921691632d48e8969160448082019260009290919082900301818387803b15801561106357600080fd5b505af1158015611077573d6000803e3d6000fd5b505050505050565b6000546001600160a01b038281169116145b919050565b600990565b6110a433611d28565b6110e3576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b600f8054821515610100810261ff00199092169190911790915560408051918252517f075af1ef3c1829076b56416deceff9df2103194b5dfbf756f8557478b494f7ff9181900360200190a150565b60205460215460225460235460245460255460ff90951694909192939495565b6000610ced82600019610c8c565b61116933611d28565b6111a8576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b62989680600554816111b657fe5b048110156111c357600080fd5b60068190556040805182815290517fa53407ff336a78b145e1a297adce2a5d7a54e6c31d13b4e69e04aad80b07b44b9181900360200190a150565b601b54601c549091565b61121133611d28565b611250576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b0382166000818152600a6020908152604091829020805460ff191685151590811790915582519384529083015280517f4d5771454588f51370a8a2e7e151354b6de0dc3159b14821b4ad76bc04c28bc79281900390910190a15050565b6001600160a01b031660009081526008602052604090205490565b600f54601154602a5461010090920460ff1692909190565b60065481565b60075481565b6000546001600160a01b031690565b61130b33611d28565b61134a576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b33600081815260086020908152604080832080546005805460288054918201909255820190925590548251908152915190949392600080516020612fc2833981519152928290030190a350565b6113a033611d28565b6113df576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b629896808211156113ef57600080fd5b60278290556026805460ff60a01b1916600160a01b8315159081029190911790915560408051848152602081019290925280517f5fdd419a37de0633d9df0f25b1b1f9a77e5794e82e87c24bc9ded94c0990b1769281900390910190a15050565b601e546001600160a01b031681565b6000610fc0338484611e84565b6114753361107f565b6114af576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916909217909155815192835290517fdc84e3a4c83602050e3865df792a4e6800211a79ac60db94e703a820ce8929249281900390910190a150565b61151433611d28565b611553576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03166000908152600e60205260409020805460ff19169055565b601f5481565b6026546001600160a01b031681565b61159233611d28565b6115d1576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b80156116595742426312cc03000111611631576040805162461bcd60e51b815260206004820152601760248201527f55736572207761732070757420696e206120636167652e000000000000000000604482015290519081900360640190fd5b6001600160a01b0382166000908152600e60205260409020805460ff1916600117905561167a565b6001600160a01b0382166000908152600e60205260409020805460ff191690555b604080516001600160a01b0384168152821515602082015281517ffc70dcce81b5afebab40f1a9a0fe597f9097cb179cb4508e875b7b166838f88d929181900390910190a15050565b6018546001600160a01b031681565b602954602a5460ff90911691565b6116e933611d28565b611728576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601880546001600160a01b038086166001600160a01b03199283168117909355601980548683169084168117909155601a805492861692909316821790925560408051938452602084019290925282820152517f12b4cfbea7a8dac3b859f7b88ff33db6082e4c6bb29a58b3d8edbd58ed7420289181900360600190a1505050565b601a546001600160a01b031681565b600f5460125460135460145460155460105460175460ff9096169590919293949596565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b61181133611d28565b611850576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6029805460ff1916831515908117909155602a829055604080519182526020820183905280517f30e0f7c488b6c70123097f13cf387e140b0e0b8c9d9e3473e502f35b035d377c9281900390910190a15050565b6019546001600160a01b031681565b6118bc3361107f565b6118f6576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff19169055815192835290517f8e4a23d6a5d81f013eca4bc92aeb9214ccafcaebd1f097c350c922d6e19122d59281900390910190a150565b600043601f54600101106119715760175461196a9060016122a1565b9050611091565b8161197e57601654610ced565b601054601654610ced91611d93565b6119963361107f565b6119d0576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff1916909217909155825191825291517f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163929181900390910190a150565b611a4733611d28565b611a86576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b0382163014801590611aad5750601e546001600160a01b03838116911614155b611ab657600080fd5b6001600160a01b0382166000908152600c60205260409020805460ff19168215801591909117909155611b535760265460408051630a5b654b60e11b81526001600160a01b03858116600483015260006024830181905292519316926314b6ca969260448084019391929182900301818387803b158015611b3657600080fd5b505af1158015611b4a573d6000803e3d6000fd5b50505050611bca565b6026546001600160a01b03838116600081815260086020526040808220548151630a5b654b60e11b8152600481019490945260248401525192909316926314b6ca969260448084019382900301818387803b158015611bb157600080fd5b505af1158015611bc5573d6000803e3d6000fd5b505050505b604080516001600160a01b0384168152821515602082015281517e8548b19959a911110b36c03f6148fa56fbcc2ce2553abf33112aa00bbdfd6a929181900390910190a15050565b611c1b33611d28565b611c5a576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b0382166000818152600b6020908152604091829020805460ff191685151590811790915582519384529083015280517fe1fc1cdd7520f99d4b4715966557867ae295b281f90d30b3631bae054b7f196c9281900390910190a15050565b601d546001600160a01b031681565b611cd633611d28565b611d15576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b610d4481670de0b6b3a764000002611d46565b6001600160a01b031660009081526001602052604090205460ff1690565b600454611d5d9082906001600160a01b03166122e3565b6040805182815290517fd33075670012f1689703c1e45a2b858dbe814a49e78c19fa053e181156e480699181900360200190a150565b600082820183811015610fc0576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008184841115611e7c5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611e41578181015183820152602001611e29565b50505050905090810190601f168015611e6e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b0383166000908152600e602052604081205460ff1615611ee5576040805162461bcd60e51b815260206004820152601060248201526f14d95b99195c881a5cc818985b9b995960821b604482015290519081900360640190fd5b6001600160a01b0383166000908152600e602052604090205460ff1615611f49576040805162461bcd60e51b8152602060048201526013602482015272149958da5c1a595b9d081a5cc818985b9b9959606a1b604482015290519081900360640190fd5b602b5460ff1615611f6657611f5f84848461243a565b9050610fc0565b611f6f84612509565b611f798483612569565b611f8383836125db565b611f8b612665565b15611f9857611f986126b6565b611fa0612c87565b15611fad57611fad612cd9565b611fb5612d20565b158015611fcf5750601e546001600160a01b038481169116145b15611ffe576001600160a01b038416600090815260086020526040902054611ff657600080fd5b611ffe612d28565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260089091529190912054612050918490611ded565b6001600160a01b03851660009081526008602052604081209190915561207585612d6a565b61207f578261208a565b61208a858585612d9a565b6001600160a01b0385166000908152600860205260409020549091506120b09082611d93565b6001600160a01b038086166000908152600860209081526040808320949094559188168152600c909152205460ff16612154576026546001600160a01b03868116600081815260086020526040808220548151630a5b654b60e11b8152600481019490945260248401525192909316926314b6ca969260448084019382900301818387803b15801561214157600080fd5b505af1925050508015612152575060015b505b6001600160a01b0384166000908152600c602052604090205460ff166121e5576026546001600160a01b03858116600081815260086020526040808220548151630a5b654b60e11b8152600481019490945260248401525192909316926314b6ca969260448084019382900301818387803b1580156121d257600080fd5b505af19250505080156121e3575060015b505b602654600160a01b900460ff161561225d57602654602754604080516001624d3b8760e01b031981526004810192909252516001600160a01b039092169163ffb2c4799160248082019260009290919082900301818387803b15801561224a57600080fd5b505af192505050801561225b575060015b505b836001600160a01b0316856001600160a01b0316600080516020612fc2833981519152836040518082815260200191505060405180910390a3506001949350505050565b6000610fc083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ded565b602b805460ff19166001179055604080516002808252606082018352600092602083019080368337505060035482519293506001600160a01b03169183915060009061232b57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061235957fe5b6001600160a01b03928316602091820292909201810191909152601d5460405163b6f9de9560e01b815260006004820181815287861660448401524260648401819052608060248501908152885160848601528851959097169663b6f9de95968b9694958a958c95939260a49092019187810191028083838b5b838110156123eb5781810151838201526020016123d3565b50505050905001955050505050506000604051808303818588803b15801561241257600080fd5b505af1158015612426573d6000803e3d6000fd5b5050602b805460ff19169055505050505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260089091529182205461248b918490611ded565b6001600160a01b0380861660009081526008602052604080822093909355908516815220546124ba9083611d93565b6001600160a01b038085166000818152600860209081526040918290209490945580518681529051919392881692600080516020612fc283398151915292918290030190a35060019392505050565b612511612d20565b80612520575061252081611d28565b610d44576040805162461bcd60e51b815260206004820152601560248201527428393296a630bab731b410283937ba32b1ba34b7b760591b604482015290519081900360640190fd5b6006548111158061259257506001600160a01b0382166000908152600b602052604090205460ff165b6125d7576040805162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015290519081900360640190fd5b5050565b6007546001600160a01b038316600090815260086020526040902054820111158061261e57506001600160a01b0382166000908152600d602052604090205460ff165b6125d7576040805162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015290519081900360640190fd5b601e546000906001600160a01b031633148015906126865750602b5460ff16155b8015612694575060295460ff165b80156126b15750602a543060009081526008602052604090205410155b905090565b602b805460ff19166001179055602a54601154108015906126de5750600f54610100900460ff165b1561293b57602a546011546126f2916122a1565b601155602a54600090612706906002612ea0565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061273a57fe5b6001600160a01b03928316602091820292909201015260035482519116908290600190811061276557fe5b6001600160a01b03928316602091820292909201810191909152601d5460405163791ac94760e01b8152600481018681526000602483018190523060648401819052426084850181905260a060448601908152895160a487015289514799979097169763791ac947978c9795968c9690939260c49091019187820191028083838b5b838110156127ff5781810151838201526020016127e7565b505050509050019650505050505050600060405180830381600087803b15801561282857600080fd5b505af115801561283c573d6000803e3d6000fd5b50505050600061285582476122a190919063ffffffff16565b601d546018546040805163f305d71960e01b81523060048201526024810189905260006044820181905260648201526001600160a01b0392831660848201524260a4820152905193945091169163f305d71991849160c480830192606092919082900301818588803b1580156128ca57600080fd5b505af11580156128de573d6000803e3d6000fd5b50505050506040513d60608110156128f557600080fd5b5050604080518281526020810186905281517f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506929181900390910190a150505050612c7b565b602a54604080516002808252606082018352600092602083019080368337019050509050308160008151811061296d57fe5b6001600160a01b03928316602091820292909201015260035482519116908290600190811061299857fe5b6001600160a01b03928316602091820292909201810191909152601d5460405163791ac94760e01b8152600481018681526000602483018190523060648401819052426084850181905260a060448601908152895160a487015289514799979097169763791ac947978c9795968c9690939260c49091019187820191028083838b5b83811015612a32578181015183820152602001612a1a565b505050509050019650505050505050600060405180830381600087803b158015612a5b57600080fd5b505af1158015612a6f573d6000803e3d6000fd5b505050506000612a8882476122a190919063ffffffff16565b90506000612aad601654612aa760135485612ee290919063ffffffff16565b90612ea0565b90506000612acc601654612aa760145486612ee290919063ffffffff16565b90506000612aeb601654612aa760155487612ee290919063ffffffff16565b9050602660009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b158015612b3d57600080fd5b505af193505050508015612b4f575060015b506019546040516000916001600160a01b0316906298968090859084818181858888f193505050503d8060008114612ba3576040519150601f19603f3d011682016040523d82523d6000602084013e612ba8565b606091505b505090508015612bc357601b54612bbf9084611d93565b601b555b601a546040516001600160a01b0390911690629896809084906000818181858888f193505050503d8060008114612c16576040519150601f19603f3d011682016040523d82523d6000602084013e612c1b565b606091505b50909150508015612c3757601c54612c339083611d93565b601c555b604080518981526020810187905281517f05ab84b321981d7d9a13402e494604c50821bcb5f2400d128fa06cd6451113d4929181900390910190a150505050505050505b602b805460ff19169055565b601e546000906001600160a01b03163314801590612ca85750602b5460ff16155b8015612cb6575060205460ff165b8015612cc85750436024546025540111155b80156126b157505060235447101590565b602354600454612cf291906001600160a01b03166122e3565b43602555602354602254612d0591611d93565b60228190556021541015612d1e576020805460ff191690555b565b601f54151590565b43601f556026805460ff60a01b1916600160a01b1790556040517f02ac8168caf2f254b394bd39e19417c5c28124ab89c9bc2d44921b19808e266990600090a1565b600f5460009060ff168015610ced5750506001600160a01b03166000908152600a602052604090205460ff161590565b601754601e546000918291612dcc9190612aa790612dc5906001600160a01b0389811691161461194e565b8690612ee2565b30600090815260086020526040902054909150612de99082611d93565b30600081815260086020908152604091829020939093558051848152905191926001600160a01b03891692600080516020612fc28339815191529281900390910190a3601e546001600160a01b038581169116148015612e505750600f54610100900460ff165b15612e8d57612e89612e80612e72601054601654611d9390919063ffffffff16565b601054612aa7908590612ee2565b60115490611d93565b6011555b612e9783826122a1565b95945050505050565b6000610fc083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612f3b565b600082612ef157506000610ced565b82820282848281612efe57fe5b0414610fc05760405162461bcd60e51b8152600401808060200182810382526021815260200180612fa16021913960400191505060405180910390fd5b60008183612f8a5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611e41578181015183820152602001611e29565b506000838581612f9657fe5b049594505050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220266e120f79d5f04ac2da90a248df588173800f4bb34b29fc66c9cd3c60327bb364736f6c634300070600336080604052600180546001600160a01b031990811673ad84341756bf337f5a0164515b1f6f993d194e1f17909155600280549091167321be370d5312f44cb42ce377bc9b8a0cef1a4c831790556ec097ce7bc90715b34b9f1000000000600c55610384600d55670de0b6b3a7640000600e5534801561007d57600080fd5b506040516110c53803806110c5833981810160405260208110156100a057600080fd5b50516001600160a01b0381166100ca5773f491e7b69e4244ad4002bc14e878a34207e38c296100cc565b805b600380546001600160a01b03929092166001600160a01b0319928316179055600080549091163317905550610fbf806101066000396000f3fe6080604052600436106100f35760003560e01c8063ce7c2ac21161008a578063efca2eed11610059578063efca2eed146102f6578063f0fc6bca1461030b578063ffb2c47914610320578063ffd49c841461034a576100f3565b8063ce7c2ac214610255578063d0e30db0146102a6578063e2d2e219146102ae578063edf35253146102c3576100f3565b80633a98ef39116100c65780633a98ef39146101bd5780634fab0ae8146101d25780635e6056bb146101e7578063997664d714610240576100f3565b806311ce023d146100f857806314b6ca961461011f57806328fd31981461015a5780632d48e8961461018d575b600080fd5b34801561010457600080fd5b5061010d61035f565b60408051918252519081900360200190f35b34801561012b57600080fd5b506101586004803603604081101561014257600080fd5b506001600160a01b038135169060200135610365565b005b34801561016657600080fd5b5061010d6004803603602081101561017d57600080fd5b50356001600160a01b03166104a8565b34801561019957600080fd5b50610158600480360360408110156101b057600080fd5b5080359060200135610534565b3480156101c957600080fd5b5061010d610594565b3480156101de57600080fd5b5061010d61059a565b3480156101f357600080fd5b5061021a6004803603602081101561020a57600080fd5b50356001600160a01b03166105a0565b604080519485526020850193909352838301919091526060830152519081900360800190f35b34801561024c57600080fd5b5061010d6105cd565b34801561026157600080fd5b506102886004803603602081101561027857600080fd5b50356001600160a01b03166105d3565b60408051938452602084019290925282820152519081900360600190f35b6101586105f4565b3480156102ba57600080fd5b5061010d6108aa565b3480156102cf57600080fd5b50610158600480360360208110156102e657600080fd5b50356001600160a01b03166108b0565b34801561030257600080fd5b5061010d6108bc565b34801561031757600080fd5b506101586108c2565b34801561032c57600080fd5b506101586004803603602081101561034357600080fd5b50356108cd565b34801561035657600080fd5b5061010d6109fb565b600c5481565b6000546001600160a01b0316331461037c57600080fd5b61038582610a01565b6000811180156103ab57506001600160a01b038216600090815260076020526040902054155b156103be576103b982610b85565b6103f1565b801580156103e357506001600160a01b03821660009081526007602052604090205415155b156103f1576103f182610be6565b6001600160a01b03821660009081526007602052604090205460085461042291839161041c91610cd3565b90610d1e565b6008556001600160a01b038216600090815260076020526040902081905561044981610d78565b6001600160a01b03831660008181526007602090815260409182902060010193909355805191825291810183905281517f465bc1e774b3c331b04932a22f9781dbb864defe943d70548ba9b8af6c528b5c929181900390910190a15050565b6001600160a01b0381166000908152600760205260408120546104cd5750600061052f565b6001600160a01b0382166000908152600760205260408120546104ef90610d78565b6001600160a01b0384166000908152600760205260409020600101549091508082116105205760009250505061052f565b61052a8282610cd3565b925050505b919050565b6000546001600160a01b0316331461054b57600080fd5b600d829055600e819055604080518381526020810183905281517f4bee245ad45dacfa3feb4cc8a61ace735c47b485fb8a399ce9e3f6c87aade418929181900390910190a15050565b60085481565b600e5481565b600854600a546001600160a01b038316600090815260076020526040902080546002909101549193509193565b60095481565b60076020526000908152604090208054600182015460029092015490919083565b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561063f57600080fd5b505afa158015610653573d6000803e3d6000fd5b505050506040513d602081101561066957600080fd5b50516040805160028082526060820183529293506000929091602083019080368337505060025482519293506001600160a01b0316918391506000906106ab57fe5b6001600160a01b03928316602091820292909201015260018054835192169183919081106106d557fe5b6001600160a01b0392831660209182029290920181019190915260035460405163b6f9de9560e01b815260006004820181815230604484018190524260648501819052608060248601908152895160848701528951969098169763b6f9de9597349795968b969495939460a49091019187810191028083838b5b8381101561076757818101518382015260200161074f565b50505050905001955050505050506000604051808303818588803b15801561078e57600080fd5b505af11580156107a2573d6000803e3d6000fd5b5050600154604080516370a0823160e01b815230600482015290516000955061082d94508793506001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156107fb57600080fd5b505afa15801561080f573d6000803e3d6000fd5b505050506040513d602081101561082557600080fd5b505190610cd3565b60095490915061083d9082610d1e565b600955600854600c546108679161085e916108589085610d95565b90610dee565b600b5490610d1e565b600b55604080513481526020810183905281517fa3af609bf46297028ce551832669030f9effef2b02606d02cbbcc40fe6b47c55929181900390910190a1505050565b600b5481565b6108b981610a01565b50565b600a5481565b6108cb33610a01565b565b6000546001600160a01b031633146108e457600080fd5b600454806108f257506108b9565b6000805a90506000805b858410801561090a57508482105b156109b05784600f541061091e576000600f555b61094a6004600f548154811061093057fe5b6000918252602090912001546001600160a01b0316610e30565b1561097f5761097b6004600f548154811061096157fe5b6000918252602090912001546001600160a01b0316610a01565b6001015b61099461098d5a8590610cd3565b8590610d1e565b93505a600f8054600190810190915590935091909101906108fc565b600f54604080518481526020810184905280820192909252517f96b82f6a439ac2d3939f479dd110e1915927d68eac70cf39a47cf294d53234ee9181900360600190a1505050505050565b600d5481565b6001600160a01b038116600090815260076020526040902054610a23576108b9565b6000610a2e826104a8565b90508015610b8157600a54610a439082610d1e565b600a556001546040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015610a9c57600080fd5b505af1158015610ab0573d6000803e3d6000fd5b505050506040513d6020811015610ac657600080fd5b50506001600160a01b03821660009081526006602090815260408083204290556007909152902060020154610afb9082610d1e565b6001600160a01b0383166000908152600760205260409020600281019190915554610b2590610d78565b6001600160a01b03831660008181526007602090815260409182902060010193909355805191825291810183905281517f33ad5d6b2a46b5457e0d36286a2686a0390b0821dedbbdf8dcdcda64f4782c68929181900390910190a15b5050565b600480546001600160a01b039092166000818152600560205260408120849055600184018355919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90910180546001600160a01b0319169091179055565b600480546000198101908110610bf857fe5b60009182526020808320909101546001600160a01b0384811684526005909252604090922054600480549290931692918110610c3057fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152600591829052604081205460048054919392916000198101908110610c7e57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020556004805480610cae57fe5b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610d1583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e6c565b90505b92915050565b600082820183811015610d15576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000610d18600c54610858600b5485610d9590919063ffffffff16565b600082610da457506000610d18565b82820282848281610db157fe5b0414610d155760405162461bcd60e51b8152600401808060200182810382526021815260200180610f696021913960400191505060405180910390fd5b6000610d1583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610f03565b600d546001600160a01b0382166000908152600660205260408120549091429101108015610d185750600e54610e65836104a8565b1192915050565b60008184841115610efb5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610ec0578181015183820152602001610ea8565b50505050905090810190601f168015610eed5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183610f525760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610ec0578181015183820152602001610ea8565b506000838581610f5e57fe5b049594505050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212209b7159f2d42541e1eb73352a4b89cf0326df9f27b0170333f1f332fcb5c08dda64736f6c63430007060033
Deployed Bytecode
0x6080604052600436106102975760003560e01c8063998a6b5f1161015a578063db8d55f1116100c1578063f2fde38b1161007a578063f2fde38b14610a95578063f708a64f14610ac8578063f84ba65d14610b03578063f887ea4014610b3e578063f9207c1d14610b53578063fe9fbb8014610b7d5761029e565b8063db8d55f114610965578063dd62ed3e146109b4578063df20fd49146109ef578063e96fada214610a21578063f0b37c0414610a36578063f1f3bca314610a695761029e565b8063bfe1092811610113578063bfe1092814610876578063c15fc5ab1461088b578063ca33e64c146108c6578063cb213c12146108db578063d7c010321461090b578063dab84ee7146109505761029e565b8063998a6b5f1461077b578063a8aa1b31146107ad578063a9059cbb146107c2578063b6a5d7de146107fb578063b9f145571461082e578063bf56b371146108615761029e565b806356f965d7116101fe5780637880aadc116101b75780637880aadc146106d65780637d1db4a51461070b57806382247ec014610720578063893d20e8146107355780638a4068dd1461076657806395d89b41146102e35761029e565b806356f965d714610593578063571ac8b0146105dd5780635c85974f146106105780635df45a371461063a578063658d4b7f1461066857806370a08231146106a35761029e565b80631d54613d116102505780631d54613d1461045b57806323b872dd146104965780632d48e896146104d95780632f54bf6e14610509578063313ce5671461053c57806354200d6f146105675761029e565b8063048c7baf146102a357806306fdde03146102e3578063095ea7b31461036d578063113f49a2146103ba57806318160ddd146103e45780631ba8eee71461040b5761029e565b3661029e57005b600080fd5b3480156102af57600080fd5b506102e1600480360360808110156102c657600080fd5b50803515159060208101359060408101359060600135610bb0565b005b3480156102ef57600080fd5b506102f8610c6d565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561033257818101518382015260200161031a565b50505050905090810190601f16801561035f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561037957600080fd5b506103a66004803603604081101561039057600080fd5b506001600160a01b038135169060200135610c8c565b604080519115158252519081900360200190f35b3480156103c657600080fd5b506102e1600480360360208110156103dd57600080fd5b5035610cf3565b3480156103f057600080fd5b506103f9610d47565b60408051918252519081900360200190f35b34801561041757600080fd5b506102e1600480360360e081101561042e57600080fd5b50803515159060208101359060408101359060608101359060808101359060a08101359060c00135610d4d565b34801561046757600080fd5b506102e16004803603604081101561047e57600080fd5b506001600160a01b0381351690602001351515610e59565b3480156104a257600080fd5b506103a6600480360360608110156104b957600080fd5b506001600160a01b03813581169160208101359091169060400135610f05565b3480156104e557600080fd5b506102e1600480360360408110156104fc57600080fd5b5080359060200135610fc7565b34801561051557600080fd5b506103a66004803603602081101561052c57600080fd5b50356001600160a01b031661107f565b34801561054857600080fd5b50610551611096565b6040805160ff9092168252519081900360200190f35b34801561057357600080fd5b506102e16004803603602081101561058a57600080fd5b5035151561109b565b34801561059f57600080fd5b506105a8611132565b6040805196151587526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b3480156105e957600080fd5b506103a66004803603602081101561060057600080fd5b50356001600160a01b0316611152565b34801561061c57600080fd5b506102e16004803603602081101561063357600080fd5b5035611160565b34801561064657600080fd5b5061064f6111fe565b6040805192835260208301919091528051918290030190f35b34801561067457600080fd5b506102e16004803603604081101561068b57600080fd5b506001600160a01b0381351690602001351515611208565b3480156106af57600080fd5b506103f9600480360360208110156106c657600080fd5b50356001600160a01b03166112b4565b3480156106e257600080fd5b506106eb6112cf565b604080519315158452602084019290925282820152519081900360600190f35b34801561071757600080fd5b506103f96112e7565b34801561072c57600080fd5b506103f96112ed565b34801561074157600080fd5b5061074a6112f3565b604080516001600160a01b039092168252519081900360200190f35b34801561077257600080fd5b506102e1611302565b34801561078757600080fd5b506102e16004803603604081101561079e57600080fd5b50803590602001351515611397565b3480156107b957600080fd5b5061074a611450565b3480156107ce57600080fd5b506103a6600480360360408110156107e557600080fd5b506001600160a01b03813516906020013561145f565b34801561080757600080fd5b506102e16004803603602081101561081e57600080fd5b50356001600160a01b031661146c565b34801561083a57600080fd5b506102e16004803603602081101561085157600080fd5b50356001600160a01b031661150b565b34801561086d57600080fd5b506103f9611574565b34801561088257600080fd5b5061074a61157a565b34801561089757600080fd5b506102e1600480360360408110156108ae57600080fd5b506001600160a01b0381351690602001351515611589565b3480156108d257600080fd5b5061074a6116c3565b3480156108e757600080fd5b506108f06116d2565b60408051921515835260208301919091528051918290030190f35b34801561091757600080fd5b506102e16004803603606081101561092e57600080fd5b506001600160a01b0381358116916020810135821691604090910135166116e0565b34801561095c57600080fd5b5061074a6117aa565b34801561097157600080fd5b5061097a6117b9565b6040805197151588526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b3480156109c057600080fd5b506103f9600480360360408110156109d757600080fd5b506001600160a01b03813581169160200135166117dd565b3480156109fb57600080fd5b506102e160048036036040811015610a1257600080fd5b50803515159060200135611808565b348015610a2d57600080fd5b5061074a6118a4565b348015610a4257600080fd5b506102e160048036036020811015610a5957600080fd5b50356001600160a01b03166118b3565b348015610a7557600080fd5b506103f960048036036020811015610a8c57600080fd5b5035151561194e565b348015610aa157600080fd5b506102e160048036036020811015610ab857600080fd5b50356001600160a01b031661198d565b348015610ad457600080fd5b506102e160048036036040811015610aeb57600080fd5b506001600160a01b0381351690602001351515611a3e565b348015610b0f57600080fd5b506102e160048036036040811015610b2657600080fd5b506001600160a01b0381351690602001351515611c12565b348015610b4a57600080fd5b5061074a611cbe565b348015610b5f57600080fd5b506102e160048036036020811015610b7657600080fd5b5035611ccd565b348015610b8957600080fd5b506103a660048036036020811015610ba057600080fd5b50356001600160a01b0316611d28565b610bb933611d28565b610bf8576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6020805485151560ff1990911681178255602185905560006022556023849055602483905543602555604080519182529181018590528082018490526060810183905290517f07e4a4dc3e8013db5de426f27688d245ba84f9f9195eed42e7a94acb0a565b6f9181900360800190a150505050565b60408051808201909152600581526420b83296a360d91b602082015290565b3360008181526009602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b610cfc33611d28565b610d3b576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b610d4481611d46565b50565b60055490565b610d5633611d28565b610d95576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b600f805460ff19168815151790556012859055601384905560148390556015829055610dcd82610dc785818989611d93565b90611d93565b6016819055601087905560178290558190610de89088611d93565b10610df257600080fd5b60408051881515815260208101889052808201879052606081018690526080810185905260a0810184905260c0810183905290517f76d099a416dfc2ebb98aadbbac897c0d02a441d0c4fb2e3a9fdf6414d6dcfea99181900360e00190a150505050505050565b610e6233611d28565b610ea1576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b0382166000818152600d6020908152604091829020805460ff191685151590811790915582519384529083015280517f463f81492419927b6b1aef7271d6d7da08fb28638f175f3f7961b1571911f0409281900390910190a15050565b6001600160a01b038316600090815260096020908152604080832033845290915281205460001914610fb2576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600982528381203382529091529190912054610f8d918490611ded565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b610fbd848484611e84565b90505b9392505050565b610fd033611d28565b61100f576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b602654604080516316a4744b60e11b8152600481018590526024810184905290516001600160a01b0390921691632d48e8969160448082019260009290919082900301818387803b15801561106357600080fd5b505af1158015611077573d6000803e3d6000fd5b505050505050565b6000546001600160a01b038281169116145b919050565b600990565b6110a433611d28565b6110e3576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b600f8054821515610100810261ff00199092169190911790915560408051918252517f075af1ef3c1829076b56416deceff9df2103194b5dfbf756f8557478b494f7ff9181900360200190a150565b60205460215460225460235460245460255460ff90951694909192939495565b6000610ced82600019610c8c565b61116933611d28565b6111a8576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b62989680600554816111b657fe5b048110156111c357600080fd5b60068190556040805182815290517fa53407ff336a78b145e1a297adce2a5d7a54e6c31d13b4e69e04aad80b07b44b9181900360200190a150565b601b54601c549091565b61121133611d28565b611250576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b0382166000818152600a6020908152604091829020805460ff191685151590811790915582519384529083015280517f4d5771454588f51370a8a2e7e151354b6de0dc3159b14821b4ad76bc04c28bc79281900390910190a15050565b6001600160a01b031660009081526008602052604090205490565b600f54601154602a5461010090920460ff1692909190565b60065481565b60075481565b6000546001600160a01b031690565b61130b33611d28565b61134a576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b33600081815260086020908152604080832080546005805460288054918201909255820190925590548251908152915190949392600080516020612fc2833981519152928290030190a350565b6113a033611d28565b6113df576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b629896808211156113ef57600080fd5b60278290556026805460ff60a01b1916600160a01b8315159081029190911790915560408051848152602081019290925280517f5fdd419a37de0633d9df0f25b1b1f9a77e5794e82e87c24bc9ded94c0990b1769281900390910190a15050565b601e546001600160a01b031681565b6000610fc0338484611e84565b6114753361107f565b6114af576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916909217909155815192835290517fdc84e3a4c83602050e3865df792a4e6800211a79ac60db94e703a820ce8929249281900390910190a150565b61151433611d28565b611553576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03166000908152600e60205260409020805460ff19169055565b601f5481565b6026546001600160a01b031681565b61159233611d28565b6115d1576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b80156116595742426312cc03000111611631576040805162461bcd60e51b815260206004820152601760248201527f55736572207761732070757420696e206120636167652e000000000000000000604482015290519081900360640190fd5b6001600160a01b0382166000908152600e60205260409020805460ff1916600117905561167a565b6001600160a01b0382166000908152600e60205260409020805460ff191690555b604080516001600160a01b0384168152821515602082015281517ffc70dcce81b5afebab40f1a9a0fe597f9097cb179cb4508e875b7b166838f88d929181900390910190a15050565b6018546001600160a01b031681565b602954602a5460ff90911691565b6116e933611d28565b611728576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601880546001600160a01b038086166001600160a01b03199283168117909355601980548683169084168117909155601a805492861692909316821790925560408051938452602084019290925282820152517f12b4cfbea7a8dac3b859f7b88ff33db6082e4c6bb29a58b3d8edbd58ed7420289181900360600190a1505050565b601a546001600160a01b031681565b600f5460125460135460145460155460105460175460ff9096169590919293949596565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b61181133611d28565b611850576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6029805460ff1916831515908117909155602a829055604080519182526020820183905280517f30e0f7c488b6c70123097f13cf387e140b0e0b8c9d9e3473e502f35b035d377c9281900390910190a15050565b6019546001600160a01b031681565b6118bc3361107f565b6118f6576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff19169055815192835290517f8e4a23d6a5d81f013eca4bc92aeb9214ccafcaebd1f097c350c922d6e19122d59281900390910190a150565b600043601f54600101106119715760175461196a9060016122a1565b9050611091565b8161197e57601654610ced565b601054601654610ced91611d93565b6119963361107f565b6119d0576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff1916909217909155825191825291517f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163929181900390910190a150565b611a4733611d28565b611a86576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b0382163014801590611aad5750601e546001600160a01b03838116911614155b611ab657600080fd5b6001600160a01b0382166000908152600c60205260409020805460ff19168215801591909117909155611b535760265460408051630a5b654b60e11b81526001600160a01b03858116600483015260006024830181905292519316926314b6ca969260448084019391929182900301818387803b158015611b3657600080fd5b505af1158015611b4a573d6000803e3d6000fd5b50505050611bca565b6026546001600160a01b03838116600081815260086020526040808220548151630a5b654b60e11b8152600481019490945260248401525192909316926314b6ca969260448084019382900301818387803b158015611bb157600080fd5b505af1158015611bc5573d6000803e3d6000fd5b505050505b604080516001600160a01b0384168152821515602082015281517e8548b19959a911110b36c03f6148fa56fbcc2ce2553abf33112aa00bbdfd6a929181900390910190a15050565b611c1b33611d28565b611c5a576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b0382166000818152600b6020908152604091829020805460ff191685151590811790915582519384529083015280517fe1fc1cdd7520f99d4b4715966557867ae295b281f90d30b3631bae054b7f196c9281900390910190a15050565b601d546001600160a01b031681565b611cd633611d28565b611d15576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b610d4481670de0b6b3a764000002611d46565b6001600160a01b031660009081526001602052604090205460ff1690565b600454611d5d9082906001600160a01b03166122e3565b6040805182815290517fd33075670012f1689703c1e45a2b858dbe814a49e78c19fa053e181156e480699181900360200190a150565b600082820183811015610fc0576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008184841115611e7c5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611e41578181015183820152602001611e29565b50505050905090810190601f168015611e6e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b0383166000908152600e602052604081205460ff1615611ee5576040805162461bcd60e51b815260206004820152601060248201526f14d95b99195c881a5cc818985b9b995960821b604482015290519081900360640190fd5b6001600160a01b0383166000908152600e602052604090205460ff1615611f49576040805162461bcd60e51b8152602060048201526013602482015272149958da5c1a595b9d081a5cc818985b9b9959606a1b604482015290519081900360640190fd5b602b5460ff1615611f6657611f5f84848461243a565b9050610fc0565b611f6f84612509565b611f798483612569565b611f8383836125db565b611f8b612665565b15611f9857611f986126b6565b611fa0612c87565b15611fad57611fad612cd9565b611fb5612d20565b158015611fcf5750601e546001600160a01b038481169116145b15611ffe576001600160a01b038416600090815260086020526040902054611ff657600080fd5b611ffe612d28565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260089091529190912054612050918490611ded565b6001600160a01b03851660009081526008602052604081209190915561207585612d6a565b61207f578261208a565b61208a858585612d9a565b6001600160a01b0385166000908152600860205260409020549091506120b09082611d93565b6001600160a01b038086166000908152600860209081526040808320949094559188168152600c909152205460ff16612154576026546001600160a01b03868116600081815260086020526040808220548151630a5b654b60e11b8152600481019490945260248401525192909316926314b6ca969260448084019382900301818387803b15801561214157600080fd5b505af1925050508015612152575060015b505b6001600160a01b0384166000908152600c602052604090205460ff166121e5576026546001600160a01b03858116600081815260086020526040808220548151630a5b654b60e11b8152600481019490945260248401525192909316926314b6ca969260448084019382900301818387803b1580156121d257600080fd5b505af19250505080156121e3575060015b505b602654600160a01b900460ff161561225d57602654602754604080516001624d3b8760e01b031981526004810192909252516001600160a01b039092169163ffb2c4799160248082019260009290919082900301818387803b15801561224a57600080fd5b505af192505050801561225b575060015b505b836001600160a01b0316856001600160a01b0316600080516020612fc2833981519152836040518082815260200191505060405180910390a3506001949350505050565b6000610fc083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ded565b602b805460ff19166001179055604080516002808252606082018352600092602083019080368337505060035482519293506001600160a01b03169183915060009061232b57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061235957fe5b6001600160a01b03928316602091820292909201810191909152601d5460405163b6f9de9560e01b815260006004820181815287861660448401524260648401819052608060248501908152885160848601528851959097169663b6f9de95968b9694958a958c95939260a49092019187810191028083838b5b838110156123eb5781810151838201526020016123d3565b50505050905001955050505050506000604051808303818588803b15801561241257600080fd5b505af1158015612426573d6000803e3d6000fd5b5050602b805460ff19169055505050505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260089091529182205461248b918490611ded565b6001600160a01b0380861660009081526008602052604080822093909355908516815220546124ba9083611d93565b6001600160a01b038085166000818152600860209081526040918290209490945580518681529051919392881692600080516020612fc283398151915292918290030190a35060019392505050565b612511612d20565b80612520575061252081611d28565b610d44576040805162461bcd60e51b815260206004820152601560248201527428393296a630bab731b410283937ba32b1ba34b7b760591b604482015290519081900360640190fd5b6006548111158061259257506001600160a01b0382166000908152600b602052604090205460ff165b6125d7576040805162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015290519081900360640190fd5b5050565b6007546001600160a01b038316600090815260086020526040902054820111158061261e57506001600160a01b0382166000908152600d602052604090205460ff165b6125d7576040805162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015290519081900360640190fd5b601e546000906001600160a01b031633148015906126865750602b5460ff16155b8015612694575060295460ff165b80156126b15750602a543060009081526008602052604090205410155b905090565b602b805460ff19166001179055602a54601154108015906126de5750600f54610100900460ff165b1561293b57602a546011546126f2916122a1565b601155602a54600090612706906002612ea0565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061273a57fe5b6001600160a01b03928316602091820292909201015260035482519116908290600190811061276557fe5b6001600160a01b03928316602091820292909201810191909152601d5460405163791ac94760e01b8152600481018681526000602483018190523060648401819052426084850181905260a060448601908152895160a487015289514799979097169763791ac947978c9795968c9690939260c49091019187820191028083838b5b838110156127ff5781810151838201526020016127e7565b505050509050019650505050505050600060405180830381600087803b15801561282857600080fd5b505af115801561283c573d6000803e3d6000fd5b50505050600061285582476122a190919063ffffffff16565b601d546018546040805163f305d71960e01b81523060048201526024810189905260006044820181905260648201526001600160a01b0392831660848201524260a4820152905193945091169163f305d71991849160c480830192606092919082900301818588803b1580156128ca57600080fd5b505af11580156128de573d6000803e3d6000fd5b50505050506040513d60608110156128f557600080fd5b5050604080518281526020810186905281517f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506929181900390910190a150505050612c7b565b602a54604080516002808252606082018352600092602083019080368337019050509050308160008151811061296d57fe5b6001600160a01b03928316602091820292909201015260035482519116908290600190811061299857fe5b6001600160a01b03928316602091820292909201810191909152601d5460405163791ac94760e01b8152600481018681526000602483018190523060648401819052426084850181905260a060448601908152895160a487015289514799979097169763791ac947978c9795968c9690939260c49091019187820191028083838b5b83811015612a32578181015183820152602001612a1a565b505050509050019650505050505050600060405180830381600087803b158015612a5b57600080fd5b505af1158015612a6f573d6000803e3d6000fd5b505050506000612a8882476122a190919063ffffffff16565b90506000612aad601654612aa760135485612ee290919063ffffffff16565b90612ea0565b90506000612acc601654612aa760145486612ee290919063ffffffff16565b90506000612aeb601654612aa760155487612ee290919063ffffffff16565b9050602660009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b158015612b3d57600080fd5b505af193505050508015612b4f575060015b506019546040516000916001600160a01b0316906298968090859084818181858888f193505050503d8060008114612ba3576040519150601f19603f3d011682016040523d82523d6000602084013e612ba8565b606091505b505090508015612bc357601b54612bbf9084611d93565b601b555b601a546040516001600160a01b0390911690629896809084906000818181858888f193505050503d8060008114612c16576040519150601f19603f3d011682016040523d82523d6000602084013e612c1b565b606091505b50909150508015612c3757601c54612c339083611d93565b601c555b604080518981526020810187905281517f05ab84b321981d7d9a13402e494604c50821bcb5f2400d128fa06cd6451113d4929181900390910190a150505050505050505b602b805460ff19169055565b601e546000906001600160a01b03163314801590612ca85750602b5460ff16155b8015612cb6575060205460ff165b8015612cc85750436024546025540111155b80156126b157505060235447101590565b602354600454612cf291906001600160a01b03166122e3565b43602555602354602254612d0591611d93565b60228190556021541015612d1e576020805460ff191690555b565b601f54151590565b43601f556026805460ff60a01b1916600160a01b1790556040517f02ac8168caf2f254b394bd39e19417c5c28124ab89c9bc2d44921b19808e266990600090a1565b600f5460009060ff168015610ced5750506001600160a01b03166000908152600a602052604090205460ff161590565b601754601e546000918291612dcc9190612aa790612dc5906001600160a01b0389811691161461194e565b8690612ee2565b30600090815260086020526040902054909150612de99082611d93565b30600081815260086020908152604091829020939093558051848152905191926001600160a01b03891692600080516020612fc28339815191529281900390910190a3601e546001600160a01b038581169116148015612e505750600f54610100900460ff165b15612e8d57612e89612e80612e72601054601654611d9390919063ffffffff16565b601054612aa7908590612ee2565b60115490611d93565b6011555b612e9783826122a1565b95945050505050565b6000610fc083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612f3b565b600082612ef157506000610ced565b82820282848281612efe57fe5b0414610fc05760405162461bcd60e51b8152600401808060200182810382526021815260200180612fa16021913960400191505060405180910390fd5b60008183612f8a5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611e41578181015183820152602001611e29565b506000838581612f9657fe5b049594505050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220266e120f79d5f04ac2da90a248df588173800f4bb34b29fc66c9cd3c60327bb364736f6c63430007060033
Deployed Bytecode Sourcemap
14684:19640:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26985:451;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26985:451:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;18216:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18648:224;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18648:224:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;25904:95;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25904:95:0;;:::i;17940:88::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;28925:837;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28925:837:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;28529:190::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;28529:190:0;;;;;;;;;;:::i;19188:376::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;19188:376:0;;;;;;;;;;;;;;;;;:::i;30605:187::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30605:187:0;;;;;;;:::i;4862:107::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4862:107:0;-1:-1:-1;;;;;4862:107:0;;:::i;18036:80::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;30425:164;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30425:164:0;;;;:::i;32047:361::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18884:120;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18884:120:0;-1:-1:-1;;;;;18884:120:0;;:::i;27703:195::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27703:195:0;;:::i;31081:125::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;28343:174;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;28343:174:0;;;;;;;;;;:::i;18390:105::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18390:105:0;-1:-1:-1;;;;;18390:105:0;;:::i;32424:227::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15159:48;;;;;;;;;;;;;:::i;15225:45::-;;;;;;;;;;;;;:::i;18304:78::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;18304:78:0;;;;;;;;;;;;;;31698:335;;;;;;;;;;;;;:::i;30804:265::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30804:265:0;;;;;;;;;:::i;16218:19::-;;;;;;;;;;;;;:::i;19016:160::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;19016:160:0;;;;;;;;:::i;4439:131::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4439:131:0;-1:-1:-1;;;;;4439:131:0;;:::i;31591:97::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31591:97:0;-1:-1:-1;;;;;31591:97:0;;:::i;16250:25::-;;;;;;;;;;;;;:::i;16512:38::-;;;;;;;;;;;;;:::i;31211:372::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;31211:372:0;;;;;;;;;;:::i;15999:36::-;;;;;;;;;;;;;:::i;32663:169::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;29774:405;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;29774:405:0;;;;;;;;;;;;;;;;;;;:::i;16088:29::-;;;;;;;;;;;;;:::i;32844:335::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18503:133;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18503:133:0;;;;;;;;;;:::i;30191:222::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30191:222:0;;;;;;;;;:::i;16044:35::-;;;;;;;;;;;;;:::i;4656:136::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4656:136:0;-1:-1:-1;;;;;4656:136:0;;:::i;22010:221::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22010:221:0;;;;:::i;5290:181::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5290:181:0;-1:-1:-1;;;;;5290:181:0;;:::i;27913:418::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;27913:418:0;;;;;;;;;;:::i;28727:186::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;28727:186:0;;;;;;;;;;:::i;16185:24::-;;;;;;;;;;;;;:::i;26011:108::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26011:108:0;;:::i;5050:111::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5050:111:0;-1:-1:-1;;;;;5050:111:0;;:::i;26985:451::-;4312:24;4325:10;4312:12;:24::i;:::-;4304:48;;;;;-1:-1:-1;;;4304:48:0;;;;;;;;;;;;-1:-1:-1;;;4304:48:0;;;;;;;;;;;;;;;27113:18:::1;:29:::0;;;::::1;;-1:-1:-1::0;;27113:29:0;;::::1;::::0;::::1;::::0;;27155:14:::1;:21:::0;;;27113:18:::1;27189:22;:26:::0;27228:17:::1;:27:::0;;;27268:22:::1;:32:::0;;;27336:12:::1;27313:20;:35:::0;27366:60:::1;::::0;;;;;;;::::1;::::0;;;;;;;;;;;;;;;;;::::1;::::0;;;;;;;::::1;26985:451:::0;;;;:::o;18216:80::-;18288:5;;;;;;;;;;;;-1:-1:-1;;;18288:5:0;;;;18216:80;:::o;18648:224::-;18754:10;18723:4;18742:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;18742:32:0;;;;;;;;;;;:41;;;18801:37;;;;;;;18723:4;;18742:32;;18754:10;;18801:37;;;;;;;;-1:-1:-1;18858:4:0;18648:224;;;;;:::o;25904:95::-;4312:24;4325:10;4312:12;:24::i;:::-;4304:48;;;;;-1:-1:-1;;;4304:48:0;;;;;;;;;;;;-1:-1:-1;;;4304:48:0;;;;;;;;;;;;;;;25973:16:::1;25982:6;25973:8;:16::i;:::-;25904:95:::0;:::o;17940:88::-;18013:12;;17940:88;:::o;28925:837::-;4312:24;4325:10;4312:12;:24::i;:::-;4304:48;;;;;-1:-1:-1;;;4304:48:0;;;;;;;;;;;;-1:-1:-1;;;4304:48:0;;;;;;;;;;;;;;;29209:10:::1;:21:::0;;-1:-1:-1;;29209:21:0::1;::::0;::::1;;;::::0;;29243:10:::1;:24:::0;;;29280:13:::1;:30:::0;;;29323:12:::1;:28:::0;;;29364:6:::1;:16:::0;;;29404:59:::1;29364:16:::0;29404:47:::1;29323:28:::0;29404:47;29243:24;29280:30;29404:14:::1;:29::i;:::-;:33:::0;::::1;:47::i;:59::-;29393:8;:70:::0;;;29476:12:::1;:28:::0;;;29517:14:::1;:32:::0;;;;;29570:26:::1;::::0;29476:28;29570:12:::1;:26::i;:::-;:45;29562:54;;;::::0;::::1;;29646:106;::::0;;;::::1;;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::1;::::0;;;;;;;::::1;28925:837:::0;;;;;;;:::o;28529:190::-;4312:24;4325:10;4312:12;:24::i;:::-;4304:48;;;;;-1:-1:-1;;;4304:48:0;;;;;;;;;;;;-1:-1:-1;;;4304:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;28619:25:0;::::1;;::::0;;;:17:::1;:25;::::0;;;;;;;;:34;;-1:-1:-1;;28619:34:0::1;::::0;::::1;;::::0;;::::1;::::0;;;28671:38;;;;;;;::::1;::::0;;;::::1;::::0;;;;;;;;::::1;28529:190:::0;;:::o;19188:376::-;-1:-1:-1;;;;;19310:19:0;;19288:4;19310:19;;;:11;:19;;;;;;;;19330:10;19310:31;;;;;;;;-1:-1:-1;;19310:46:0;19307:184;;19408:69;;;;;;;;;;;-1:-1:-1;;;19408:69:0;;;;;;;;-1:-1:-1;;;;;19408:19:0;;-1:-1:-1;19408:19:0;;;:11;:19;;;;;19428:10;19408:31;;;;;;;;;;:69;;19444:6;;19408:35;:69::i;:::-;-1:-1:-1;;;;;19374:19:0;;;;;;:11;:19;;;;;;;;19394:10;19374:31;;;;;;;:103;19307:184;19514:40;19528:6;19536:9;19547:6;19514:13;:40::i;:::-;19507:47;;19188:376;;;;;;:::o;30605:187::-;4312:24;4325:10;4312:12;:24::i;:::-;4304:48;;;;;-1:-1:-1;;;4304:48:0;;;;;;;;;;;;-1:-1:-1;;;4304:48:0;;;;;;;;;;;;;;;30717:11:::1;::::0;:65:::1;::::0;;-1:-1:-1;;;30717:65:0;;::::1;::::0;::::1;::::0;;;;;;;;;;;-1:-1:-1;;;;;30717:11:0;;::::1;::::0;:35:::1;::::0;:65;;;;;:11:::1;::::0;:65;;;;;;;;:11;;:65;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;30605:187:::0;;:::o;4862:107::-;4917:4;4954:5;-1:-1:-1;;;;;4943:16:0;;;4954:5;;4943:16;4862:107;;;;:::o;18036:80::-;15081:1;18036:80;:::o;30425:164::-;4312:24;4325:10;4312:12;:24::i;:::-;4304:48;;;;;-1:-1:-1;;;4304:48:0;;;;;;;;;;;;-1:-1:-1;;;4304:48:0;;;;;;;;;;;;;;;30504:18:::1;:29:::0;;;::::1;;;::::0;::::1;-1:-1:-1::0;;30504:29:0;;::::1;::::0;;;::::1;::::0;;;30551:28:::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;30425:164:::0;:::o;32047:361::-;32187:18;;32222:14;;32253:22;;32292:17;;32326:22;;32365:20;;32187:18;;;;;32047:361;;;;;;:::o;18884:120::-;18939:4;18965:29;18973:7;-1:-1:-1;;18965:7:0;:29::i;27703:195::-;4312:24;4325:10;4312:12;:24::i;:::-;4304:48;;;;;-1:-1:-1;;;4304:48:0;;;;;;;;;;;;-1:-1:-1;;;4304:48:0;;;;;;;;;;;;;;;27805:8:::1;27790:12;;:23;;;;;;27780:6;:33;;27772:42;;;::::0;::::1;;27827:12;:21:::0;;;27866:22:::1;::::0;;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;27703:195:::0;:::o;31081:125::-;31173:13;;31188:7;;31081:125;;:::o;28343:174::-;4312:24;4325:10;4312:12;:24::i;:::-;4304:48;;;;;-1:-1:-1;;;4304:48:0;;;;;;;;;;;;-1:-1:-1;;;4304:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;28429:19:0;::::1;;::::0;;;:11:::1;:19;::::0;;;;;;;;:28;;-1:-1:-1;;28429:28:0::1;::::0;::::1;;::::0;;::::1;::::0;;;28475:32;;;;;;;::::1;::::0;;;::::1;::::0;;;;;;;;::::1;28343:174:::0;;:::o;18390:105::-;-1:-1:-1;;;;;18474:18:0;18456:7;18474:18;;;:9;:18;;;;;;;18390:105::o;32424:227::-;32540:18;;32575:23;;32615:13;;32540:18;;;;;;;32575:23;;32615:13;32424:227::o;15159:48::-;;;;:::o;15225:45::-;;;;:::o;18304:78::-;18356:7;18374:5;-1:-1:-1;;;;;18374:5:0;18304:78;:::o;31698:335::-;4312:24;4325:10;4312:12;:24::i;:::-;4304:48;;;;;-1:-1:-1;;;4304:48:0;;;;;;;;;;;;-1:-1:-1;;;4304:48:0;;;;;;;;;;;;;;;31796:10:::1;31761:22;31786:21:::0;;;:9:::1;:21;::::0;;;;;;;;;31845:12:::1;::::0;;31835:7:::1;::::0;;:22;;::::1;31820:37:::0;;;31894:24;::::1;31870:48:::0;;;32015:7;;31936:87;;;;;;;31786:21;;31796:10;31761:22;-1:-1:-1;;;;;;;;;;;31936:87:0;;;;;;::::1;4354:1;31698:335::o:0;30804:265::-;4312:24;4325:10;4312:12;:24::i;:::-;4304:48;;;;;-1:-1:-1;;;4304:48:0;;;;;;;;;;;;-1:-1:-1;;;4304:48:0;;;;;;;;;;;;;;;30914:8:::1;30907:3;:15;;30899:24;;;::::0;::::1;;30936:14;:20:::0;;;30969:16:::1;:29:::0;;-1:-1:-1;;;;30969:29:0::1;-1:-1:-1::0;;;30969:29:0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;31016:43:::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;;;;;;;;::::1;30804:265:::0;;:::o;16218:19::-;;;-1:-1:-1;;;;;16218:19:0;;:::o;19016:160::-;19096:4;19122:44;19136:10;19148:9;19159:6;19122:13;:44::i;4439:131::-;4129:19;4137:10;4129:7;:19::i;:::-;4121:38;;;;;-1:-1:-1;;;4121:38:0;;;;;;;;;;;;-1:-1:-1;;;4121:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;4501:19:0;::::1;;::::0;;;4523:4:::1;4501:19;::::0;;;;;;;;:26;;-1:-1:-1;;4501:26:0::1;::::0;;::::1;::::0;;;4545:15;;;;;;;::::1;::::0;;;;;;;;::::1;4439:131:::0;:::o;31591:97::-;4312:24;4325:10;4312:12;:24::i;:::-;4304:48;;;;;-1:-1:-1;;;4304:48:0;;;;;;;;;;;;-1:-1:-1;;;4304:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;31653:17:0::1;31673:5;31653:17:::0;;;:11:::1;:17;::::0;;;;:25;;-1:-1:-1;;31653:25:0::1;::::0;;31591:97::o;16250:25::-;;;;:::o;16512:38::-;;;-1:-1:-1;;;;;16512:38:0;;:::o;31211:372::-;4312:24;4325:10;4312:12;:24::i;:::-;4304:48;;;;;-1:-1:-1;;;4304:48:0;;;;;;;;;;;;-1:-1:-1;;;4304:48:0;;;;;;;;;;;;;;;31297:6:::1;31293:227;;;31361:15;31331;31349:9;31331:27;:45;31322:82;;;::::0;;-1:-1:-1;;;31322:82:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;31421:17:0;::::1;;::::0;;;:11:::1;:17;::::0;;;;:24;;-1:-1:-1;;31421:24:0::1;31441:4;31421:24;::::0;;31293:227:::1;;;-1:-1:-1::0;;;;;31489:17:0;::::1;;::::0;;;:11:::1;:17;::::0;;;;31482:24;;-1:-1:-1;;31482:24:0::1;::::0;;31293:227:::1;31537:36;::::0;;-1:-1:-1;;;;;31537:36:0;::::1;::::0;;;::::1;;;::::0;::::1;::::0;;;::::1;::::0;;;;;;;;;::::1;31211:372:::0;;:::o;15999:36::-;;;-1:-1:-1;;;;;15999:36:0;;:::o;32663:169::-;32768:11;;32796:13;;32768:11;;;;32663:169;:::o;29774:405::-;4312:24;4325:10;4312:12;:24::i;:::-;4304:48;;;;;-1:-1:-1;;;4304:48:0;;;;;;;;;;;;-1:-1:-1;;;4304:48:0;;;;;;;;;;;;;;;29920:21:::1;:46:::0;;-1:-1:-1;;;;;29920:46:0;;::::1;-1:-1:-1::0;;;;;;29920:46:0;;::::1;::::0;::::1;::::0;;;29979:20:::1;:44:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;30036:14:::1;:32:::0;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;30086:83:::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;::::1;::::0;;;;;;;::::1;29774:405:::0;;;:::o;16088:29::-;;;-1:-1:-1;;;;;16088:29:0;;:::o;32844:335::-;32977:10;;33004;;33031:13;;33061:12;;33090:6;;33113:12;;33142:14;;32977:10;;;;;32844:335;;;;;;;:::o;18503:133::-;-1:-1:-1;;;;;18605:19:0;;;18587:7;18605:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;18503:133::o;30191:222::-;4312:24;4325:10;4312:12;:24::i;:::-;4304:48;;;;;-1:-1:-1;;;4304:48:0;;;;;;;;;;;;-1:-1:-1;;;4304:48:0;;;;;;;;;;;;;;;30285:11:::1;:22:::0;;-1:-1:-1;;30285:22:0::1;::::0;::::1;;::::0;;::::1;::::0;;;30320:13:::1;:23:::0;;;30361:42:::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;;;;;;;::::1;30191:222:::0;;:::o;16044:35::-;;;-1:-1:-1;;;;;16044:35:0;;:::o;4656:136::-;4129:19;4137:10;4129:7;:19::i;:::-;4121:38;;;;;-1:-1:-1;;;4121:38:0;;;;;;;;;;;;-1:-1:-1;;;4121:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;4720:19:0;::::1;4742:5;4720:19:::0;;;:14:::1;:19;::::0;;;;;;;;:27;;-1:-1:-1;;4720:27:0::1;::::0;;4765:17;;;;;;;::::1;::::0;;;;;;;;::::1;4656:136:::0;:::o;22010:221::-;22066:7;22109:12;22091:10;;22104:1;22091:14;:30;22088:67;;22131:14;;:21;;22150:1;22131:18;:21::i;:::-;22124:28;;;;22088:67;22174:7;:47;;22213:8;;22174:47;;;22197:12;;22184:8;;:26;;:12;:26::i;5290:181::-;4129:19;4137:10;4129:7;:19::i;:::-;4121:38;;;;;-1:-1:-1;;;4121:38:0;;;;;;;;;;;;-1:-1:-1;;;4121:38:0;;;;;;;;;;;;;;;5368:5:::1;:11:::0;;-1:-1:-1;;;;;;5368:11:0::1;-1:-1:-1::0;;;;;5368:11:0;::::1;::::0;;::::1;::::0;;5392:19;;;-1:-1:-1;5392:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;5392:26:0::1;::::0;;::::1;::::0;;;5436:25;;;;;;;::::1;::::0;;;;;;;;;::::1;5290:181:::0;:::o;27913:418::-;4312:24;4325:10;4312:12;:24::i;:::-;4304:48;;;;;-1:-1:-1;;;4304:48:0;;;;;;;;;;;;-1:-1:-1;;;4304:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;28012:23:0;::::1;28030:4;28012:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;28049:4:0::1;::::0;-1:-1:-1;;;;;28039:14:0;;::::1;28049:4:::0;::::1;28039:14;;28012:41;28004:50;;;::::0;::::1;;-1:-1:-1::0;;;;;28067:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;28067:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;28113:154:::1;;28140:11;::::0;:31:::1;::::0;;-1:-1:-1;;;28140:31:0;;-1:-1:-1;;;;;28140:31:0;;::::1;;::::0;::::1;::::0;:11:::1;:31:::0;;;;;;;;:11;::::1;::::0;:20:::1;::::0;:31;;;;;:11;;:31;;;;;;:11;;:31;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;28113:154;;;28206:11;::::0;-1:-1:-1;;;;;28235:17:0;;::::1;28206:11;28235:17:::0;;;:9:::1;:17;::::0;;;;;;28206:47;;-1:-1:-1;;;28206:47:0;;::::1;::::0;::::1;::::0;;;;;;;;;:11;;;::::1;::::0;:20:::1;::::0;:47;;;;;;;;;;:11;;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;28113:154;28284:37;::::0;;-1:-1:-1;;;;;28284:37:0;::::1;::::0;;;::::1;;;::::0;::::1;::::0;;;::::1;::::0;;;;;;;;;::::1;27913:418:::0;;:::o;28727:186::-;4312:24;4325:10;4312:12;:24::i;:::-;4304:48;;;;;-1:-1:-1;;;4304:48:0;;;;;;;;;;;;-1:-1:-1;;;4304:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;28817:23:0;::::1;;::::0;;;:15:::1;:23;::::0;;;;;;;;:32;;-1:-1:-1;;28817:32:0::1;::::0;::::1;;::::0;;::::1;::::0;;;28867:36;;;;;;;::::1;::::0;;;::::1;::::0;;;;;;;;::::1;28727:186:::0;;:::o;16185:24::-;;;-1:-1:-1;;;;;16185:24:0;;:::o;26011:108::-;4312:24;4325:10;4312:12;:24::i;:::-;4304:48;;;;;-1:-1:-1;;;4304:48:0;;;;;;;;;;;;-1:-1:-1;;;4304:48:0;;;;;;;;;;;;;;;26080:29:::1;26089:6;26099:8;26089:19;26080:8;:29::i;5050:111::-:0;-1:-1:-1;;;;;5132:19:0;5106:4;5132:19;;;:14;:19;;;;;;;;;5050:111::o;26131:122::-;26205:4;;26187:23;;26197:6;;-1:-1:-1;;;;;26205:4:0;26187:9;:23::i;:::-;26228:15;;;;;;;;;;;;;;;;;26131:122;:::o;1322:191::-;1380:7;1414:5;;;1440:6;;;;1432:46;;;;;-1:-1:-1;;;1432:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;1669:202;1755:7;1793:12;1785:6;;;;1777:29;;;;-1:-1:-1;;;1777:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1831:5:0;;;1669:202::o;19576:1374::-;-1:-1:-1;;;;;19695:19:0;;19668:4;19695:19;;;:11;:19;;;;;;;;:28;19687:57;;;;;-1:-1:-1;;;19687:57:0;;;;;;;;;;;;-1:-1:-1;;;19687:57:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;19765:22:0;;;;;;:11;:22;;;;;;;;:31;19757:63;;;;;-1:-1:-1;;;19757:63:0;;;;;;;;;;;;-1:-1:-1;;;19757:63:0;;;;;;;;;;;;;;;19836:6;;;;19833:63;;;19852:41;19867:6;19875:9;19886:6;19852:14;:41::i;:::-;19845:48;;;;19833:63;19912:21;19926:6;19912:13;:21::i;:::-;19946:28;19959:6;19967;19946:12;:28::i;:::-;19987:35;20004:9;20015:6;19987:16;:35::i;:::-;20042:16;:14;:16::i;:::-;20039:35;;;20061:10;:8;:10::i;:::-;20089:19;:17;:19::i;:::-;20086:48;;;20111:20;:18;:20::i;:::-;20154:10;:8;:10::i;:::-;20153:11;:32;;;;-1:-1:-1;20181:4:0;;-1:-1:-1;;;;;20168:17:0;;;20181:4;;20168:17;20153:32;20150:81;;;-1:-1:-1;;;;;20196:17:0;;20216:1;20196:17;;;:9;:17;;;;;;20188:30;;;;;;20220:8;:6;:8::i;:::-;20267:53;;;;;;;;;;;-1:-1:-1;;;20267:53:0;;;;;;;;-1:-1:-1;;;;;20267:17:0;;-1:-1:-1;20267:17:0;;;:9;:17;;;;;;;;:53;;20289:6;;20267:21;:53::i;:::-;-1:-1:-1;;;;;20247:17:0;;;;;;:9;:17;;;;;:73;;;;20362:21;20257:6;20362:13;:21::i;:::-;:67;;20423:6;20362:67;;;20386:34;20394:6;20402:9;20413:6;20386:7;:34::i;:::-;-1:-1:-1;;;;;20465:20:0;;;;;;:9;:20;;;;;;20337:92;;-1:-1:-1;20465:40:0;;20337:92;20465:24;:40::i;:::-;-1:-1:-1;;;;;20442:20:0;;;;;;;:9;:20;;;;;;;;:63;;;;20526:24;;;;;:16;:24;;;;;;;20522:96;;20557:11;;-1:-1:-1;;;;;20586:17:0;;;20557:11;20586:17;;;:9;:17;;;;;;;20557:47;;-1:-1:-1;;;20557:47:0;;;;;;;;;;;;;;:11;;;;;:20;;:47;;;;;;;;;;:11;;:47;;;;;;;;;;;;;;;;;;;;;;;;;20553:63;;-1:-1:-1;;;;;20634:27:0;;;;;;:16;:27;;;;;;;;20630:105;;20668:11;;-1:-1:-1;;;;;20700:20:0;;;20668:11;20700:20;;;:9;:20;;;;;;;20668:53;;-1:-1:-1;;;20668:53:0;;;;;;;;;;;;;;:11;;;;;:20;;:53;;;;;;;;;;:11;;:53;;;;;;;;;;;;;;;;;;;;;;;;;20664:69;;20754:16;;-1:-1:-1;;;20754:16:0;;;;20751:101;;;20792:11;;20812:14;;20792:35;;;-1:-1:-1;;;;;;20792:35:0;;;;;;;;;;-1:-1:-1;;;;;20792:11:0;;;;:19;;:35;;;;;:11;;:35;;;;;;;;:11;;:35;;;;;;;;;;;;;;;;;;;;;;;;;20788:51;;20890:9;-1:-1:-1;;;;;20873:43:0;20882:6;-1:-1:-1;;;;;20873:43:0;-1:-1:-1;;;;;;;;;;;20901:14:0;20873:43;;;;;;;;;;;;;;;;;;-1:-1:-1;20936:4:0;;19576:1374;-1:-1:-1;;;;19576:1374:0:o;1521:140::-;1579:7;1608:43;1612:1;1615;1608:43;;;;;;;;;;;;;;;;;:3;:43::i;26590:383::-;16816:6;:13;;-1:-1:-1;;16816:13:0;16825:4;16816:13;;;26692:16:::1;::::0;;26706:1:::1;26692:16:::0;;;;;::::1;::::0;;-1:-1:-1;;26692:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;26731:4:0::1;::::0;26721:7;;;;-1:-1:-1;;;;;;26731:4:0::1;::::0;26721:7;;-1:-1:-1;26731:4:0::1;::::0;26721:7:::1;;;;;;;;;:14;-1:-1:-1::0;;;;;26721:14:0::1;;;-1:-1:-1::0;;;;;26721:14:0::1;;;::::0;::::1;26766:4;26748;26753:1;26748:7;;;;;;;;-1:-1:-1::0;;;;;26748:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;26788:6:::1;::::0;:175:::1;::::0;-1:-1:-1;;;26788:175:0;;:6:::1;:175;::::0;::::1;::::0;;;;;::::1;::::0;;;;26935:15:::1;26788:175:::0;;;;;;;;;;;;;;;;;;;;;:6;;;::::1;::::0;:57:::1;::::0;26853:6;;26788;;26895:4;;26916:2;;26788:175;;;;;;;;;::::1;::::0;::::1;::::0;;;:6;:175:::1;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;16834:6:0;:14;;-1:-1:-1;;16834:14:0;;;-1:-1:-1;;;;;;26590:383:0:o;20962:340::-;21094:53;;;;;;;;;;;-1:-1:-1;;;21094:53:0;;;;;;;;-1:-1:-1;;;;;21094:17:0;;21055:4;21094:17;;;:9;:17;;;;;;;:53;;21116:6;;21094:21;:53::i;:::-;-1:-1:-1;;;;;21074:17:0;;;;;;;:9;:17;;;;;;:73;;;;21183:20;;;;;;;:32;;21208:6;21183:24;:32::i;:::-;-1:-1:-1;;;;;21160:20:0;;;;;;;:9;:20;;;;;;;;;:55;;;;21233:35;;;;;;;21160:20;;21233:35;;;;-1:-1:-1;;;;;;;;;;;21233:35:0;;;;;;;;-1:-1:-1;21288:4:0;20962:340;;;;;:::o;21528:144::-;21602:10;:8;:10::i;:::-;:34;;;;21616:20;21629:6;21616:12;:20::i;:::-;21594:68;;;;;-1:-1:-1;;;21594:68:0;;;;;;;;;;;;-1:-1:-1;;;21594:68:0;;;;;;;;;;;;;;21684:170;21783:12;;21773:6;:22;;:49;;;-1:-1:-1;;;;;;21799:23:0;;;;;;:15;:23;;;;;;;;21773:49;21765:79;;;;;-1:-1:-1;;;21765:79:0;;;;;;;;;;;;-1:-1:-1;;;21765:79:0;;;;;;;;;;;;;;;21684:170;;:::o;21310:203::-;21437:10;;-1:-1:-1;;;;;21406:20:0;;;;;;:9;:20;;;;;;:27;;:41;;;:73;;-1:-1:-1;;;;;;21451:28:0;;;;;;:17;:28;;;;;;;;21406:73;21398:105;;;;;-1:-1:-1;;;21398:105:0;;;;;;;;;;;;-1:-1:-1;;;21398:105:0;;;;;;;;;;;;;;22844:207;22933:4;;22893;;-1:-1:-1;;;;;22933:4:0;22919:10;:18;;;;:40;;-1:-1:-1;22953:6:0;;;;22952:7;22919:40;:66;;;;-1:-1:-1;22974:11:0;;;;22919:66;:122;;;;-1:-1:-1;23028:13:0;;23018:4;23000:24;;;;:9;:24;;;;;;:41;;22919:122;22912:129;;22844:207;:::o;23063:2523::-;16816:6;:13;;-1:-1:-1;;16816:13:0;16825:4;16816:13;;;23144::::1;::::0;23117:23:::1;::::0;:40:::1;::::0;::::1;::::0;:62:::1;;-1:-1:-1::0;23161:18:0::1;::::0;::::1;::::0;::::1;;;23117:62;23114:2463;;;23251:13;::::0;23223:23:::1;::::0;:42:::1;::::0;:27:::1;:42::i;:::-;23197:23;:68:::0;23308:13:::1;::::0;23282:23:::1;::::0;23308:20:::1;::::0;23326:1:::1;23308:17;:20::i;:::-;23373:16;::::0;;23387:1:::1;23373:16:::0;;;;;::::1;::::0;;23282:46;;-1:-1:-1;23349:21:0::1;::::0;23373:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;23373:16:0::1;23349:40;;23424:4;23406;23411:1;23406:7;;;;;;;;-1:-1:-1::0;;;;;23406:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;23456:4:::1;::::0;23446:7;;23456:4;::::1;::::0;23446;;23456;;23446:7;::::1;;;;;-1:-1:-1::0;;;;;23446:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:14;;;;23547:6:::1;::::0;:227:::1;::::0;-1:-1:-1;;;23547:227:0;;::::1;::::0;::::1;::::0;;;23481:21:::1;23547:227:::0;;;;;;23716:4:::1;23547:227:::0;;;;;;23742:15:::1;23547:227:::0;;;;;;;;;;;;;;;;;;;;;23505:21:::1;::::0;23547:6;;;::::1;::::0;:57:::1;::::0;23625:15;;23481:21;;23683:4;;23547:227;;;;;;;;;;::::1;::::0;::::1;::::0;;;23481:21;23547:227:::1;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;23795:17;23815:40;23841:13;23815:21;:25;;:40;;;;:::i;:::-;23876:6;::::0;24051:21:::1;::::0;23876:249:::1;::::0;;-1:-1:-1;;;23876:249:0;;23945:4:::1;23876:249;::::0;::::1;::::0;;;;;;;:6:::1;:249:::0;;;;;;;;;;-1:-1:-1;;;;;24051:21:0;;::::1;23876:249:::0;;;;24093:15:::1;23876:249:::0;;;;;;23795:60;;-1:-1:-1;23876:6:0;::::1;::::0;:22:::1;::::0;23795:60;;23876:249;;;;;::::1;::::0;;;;;;;;23795:60;23876:6;:249;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;23876:249:0;24163:39;;;;;23876:249:::1;24163:39:::0;::::1;::::0;;;;;::::1;::::0;;;;;;;;;::::1;23114:2463;;;;;;;24260:13;::::0;24314:16:::1;::::0;;24328:1:::1;24314:16:::0;;;;;::::1;::::0;;24237:20:::1;::::0;24314:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;24314:16:0::1;24290:40;;24365:4;24347;24352:1;24347:7;;;;;;;;-1:-1:-1::0;;;;;24347:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;24397:4:::1;::::0;24387:7;;24397:4;::::1;::::0;24387;;24397;;24387:7;::::1;;;;;-1:-1:-1::0;;;;;24387:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:14;;;;24488:6:::1;::::0;:224:::1;::::0;-1:-1:-1;;;24488:224:0;;::::1;::::0;::::1;::::0;;;24422:21:::1;24488:224:::0;;;;;;24654:4:::1;24488:224:::0;;;;;;24680:15:::1;24488:224:::0;;;;;;;;;;;;;;;;;;;;;24446:21:::1;::::0;24488:6;;;::::1;::::0;:57:::1;::::0;24566:12;;24422:21;;24621:4;;24488:224;;;;;;;;;;::::1;::::0;::::1;::::0;;;24422:21;24488:224:::1;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;24733:17;24753:40;24779:13;24753:21;:25;;:40;;;;:::i;:::-;24733:60;;24810:27;24840:42;24873:8;;24840:28;24854:13;;24840:9;:13;;:28;;;;:::i;:::-;:32:::0;::::1;:42::i;:::-;24810:72;;24899:26;24928:41;24960:8;;24928:27;24942:12;;24928:9;:13;;:27;;;;:::i;:41::-;24899:70;;24986:20;25009:35;25035:8;;25009:21;25023:6;;25009:9;:13;;:21;;;;:::i;:35::-;24986:58;;25069:11;;;;;;;;;-1:-1:-1::0;;;;;25069:11:0::1;-1:-1:-1::0;;;;;25069:19:0::1;;25096;25069:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;25065:65:::0;25177:20:::1;::::0;25169:80:::1;::::0;25151:12:::1;::::0;-1:-1:-1;;;;;25177:20:0::1;::::0;25236:8:::1;::::0;25211:18;;25151:12;25169:80;25151:12;25169:80;25211:18;25177:20;25236:8;25169:80:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25150:99;;;25269:7;25266:69;;;25295:13;::::0;:37:::1;::::0;25313:18;25295:17:::1;:37::i;:::-;25279:13;:53:::0;25266:69:::1;25377:14;::::0;25369:68:::1;::::0;-1:-1:-1;;;;;25377:14:0;;::::1;::::0;25424:8:::1;::::0;25405:12;;25377:14:::1;25369:68:::0;25377:14;25369:68;25405:12;25377:14;25424:8;25369:68:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;25355:82:0;;-1:-1:-1;;25454:51:0;::::1;;;25477:7;::::0;:25:::1;::::0;25489:12;25477:11:::1;:25::i;:::-;25467:7;:35:::0;25454:51:::1;25530:33;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;;;;;;;;::::1;23114:2463;;;;;;;;;16834:6:::0;:14;;-1:-1:-1;;16834:14:0;;;23063:2523::o;25598:294::-;25690:4;;25650;;-1:-1:-1;;;;;25690:4:0;25676:10;:18;;;;:40;;-1:-1:-1;25710:6:0;;;;25709:7;25676:40;:73;;;;-1:-1:-1;25731:18:0;;;;25676:73;:149;;;;;25813:12;25787:22;;25764:20;;:45;:61;;25676:149;:206;;;;-1:-1:-1;;25865:17:0;;25840:21;:42;;;25598:294::o;26265:313::-;26327:17;;26346:4;;26317:34;;26327:17;-1:-1:-1;;;;;26346:4:0;26317:9;:34::i;:::-;26387:12;26364:20;:35;26464:17;;26437:22;;:45;;:26;:45::i;:::-;26412:22;:70;;;26523:14;;-1:-1:-1;26495:74:0;;;26540:18;:26;;-1:-1:-1;;26540:26:0;;;26495:74;26265:313::o;27448:94::-;27517:10;;:15;;27448:94;:::o;27554:137::-;27607:12;27594:10;:25;27632:16;:23;;-1:-1:-1;;;;27632:23:0;-1:-1:-1;;;27632:23:0;;;27673:8;;;;27632:23;;27673:8;27554:137::o;21866:132::-;21954:10;;21928:4;;21954:10;;:34;;;;-1:-1:-1;;;;;;;21969:19:0;;;;;:11;:19;;;;;;;;21968:20;;21866:132::o;22243:589::-;22416:14;;22405:4;;22328:7;;;;22370:61;;22416:14;22370:41;;22381:29;;-1:-1:-1;;;;;22393:16:0;;;22405:4;;22393:16;22381:11;:29::i;:::-;22370:6;;:10;:41::i;:61::-;22493:4;22475:24;;;;:9;:24;;;;;;22350:81;;-1:-1:-1;22475:39:0;;22350:81;22475:28;:39::i;:::-;22466:4;22448:24;;;;:9;:24;;;;;;;;;:66;;;;22532:42;;;;;;;22466:4;;-1:-1:-1;;;;;22532:42:0;;;-1:-1:-1;;;;;;;;;;;22532:42:0;;;;;;;;;22606:4;;-1:-1:-1;;;;;22594:16:0;;;22606:4;;22594:16;:38;;;;-1:-1:-1;22614:18:0;;;;;;;22594:38;22591:187;;;22676:88;22704:59;22736:26;22749:12;;22736:8;;:12;;:26;;;;:::i;:::-;22718:12;;22704:27;;:9;;:13;:27::i;:59::-;22676:23;;;:27;:88::i;:::-;22650:23;:114;22591:187;22801:21;:6;22812:9;22801:10;:21::i;:::-;22794:28;22243:589;-1:-1:-1;;;;;22243:589:0:o;2155:136::-;2213:7;2242:39;2246:1;2249;2242:39;;;;;;;;;;;;;;;;;:3;:39::i;1879:268::-;1937:7;1963:6;1959:51;;-1:-1:-1;1995:1:0;1988:8;;1959:51;2038:5;;;2042:1;2038;:5;:1;2064:5;;;;;:10;2056:56;;;;-1:-1:-1;;;2056:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2299:359;2385:7;2491:12;2484:5;2476:28;;;;-1:-1:-1;;;2476:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2517:9;2533:1;2529;:5;;;;;;;2299:359;-1:-1:-1;;;;;2299:359:0:o
Swarm Source
ipfs://9b7159f2d42541e1eb73352a4b89cf0326df9f27b0170333f1f332fcb5c08dda
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.