ERC-20
Overview
Max Total Supply
1,000,000,000 KTS
Holders
30
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
15,000,000 KTSValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Kitties
Compiler Version
v0.8.13+commit.abaa5c0e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-04-03 */ /** ██╗░░██╗██╗████████╗████████╗██╗███████╗░██████╗ ██║░██╔╝██║╚══██╔══╝╚══██╔══╝██║██╔════╝██╔════╝ █████═╝░██║░░░██║░░░░░░██║░░░██║█████╗░░╚█████╗░ ██╔═██╗░██║░░░██║░░░░░░██║░░░██║██╔══╝░░░╚═══██╗ ██║░╚██╗██║░░░██║░░░░░░██║░░░██║███████╗██████╔╝ ╚═╝░░╚═╝╚═╝░░░╚═╝░░░░░░╚═╝░░░╚═╝╚══════╝╚═════╝░ social and community services, please visit : Telegram : https://t.me/KittiesEth Twitter : https://twitter.com/KittiesEth Website : https://KittiesEth.com More informations and marketing please contact us to the email address below: [email protected] */ //SPDX-License-Identifier: MIT pragma solidity ^0.8.13; /** * Standard SafeMath, stripped down to just add/sub/mul/div */ library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } } /** * BEP20 standard interface. */ interface IBEP20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function getOwner() external view returns (address); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address _owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } /** * Allows for contract ownership for multiple adressess */ abstract contract Auth { address internal owner; mapping (address => bool) internal authorizations; constructor(address _owner) { owner = _owner; authorizations[_owner] = true; } /** * Function modifier to require caller to be contract owner */ modifier onlyOwner() { require(isOwner(msg.sender), "!OWNER"); _; } /** * Function modifier to require caller to be authorized */ modifier authorized() { require(isAuthorized(msg.sender), "!AUTHORIZED"); _; } /** * Authorize address. Owner only */ function authorize(address account) public onlyOwner { authorizations[account] = true; } /** * Remove address authorization. Owner only */ function unauthorize(address account) public onlyOwner { authorizations[account] = false; } /** * Check if address is owner */ function isOwner(address account) public view returns (bool) { return account == owner; } /** * Return address authorization status */ function isAuthorized(address account) public view returns (bool) { return authorizations[account]; } /** * Transfer ownership to new address. Caller must be owner. Leaves old owner authorized */ function transferOwnership(address payable account) public onlyOwner { owner = account; authorizations[account] = true; emit OwnershipTransferred(account); } event OwnershipTransferred(address owner); } /* Standard IDEXFactory */ interface IDEXFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } /* Standard IDEXRouter */ interface IDEXRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } /* Interface for the DividendDistributor */ interface IDividendDistributor { function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external; function setRewardToken (IBEP20 _ETHautoLP) external; function setShare(address shareholder, uint256 amount) external; function deposit() external payable; function process(uint256 gas) external; } /* Our DividendDistributor contract responsible for distributing the earn token */ contract DividendDistributor is IDividendDistributor { using SafeMath for uint256; address _token; struct Share { uint256 amount; uint256 totalExcluded; uint256 totalRealised; } // EARN IBEP20 public ETHautoLP = IBEP20(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2); //WETH address WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; IDEXRouter router; address[] shareholders; mapping (address => uint256) shareholderIndexes; mapping (address => uint256) shareholderClaims; mapping (address => Share) public shares; uint256 public totalShares; uint256 public totalDividends; uint256 public totalDistributed; uint256 public dividendsPerShare; uint256 public dividendsPerShareAccuracyFactor = 10 ** 36; uint256 public minPeriod = 60 * 60; uint256 public minDistribution = 1 * (10 ** 12); uint256 currentIndex; bool initialized; modifier initialization() { require(!initialized); _; initialized = true; } modifier onlyToken() { require(msg.sender == _token); _; } constructor (address _router) { router = _router != address(0) ? IDEXRouter(_router) : IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); _token = msg.sender; } //New function to set the Reward function setRewardToken (IBEP20 _ETHautoLP) external override onlyToken { ETHautoLP = IBEP20(_ETHautoLP); } function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external override onlyToken { minPeriod = _minPeriod; minDistribution = _minDistribution; } function setShare(address shareholder, uint256 amount) external override onlyToken { if(shares[shareholder].amount > 0){ distributeDividend(shareholder); } if(amount > 0 && shares[shareholder].amount == 0){ addShareholder(shareholder); }else if(amount == 0 && shares[shareholder].amount > 0){ removeShareholder(shareholder); } totalShares = totalShares.sub(shares[shareholder].amount).add(amount); shares[shareholder].amount = amount; shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount); } function deposit() external payable override onlyToken { uint256 balanceBefore = ETHautoLP.balanceOf(address(this)); address[] memory path = new address[](2); path[0] = WETH; path[1] = address(ETHautoLP); router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}( 0, path, address(this), block.timestamp ); uint256 amount = ETHautoLP.balanceOf(address(this)).sub(balanceBefore); totalDividends = totalDividends.add(amount); dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares)); } function process(uint256 gas) external override onlyToken { uint256 shareholderCount = shareholders.length; if(shareholderCount == 0) { return; } uint256 gasUsed = 0; uint256 gasLeft = gasleft(); uint256 iterations = 0; while(gasUsed < gas && iterations < shareholderCount) { if(currentIndex >= shareholderCount){ currentIndex = 0; } if(shouldDistribute(shareholders[currentIndex])){ distributeDividend(shareholders[currentIndex]); } gasUsed = gasUsed.add(gasLeft.sub(gasleft())); gasLeft = gasleft(); currentIndex++; iterations++; } } function shouldDistribute(address shareholder) internal view returns (bool) { return shareholderClaims[shareholder] + minPeriod < block.timestamp && getUnpaidEarnings(shareholder) > minDistribution; } function distributeDividend(address shareholder) internal { if(shares[shareholder].amount == 0){ return; } uint256 amount = getUnpaidEarnings(shareholder); if(amount > 0){ totalDistributed = totalDistributed.add(amount); ETHautoLP.transfer(shareholder, amount); shareholderClaims[shareholder] = block.timestamp; shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount); shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount); } } function claimAutoStake(address shareholder) external onlyToken{ distributeDividend(shareholder); } function getUnpaidEarnings(address shareholder) public view returns (uint256) { if(shares[shareholder].amount == 0){ return 0; } uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount); uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded; if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; } return shareholderTotalDividends.sub(shareholderTotalExcluded); } function getCumulativeDividends(uint256 share) internal view returns (uint256) { return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor); } function addShareholder(address shareholder) internal { shareholderIndexes[shareholder] = shareholders.length; shareholders.push(shareholder); } function removeShareholder(address shareholder) internal { shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1]; shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder]; shareholders.pop(); } } /* Token contract */ contract Kitties is IBEP20, Auth { using SafeMath for uint256; // Addresses address ETHautoLP = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; // WETH address WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; address DEAD = 0x000000000000000000000000000000000000dEaD; address ZERO = 0x0000000000000000000000000000000000000000; address TOKENDISTRIBUTOR; // These are owner by default address public autoLiquidityReceiver; address public marketingFeeReceiver; address public GameDevelopmentFeeReceiver; // Name and symbol string constant _name = "KITTIES"; string constant _symbol = "KTS"; uint8 constant _decimals = 18; // Total supply uint256 _totalSupply = 1000000000 * (10 ** _decimals); // Max wallet and TX uint256 public _maxBuyTxAmount = _totalSupply * 200 / 10000; // 2% uint256 public _maxSellTxAmount = _totalSupply * 200 / 10000; // 2% uint256 public _maxWalletToken = ( _totalSupply * 200 ) / 10000; // 2% // Mappings mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) _allowances; mapping (address => bool) isFeeExempt; mapping (address => bool) isTxLimitExempt; mapping (address => bool) isTimelockExempt; mapping (address => bool) isDividendExempt; // Buy Fees uint256 liquidityFeeBuy = 400; uint256 GameDevelopmentFeeBuy = 900; uint256 CashPrizePoolFeeBuy = 400; uint256 marketingFeeBuy = 500; uint256 totalFeeBuy = 2500; // Sell fees uint256 liquidityFeeSell = 400; uint256 GameDevelopmentFeeSell = 900; uint256 CashPrizePoolFeeSell = 100; uint256 marketingFeeSell = 500; uint256 totalFeeSell = 2500; // Fee variables uint256 liquidityFee; uint256 GameDevelopmentFee; uint256 CashPrizePoolFee; uint256 marketingFee; uint256 totalFee; uint256 feeDenominator = 10000; // Sell amount of tokens when a sell takes place uint256 public swapThreshold = _totalSupply * 20 / 10000; // 0.2% of supply // Liquidity uint256 targetLiquidity = 40; uint256 targetLiquidityDenominator = 100; DividendDistributor distributor; uint256 distributorGas = 500000; // Cooldown & timer functionality // NOTE: Solidity uses Unix timestamp so 1 is 1 second. bool public buyCooldownEnabled = true; uint8 public cooldownTimerInterval = 5; mapping (address => uint) private cooldownTimer; // Other variables IDEXRouter public router; address public pair; uint256 public launchedAt; bool public tradingOpen = false; bool public swapEnabled = true; bool inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } /* Token constructor */ constructor () Auth(msg.sender) { router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); pair = IDEXFactory(router.factory()).createPair(WETH, address(this)); _allowances[address(this)][address(router)] = type(uint256).max; distributor = new DividendDistributor(address(router)); // Should be the owner wallet/token distributor TOKENDISTRIBUTOR = msg.sender; address _presaler = msg.sender; isFeeExempt[_presaler] = true; isTxLimitExempt[_presaler] = true; // No timelock for these people isTimelockExempt[msg.sender] = true; isTimelockExempt[DEAD] = true; isTimelockExempt[address(this)] = true; // Exempt from dividend isDividendExempt[pair] = true; isDividendExempt[address(this)] = true; isDividendExempt[DEAD] = true; // Set the marketing and liq receiver to the owner as default autoLiquidityReceiver = msg.sender; marketingFeeReceiver = 0x5e93E3Ff29e14860aAcdD0813fBB2C41631873A6; GameDevelopmentFeeReceiver = 0x0bb24aa420249790B8A259b128bdAF2bc156B012; _balances[_presaler] = _totalSupply; emit Transfer(address(0), _presaler, _totalSupply); } receive() external payable { } function totalSupply() external view override returns (uint256) { return _totalSupply; } function decimals() external pure override returns (uint8) { return _decimals; } function symbol() external pure override returns (string memory) { return _symbol; } function name() external pure override returns (string memory) { return _name; } function getOwner() external view override returns (address) { return owner; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function approveMax(address spender) external returns (bool) { return approve(spender, type(uint256).max); } function transfer(address recipient, uint256 amount) external override returns (bool) { return _transferFrom(msg.sender, recipient, amount); } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { if(_allowances[sender][msg.sender] != type(uint256).max){ _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance"); } return _transferFrom(sender, recipient, amount); } // setting the max wallet in percentages // NOTE: 1% = 100 function setMaxWalletPercent(uint256 maxWallPercent) external onlyOwner() { _maxWalletToken = _totalSupply.mul(maxWallPercent).div(10000); } // Set the tokendistributor, exempt for everything and able to SEND before launch. function setTokenDistributor(address _tokenDistributor) external authorized{ TOKENDISTRIBUTOR = _tokenDistributor; isFeeExempt[_tokenDistributor] = true; isTxLimitExempt[_tokenDistributor] = true; isTimelockExempt[_tokenDistributor] = true; } // Main transfer function function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) { if(inSwap){ return _basicTransfer(sender, recipient, amount); } // Check if trading is enabled if(!authorizations[sender] && !authorizations[recipient] && TOKENDISTRIBUTOR != sender){ require(tradingOpen,"Trading not enabled yet"); } // Check if buying or selling bool isSell = recipient == pair; // Set buy or sell fees setCorrectFees(isSell); // Check max wallet checkMaxWallet(sender, recipient, amount); // Buycooldown checkBuyCooldown(sender, recipient); // Checks maxTx checkTxLimit(sender, amount, recipient, isSell); // Check if we should do the swapback if(shouldSwapBack()){ swapBack(); } //Exchange tokens _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); uint256 amountReceived = shouldTakeFee(sender) ? takeFee(sender, amount) : amount; _balances[recipient] = _balances[recipient].add(amountReceived); // Dividend tracker if(!isDividendExempt[sender]) { try distributor.setShare(sender, _balances[sender]) {} catch {} } if(!isDividendExempt[recipient]) { try distributor.setShare(recipient, _balances[recipient]) {} catch {} } try distributor.process(distributorGas) {} catch {} emit Transfer(sender, recipient, amountReceived); return true; } // Do a normal transfer function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } // Set the correct fees for buying or selling function setCorrectFees(bool isSell) internal { if(isSell){ liquidityFee = liquidityFeeSell; GameDevelopmentFee = GameDevelopmentFeeSell; CashPrizePoolFee = CashPrizePoolFeeSell; marketingFee = marketingFeeSell; totalFee = totalFeeSell; } else { liquidityFee = liquidityFeeBuy; GameDevelopmentFee = GameDevelopmentFeeBuy; CashPrizePoolFee = CashPrizePoolFeeBuy; marketingFee = marketingFeeBuy; totalFee = totalFeeBuy; } } // Check for maxTX function checkTxLimit(address sender, uint256 amount, address recipient, bool isSell) internal view { if (recipient != owner){ if(isSell){ require(amount <= _maxSellTxAmount || isTxLimitExempt[sender] || isTxLimitExempt[recipient], "TX Limit Exceeded"); } else { require(amount <= _maxBuyTxAmount || isTxLimitExempt[sender] || isTxLimitExempt[recipient], "TX Limit Exceeded"); } } } // Check buy cooldown function checkBuyCooldown(address sender, address recipient) internal { if (sender == pair && buyCooldownEnabled && !isTimelockExempt[recipient]) { require(cooldownTimer[recipient] < block.timestamp,"Please wait between two buys"); cooldownTimer[recipient] = block.timestamp + cooldownTimerInterval; } } // Check maxWallet function checkMaxWallet(address sender, address recipient, uint256 amount) internal view { if (!authorizations[sender] && !isTxLimitExempt[sender] && !isTxLimitExempt[recipient] && recipient != owner && recipient != address(this) && recipient != address(DEAD) && recipient != pair && recipient != marketingFeeReceiver && recipient != autoLiquidityReceiver && recipient != GameDevelopmentFeeReceiver){ uint256 heldTokens = balanceOf(recipient); require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much."); } } // Check if sender is not feeExempt function shouldTakeFee(address sender) internal view returns (bool) { return !isFeeExempt[sender]; } // Take the normal total Fee function takeFee(address sender, uint256 amount) internal returns (uint256) { uint256 feeAmount = amount.mul(totalFee).div(feeDenominator); _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); return amount.sub(feeAmount); } // Check if we should sell tokens function shouldSwapBack() internal view returns (bool) { return msg.sender != pair && !inSwap && swapEnabled && _balances[address(this)] >= swapThreshold; } // switch Trading function tradingStatus(bool _status) public onlyOwner { tradingOpen = _status; } // Enable cooldown between trades function cooldownEnabled(bool _status, uint8 _interval) public onlyOwner { buyCooldownEnabled = _status; cooldownTimerInterval = _interval; } // Main swapback to sell tokens for WETH function swapBack() internal swapping { uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee; uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2); uint256 amountToSwap = swapThreshold.sub(amountToLiquify); address[] memory path = new address[](2); path[0] = address(this); path[1] = WETH; uint256 balanceBefore = address(this).balance; router.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); uint256 amountWETH = address(this).balance.sub(balanceBefore); uint256 totalWETHFee = totalFee.sub(dynamicLiquidityFee.div(2)); uint256 amountWETHLiquidity = amountWETH.mul(dynamicLiquidityFee).div(totalWETHFee).div(2); uint256 amountWETHCashPrizePool = amountWETH.mul(CashPrizePoolFee).div(totalWETHFee); uint256 amountWETHMarketing = amountWETH.mul(marketingFee).div(totalWETHFee); uint256 amountWETHGameDevelopment = amountWETH.mul(GameDevelopmentFee).div(totalWETHFee); try distributor.deposit{value: amountWETHCashPrizePool}() {} catch {} (bool successMarketing, /* bytes memory data */) = payable(marketingFeeReceiver).call{value: amountWETHMarketing, gas: 30000}(""); (bool successGameDevelopment, /* bytes memory data */) = payable(GameDevelopmentFeeReceiver).call{value: amountWETHGameDevelopment, gas: 30000}(""); require(successMarketing, "marketing receiver rejected ETH transfer"); require(successGameDevelopment, "GameDevelopment receiver rejected ETH transfer"); if(amountToLiquify > 0){ router.addLiquidityETH{value: amountWETHLiquidity}( address(this), amountToLiquify, 0, 0, autoLiquidityReceiver, block.timestamp ); emit AutoLiquify(amountWETHLiquidity, amountToLiquify); } } // Buy amount of tokens with WETH from the contract function buyTokens(uint256 amount, address to) internal swapping { address[] memory path = new address[](2); path[0] = WETH; path[1] = address(this); router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}( 0, path, to, block.timestamp ); } // Check when the token is launched function launched() internal view returns (bool) { return launchedAt != 0; } // Set the launchedAt to token launch function launch() internal { launchedAt = block.number; } // Set max buy TX function setBuyTxLimitInPercent(uint256 maxBuyTxPercent) external onlyOwner { _maxBuyTxAmount = _totalSupply.mul(maxBuyTxPercent).div(10000); } // Set max sell TX function setSellTxLimitInPercent(uint256 maxSellTxPercent) external onlyOwner { _maxSellTxAmount = _totalSupply.mul(maxSellTxPercent).div(10000); } // Exempt from dividend function setIsDividendExempt(address holder, bool exempt) external authorized { require(holder != address(this) && holder != pair); isDividendExempt[holder] = exempt; if(exempt){ distributor.setShare(holder, 0); }else{ distributor.setShare(holder, _balances[holder]); } } // Exempt from fee function setIsFeeExempt(address holder, bool exempt) external authorized { isFeeExempt[holder] = exempt; } // Exempt from max TX function setIsTxLimitExempt(address holder, bool exempt) external authorized { isTxLimitExempt[holder] = exempt; } // Exempt from buy CD function setIsTimelockExempt(address holder, bool exempt) external authorized { isTimelockExempt[holder] = exempt; } function setFullWhitelist(address holder, bool exempt) external authorized { isTxLimitExempt[holder] = exempt; isFeeExempt[holder] = exempt; isTimelockExempt[holder] = exempt; } // Set our buy fees function setBuyFees(uint256 _liquidityFeeBuy, uint256 _GameDevelopmentFeeBuy, uint256 _CashPrizePoolFeeBuy, uint256 _marketingFeeBuy, uint256 _feeDenominator) external onlyOwner { liquidityFeeBuy = _liquidityFeeBuy; GameDevelopmentFeeBuy = _GameDevelopmentFeeBuy; CashPrizePoolFeeBuy = _CashPrizePoolFeeBuy; marketingFeeBuy = _marketingFeeBuy; totalFeeBuy = _liquidityFeeBuy.add(_GameDevelopmentFeeBuy).add(_CashPrizePoolFeeBuy).add(_marketingFeeBuy); feeDenominator = _feeDenominator; } // Set our sell fees function setSellFees(uint256 _liquidityFeeSell, uint256 _GameDevelopmentFeeSell, uint256 _CashPrizePoolFeeSell, uint256 _marketingFeeSell, uint256 _feeDenominator) external onlyOwner { liquidityFeeSell = _liquidityFeeSell; GameDevelopmentFeeSell = _GameDevelopmentFeeSell; CashPrizePoolFeeSell = _CashPrizePoolFeeSell; marketingFeeSell = _marketingFeeSell; totalFeeSell = _liquidityFeeSell.add(_GameDevelopmentFeeSell).add(_CashPrizePoolFeeSell).add(_marketingFeeSell); feeDenominator = _feeDenominator; } // Set the marketing and liquidity receivers function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _GameDevelopmentFeeReceiver) external authorized { autoLiquidityReceiver = _autoLiquidityReceiver; marketingFeeReceiver = _marketingFeeReceiver; GameDevelopmentFeeReceiver = _GameDevelopmentFeeReceiver; } // Set swapBack settings function setSwapBackSettings(bool _enabled, uint256 _amount) external authorized { swapEnabled = _enabled; swapThreshold = _totalSupply * _amount / 10000; } // Set target liquidity function setTargetLiquidity(uint256 _target, uint256 _denominator) external authorized { targetLiquidity = _target; targetLiquidityDenominator = _denominator; } // Save spare ETH from CA function manualSend() external authorized { uint256 contractETHBalance = address(this).balance; payable(autoLiquidityReceiver).transfer(contractETHBalance); } // Set criteria for auto distribution function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external authorized { distributor.setDistributionCriteria(_minPeriod, _minDistribution); } // Let people claim there stake function claimAutoStake() external { distributor.claimAutoStake(msg.sender); } //New function to set the Reward function setRewardToken(IBEP20 _ETHautoLP) external authorized { distributor.setRewardToken(_ETHautoLP); } // Check how much earnings are unpaid function getUnpaidEarnings(address shareholder) public view returns (uint256) { return distributor.getUnpaidEarnings(shareholder); } // Set gas for distributor function setDistributorSettings(uint256 gas) external authorized { require(gas < 750000); distributorGas = gas; } // Get the circulatingSupply function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO)); } // Get the liquidity backing function getLiquidityBacking(uint256 accuracy) public view returns (uint256) { return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply()); } // Get if we are over liquified or not function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) { return getLiquidityBacking(accuracy) > target; } event AutoLiquify(uint256 amountWETH, uint256 amountBOG); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountWETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"GameDevelopmentFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxBuyTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxSellTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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":[],"name":"buyCooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimAutoStake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint8","name":"_interval","type":"uint8"}],"name":"cooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldownTimerInterval","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getUnpaidEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","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":"uint256","name":"_liquidityFeeBuy","type":"uint256"},{"internalType":"uint256","name":"_GameDevelopmentFeeBuy","type":"uint256"},{"internalType":"uint256","name":"_CashPrizePoolFeeBuy","type":"uint256"},{"internalType":"uint256","name":"_marketingFeeBuy","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuyTxPercent","type":"uint256"}],"name":"setBuyTxLimitInPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_GameDevelopmentFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setFullWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTimelockExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"setMaxWalletPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IBEP20","name":"_ETHautoLP","type":"address"}],"name":"setRewardToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFeeSell","type":"uint256"},{"internalType":"uint256","name":"_GameDevelopmentFeeSell","type":"uint256"},{"internalType":"uint256","name":"_CashPrizePoolFeeSell","type":"uint256"},{"internalType":"uint256","name":"_marketingFeeSell","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxSellTxPercent","type":"uint256"}],"name":"setSellTxLimitInPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenDistributor","type":"address"}],"name":"setTokenDistributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"account","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600280546001600160a01b031990811673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290811790925560038054821690921790915560048054821661dead1790556005805490911690556200005e6012600a62000599565b6200006e90633b9aca00620005b1565b600a55612710600a5460c8620000859190620005b1565b620000919190620005d3565b600b55612710600a5460c8620000a89190620005b1565b620000b49190620005d3565b600c55612710600a5460c8620000cb9190620005b1565b620000d79190620005d3565b600d556101906014556103846015556101906016556101f46017556109c4601855610190601955610384601a556064601b556101f4601c556109c4601d55612710602355612710600a5460146200012f9190620005b1565b6200013b9190620005d3565b6024556028602581905560646026556207a12090556029805461050161ffff1991821617909155602e80549091166101001790553480156200017c57600080fd5b5060008054336001600160a01b031991821681178355825260016020818152604093849020805460ff1916909217909155602b8054737a250d5630b4cf539739df2c5dacb4c659f2488d931683179055825163c45a015560e01b81529251919263c45a015592600480830193928290030181865afa15801562000203573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002299190620005f6565b6003546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af11580156200027b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a19190620005f6565b602c80546001600160a01b0319166001600160a01b03928316179055306000908152600f60209081526040808320602b8054861685529252918290206000199055549051911690620002f39062000476565b6001600160a01b039091168152602001604051809103906000f08015801562000320573d6000803e3d6000fd5b50602780546001600160a01b039283166001600160a01b031991821617909155600680548216339081179091556000818152601060209081526040808320805460ff19908116600190811790925560118452828520805482168317905560128452828520805482168317905560048054891686528386208054831684179055308087528487208054841685179055602c548a1687526013865284872080548416851790558652838620805483168417905554909716845281842080549097161790955560078054851684179055600880548516735e93e3ff29e14860aacdd0813fbb2c41631873a617905560098054909416730bb24aa420249790b8a259b128bdaf2bc156b01217909355600a54828252600e84528482208190559351938452909283927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35062000621565b6110d6806200315d83390190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004db578160001904821115620004bf57620004bf62000484565b80851615620004cd57918102915b93841c93908002906200049f565b509250929050565b600082620004f45750600162000593565b81620005035750600062000593565b81600181146200051c5760028114620005275762000547565b600191505062000593565b60ff8411156200053b576200053b62000484565b50506001821b62000593565b5060208310610133831016604e8410600b84101617156200056c575081810a62000593565b6200057883836200049a565b80600019048211156200058f576200058f62000484565b0290505b92915050565b6000620005aa60ff841683620004e3565b9392505050565b6000816000190483118215151615620005ce57620005ce62000484565b500290565b600082620005f157634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200060957600080fd5b81516001600160a01b0381168114620005aa57600080fd5b612b2c80620006316000396000f3fe6080604052600436106103545760003560e01c806382bf293c116101c6578063d51ed1c8116100f7578063f2fde38b11610095578063f84ba65d1161006f578063f84ba65d14610a07578063f887ea4014610a27578063fe9fbb8014610a47578063ffb54a9914610a6757600080fd5b8063f2fde38b146109b2578063f4293890146109d2578063f708a64f146109e757600080fd5b8063df20fd49116100d1578063df20fd4914610932578063df4a76c514610952578063e96fada214610972578063f0b37c041461099257600080fd5b8063d51ed1c8146108ac578063d7c01032146108cc578063dd62ed3e146108ec57600080fd5b8063a8aa1b3111610164578063bf56b3711161013e578063bf56b37114610840578063c1cf53c414610856578063ca33e64c14610876578063cf4be3941461089657600080fd5b8063a8aa1b31146107e0578063a9059cbb14610800578063b6a5d7de1461082057600080fd5b806395d89b41116101a057806395d89b411461075f5780639d1944f51461078b578063a409dc14146107ab578063a6b06a27146107c057600080fd5b806382bf293c14610701578063893d20e8146107215780638aee81271461073f57600080fd5b8063313ce567116102a0578063617fe0ed1161023e57806370a082311161021857806370a0823114610676578063722b62ad146106ac57806378109e54146106cb5780637affa29b146106e157600080fd5b8063617fe0ed1461061d578063658d4b7f146106375780636ddd17131461065757600080fd5b80633fd5f2c11161027a5780633fd5f2c11461058557806347a28b79146105bd57806350db71fb146105dd578063571ac8b0146105fd57600080fd5b8063313ce5671461052d578063334773271461054f57806338280e6b1461056557600080fd5b8063201e79911161030d5780632b112e49116102e75780632b112e49146104a95780632d48e896146104be5780632d594567146104de5780632f54bf6e146104fe57600080fd5b8063201e79911461044957806323b872dd1461046957806328fd31981461048957600080fd5b80630445b6671461036057806306fdde0314610389578063095ea7b3146103c25780630d295980146103f25780631161ae391461041457806318160ddd1461043457600080fd5b3661035b57005b600080fd5b34801561036c57600080fd5b5061037660245481565b6040519081526020015b60405180910390f35b34801561039557600080fd5b506040805180820190915260078152664b49545449455360c81b60208201525b60405161038091906126bc565b3480156103ce57600080fd5b506103e26103dd366004612726565b610a81565b6040519015158152602001610380565b3480156103fe57600080fd5b5061041261040d366004612767565b610aee565b005b34801561042057600080fd5b506103e261042f366004612782565b610b34565b34801561044057600080fd5b50600a54610376565b34801561045557600080fd5b50610412610464366004612782565b610b48565b34801561047557600080fd5b506103e26104843660046127a4565b610b78565b34801561049557600080fd5b506103766104a43660046127e5565b610c3a565b3480156104b557600080fd5b50610376610ca9565b3480156104ca57600080fd5b506104126104d9366004612782565b610cfb565b3480156104ea57600080fd5b506104126104f9366004612802565b610d8a565b34801561050a57600080fd5b506103e26105193660046127e5565b6000546001600160a01b0391821691161490565b34801561053957600080fd5b5060125b60405160ff9091168152602001610380565b34801561055b57600080fd5b50610376600b5481565b34801561057157600080fd5b506104126105803660046127e5565b610ddb565b34801561059157600080fd5b506009546105a5906001600160a01b031681565b6040516001600160a01b039091168152602001610380565b3480156105c957600080fd5b506104126105d836600461283f565b610e62565b3480156105e957600080fd5b506104126105f836600461287a565b610ec2565b34801561060957600080fd5b506103e26106183660046127e5565b610f12565b34801561062957600080fd5b506029546103e29060ff1681565b34801561064357600080fd5b5061041261065236600461287a565b610f20565b34801561066357600080fd5b50602e546103e290610100900460ff1681565b34801561068257600080fd5b506103766106913660046127e5565b6001600160a01b03166000908152600e602052604090205490565b3480156106b857600080fd5b5060295461053d90610100900460ff1681565b3480156106d757600080fd5b50610376600d5481565b3480156106ed57600080fd5b506104126106fc3660046128af565b610f70565b34801561070d57600080fd5b5061041261071c3660046128af565b610fc1565b34801561072d57600080fd5b506000546001600160a01b03166105a5565b34801561074b57600080fd5b5061041261075a3660046127e5565b61100c565b34801561076b57600080fd5b506040805180820190915260038152624b545360e81b60208201526103b5565b34801561079757600080fd5b506104126107a63660046128af565b611093565b3480156107b757600080fd5b506104126110cc565b3480156107cc57600080fd5b506104126107db36600461287a565b61112b565b3480156107ec57600080fd5b50602c546105a5906001600160a01b031681565b34801561080c57600080fd5b506103e261081b366004612726565b61119d565b34801561082c57600080fd5b5061041261083b3660046127e5565b6111aa565b34801561084c57600080fd5b50610376602d5481565b34801561086257600080fd5b5061041261087136600461283f565b6111fb565b34801561088257600080fd5b506007546105a5906001600160a01b031681565b3480156108a257600080fd5b50610376600c5481565b3480156108b857600080fd5b506103766108c73660046128af565b611255565b3480156108d857600080fd5b506104126108e73660046128c8565b611293565b3480156108f857600080fd5b50610376610907366004612913565b6001600160a01b039182166000908152600f6020908152604080832093909416825291909152205490565b34801561093e57600080fd5b5061041261094d366004612941565b6112f7565b34801561095e57600080fd5b5061041261096d3660046128af565b611352565b34801561097e57600080fd5b506008546105a5906001600160a01b031681565b34801561099e57600080fd5b506104126109ad3660046127e5565b61139d565b3480156109be57600080fd5b506104126109cd3660046127e5565b6113e8565b3480156109de57600080fd5b5061041261147e565b3480156109f357600080fd5b50610412610a0236600461287a565b6114e1565b348015610a1357600080fd5b50610412610a2236600461287a565b6115e5565b348015610a3357600080fd5b50602b546105a5906001600160a01b031681565b348015610a5357600080fd5b506103e2610a623660046127e5565b611635565b348015610a7357600080fd5b50602e546103e29060ff1681565b336000818152600f602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610adc9086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610b215760405162461bcd60e51b8152600401610b189061295d565b60405180910390fd5b602e805460ff1916911515919091179055565b600082610b4083611255565b119392505050565b610b5133611635565b610b6d5760405162461bcd60e51b8152600401610b189061297d565b602591909155602655565b6001600160a01b0383166000908152600f6020908152604080832033845290915281205460001914610c25576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600f82528381203382529091529190912054610c00918490611653565b6001600160a01b0385166000908152600f602090815260408083203384529091529020555b610c3084848461168d565b90505b9392505050565b60275460405163051fa63360e31b81526001600160a01b03838116600483015260009216906328fd319890602401602060405180830381865afa158015610c85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae891906129a2565b6005546001600160a01b03166000908152600e6020526040812054610cf6906004546001600160a01b03166000908152600e6020526040902054610cf090600a5490611a5f565b90611a5f565b905090565b610d0433611635565b610d205760405162461bcd60e51b8152600401610b189061297d565b6027546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b158015610d6e57600080fd5b505af1158015610d82573d6000803e3d6000fd5b505050505050565b6000546001600160a01b03163314610db45760405162461bcd60e51b8152600401610b189061295d565b6029805461ffff191692151561ff0019169290921761010060ff9290921691909102179055565b610de433611635565b610e005760405162461bcd60e51b8152600401610b189061297d565b600680546001600160a01b039092166001600160a01b0319909216821790556000908152601060209081526040808320805460ff1990811660019081179092556011845282852080548216831790556012909352922080549091169091179055565b6000546001600160a01b03163314610e8c5760405162461bcd60e51b8152600401610b189061295d565b6014859055601584905560168390556017829055610eb682610eb085818989611aa1565b90611aa1565b60185560235550505050565b610ecb33611635565b610ee75760405162461bcd60e51b8152600401610b189061297d565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b6000610ae882600019610a81565b610f2933611635565b610f455760405162461bcd60e51b8152600401610b189061297d565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610f9a5760405162461bcd60e51b8152600401610b189061295d565b610fbb612710610fb583600a54611b0090919063ffffffff16565b90611b82565b600b5550565b6000546001600160a01b03163314610feb5760405162461bcd60e51b8152600401610b189061295d565b611006612710610fb583600a54611b0090919063ffffffff16565b600d5550565b61101533611635565b6110315760405162461bcd60e51b8152600401610b189061297d565b602754604051638aee812760e01b81526001600160a01b03838116600483015290911690638aee812790602401600060405180830381600087803b15801561107857600080fd5b505af115801561108c573d6000803e3d6000fd5b5050505050565b61109c33611635565b6110b85760405162461bcd60e51b8152600401610b189061297d565b620b71b081106110c757600080fd5b602855565b60275460405163d3a528a160e01b81523360048201526001600160a01b039091169063d3a528a190602401600060405180830381600087803b15801561111157600080fd5b505af1158015611125573d6000803e3d6000fd5b50505050565b61113433611635565b6111505760405162461bcd60e51b8152600401610b189061297d565b6001600160a01b039091166000908152601160209081526040808320805494151560ff19958616811790915560108352818420805486168217905560129092529091208054909216179055565b6000610c3333848461168d565b6000546001600160a01b031633146111d45760405162461bcd60e51b8152600401610b189061295d565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6000546001600160a01b031633146112255760405162461bcd60e51b8152600401610b189061295d565b6019859055601a849055601b839055601c82905561124982610eb085818989611aa1565b601d5560235550505050565b6000610ae8611262610ca9565b602c546001600160a01b03166000908152600e6020526040902054610fb59061128c906002611b00565b8590611b00565b61129c33611635565b6112b85760405162461bcd60e51b8152600401610b189061297d565b600780546001600160a01b039485166001600160a01b031991821617909155600880549385169382169390931790925560098054919093169116179055565b61130033611635565b61131c5760405162461bcd60e51b8152600401610b189061297d565b602e805461ff00191661010084151502179055600a54612710906113419083906129d1565b61134b91906129f0565b6024555050565b6000546001600160a01b0316331461137c5760405162461bcd60e51b8152600401610b189061295d565b611397612710610fb583600a54611b0090919063ffffffff16565b600c5550565b6000546001600160a01b031633146113c75760405162461bcd60e51b8152600401610b189061295d565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b031633146114125760405162461bcd60e51b8152600401610b189061295d565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b61148733611635565b6114a35760405162461bcd60e51b8152600401610b189061297d565b60075460405147916001600160a01b03169082156108fc029083906000818181858888f193505050501580156114dd573d6000803e3d6000fd5b5050565b6114ea33611635565b6115065760405162461bcd60e51b8152600401610b189061297d565b6001600160a01b038216301480159061152d5750602c546001600160a01b03838116911614155b61153657600080fd5b6001600160a01b0382166000908152601360205260409020805460ff1916821580159190911790915561159c57602754604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca9690604401610d54565b6027546001600160a01b038381166000818152600e602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401610d54565b6115ee33611635565b61160a5760405162461bcd60e51b8152600401610b189061297d565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526001602052604090205460ff1690565b600081848411156116775760405162461bcd60e51b8152600401610b1891906126bc565b5060006116848486612a12565b95945050505050565b602e5460009062010000900460ff16156116b3576116ac848484611bc4565b9050610c33565b6001600160a01b03841660009081526001602052604090205460ff161580156116f557506001600160a01b03831660009081526001602052604090205460ff16155b801561170f57506006546001600160a01b03858116911614155b1561176657602e5460ff166117665760405162461bcd60e51b815260206004820152601760248201527f54726164696e67206e6f7420656e61626c6564207965740000000000000000006044820152606401610b18565b602c546001600160a01b0384811691161461178081611caa565b61178b858585611cf3565b6117958585611eaf565b6117a185848684611f91565b6117a96120c9565b156117b6576117b6612123565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0388166000908152600e9091529190912054611808918590611653565b6001600160a01b0386166000908152600e6020908152604080832093909355601090529081205460ff161561183d5783611847565b61184786856125e8565b6001600160a01b0386166000908152600e602052604090205490915061186d9082611aa1565b6001600160a01b038087166000908152600e602090815260408083209490945591891681526013909152205460ff16611911576027546001600160a01b038781166000818152600e602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b1580156118fe57600080fd5b505af192505050801561190f575060015b505b6001600160a01b03851660009081526013602052604090205460ff166119a2576027546001600160a01b038681166000818152600e602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561198f57600080fd5b505af19250505080156119a0575060015b505b6027546028546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c479916119da9160040190815260200190565b600060405180830381600087803b1580156119f457600080fd5b505af1925050508015611a05575060015b50846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a4b91815260200190565b60405180910390a350600195945050505050565b6000610c3383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611653565b600080611aae8385612a29565b905083811015610c335760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b18565b600082600003611b1257506000610ae8565b6000611b1e83856129d1565b905082611b2b85836129f0565b14610c335760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b18565b6000610c3383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061268e565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600e90915291822054611c15918490611653565b6001600160a01b038086166000908152600e60205260408082209390935590851681522054611c449083611aa1565b6001600160a01b038085166000818152600e602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c989086815260200190565b60405180910390a35060019392505050565b8015611cd157601954601e55601a54601f55601b54602055601c54602155601d5460225550565b601454601e55601554601f556016546020556017546021556018546022555b50565b6001600160a01b03831660009081526001602052604090205460ff16158015611d3557506001600160a01b03831660009081526011602052604090205460ff16155b8015611d5a57506001600160a01b03821660009081526011602052604090205460ff16155b8015611d7457506000546001600160a01b03838116911614155b8015611d8957506001600160a01b0382163014155b8015611da357506004546001600160a01b03838116911614155b8015611dbd5750602c546001600160a01b03838116911614155b8015611dd757506008546001600160a01b03838116911614155b8015611df157506007546001600160a01b03838116911614155b8015611e0b57506009546001600160a01b03838116911614155b15611eaa576001600160a01b0382166000908152600e6020526040902054600d54611e368383612a29565b11156111255760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610b18565b505050565b602c546001600160a01b038381169116148015611ece575060295460ff165b8015611ef357506001600160a01b03811660009081526012602052604090205460ff16155b156114dd576001600160a01b0381166000908152602a60205260409020544211611f5f5760405162461bcd60e51b815260206004820152601c60248201527f506c656173652077616974206265747765656e2074776f2062757973000000006044820152606401610b18565b602954611f7490610100900460ff1642612a29565b6001600160a01b0382166000908152602a60205260409020555050565b6000546001600160a01b0383811691161461112557801561203d57600c5483111580611fd557506001600160a01b03841660009081526011602052604090205460ff165b80611ff857506001600160a01b03821660009081526011602052604090205460ff165b6120385760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610b18565b611125565b600b548311158061206657506001600160a01b03841660009081526011602052604090205460ff165b8061208957506001600160a01b03821660009081526011602052604090205460ff165b6111255760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610b18565b602c546000906001600160a01b031633148015906120f05750602e5462010000900460ff16155b80156121035750602e54610100900460ff165b8015610cf6575050602454306000908152600e6020526040902054101590565b602e805462ff000019166201000017905560255460265460009161214691610b34565b61215257601e54612155565b60005b905060006121796002610fb5602254610fb586602454611b0090919063ffffffff16565b9050600061219282602454611a5f90919063ffffffff16565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106121cc576121cc612a41565b6001600160a01b0392831660209182029290920101526003548251911690829060019081106121fd576121fd612a41565b6001600160a01b039283166020918202929092010152602b5460405163791ac94760e01b81524792919091169063791ac94790612247908690600090879030904290600401612a57565b600060405180830381600087803b15801561226157600080fd5b505af1158015612275573d6000803e3d6000fd5b50505050600061228e8247611a5f90919063ffffffff16565b905060006122a96122a0886002611b82565b60225490611a5f565b905060006122be6002610fb58481878d611b00565b905060006122db83610fb560205487611b0090919063ffffffff16565b905060006122f884610fb560215488611b0090919063ffffffff16565b9050600061231585610fb5601f5489611b0090919063ffffffff16565b9050602760009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b15801561236757600080fd5b505af193505050508015612379575060015b506008546040516000916001600160a01b03169061753090859084818181858888f193505050503d80600081146123cc576040519150601f19603f3d011682016040523d82523d6000602084013e6123d1565b606091505b50506009546040519192506000916001600160a01b039091169061753090859084818181858888f193505050503d806000811461242a576040519150601f19603f3d011682016040523d82523d6000602084013e61242f565b606091505b50509050816124915760405162461bcd60e51b815260206004820152602860248201527f6d61726b6574696e672072656365697665722072656a656374656420455448206044820152673a3930b739b332b960c11b6064820152608401610b18565b806124f55760405162461bcd60e51b815260206004820152602e60248201527f47616d65446576656c6f706d656e742072656365697665722072656a6563746560448201526d321022aa24103a3930b739b332b960911b6064820152608401610b18565b8b156125cd57602b5460075460405163f305d71960e01b8152306004820152602481018f905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990889060c40160606040518083038185885af115801561256b573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906125909190612ac8565b505060408051888152602081018f90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050602e805462ff0000191690555050505050505050505050565b600080612606602354610fb560225486611b0090919063ffffffff16565b306000908152600e60205260409020549091506126239082611aa1565b306000818152600e6020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906126749085815260200190565b60405180910390a36126868382611a5f565b949350505050565b600081836126af5760405162461bcd60e51b8152600401610b1891906126bc565b50600061168484866129f0565b600060208083528351808285015260005b818110156126e9578581018301518582016040015282016126cd565b818111156126fb576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114611cf057600080fd5b6000806040838503121561273957600080fd5b823561274481612711565b946020939093013593505050565b8035801515811461276257600080fd5b919050565b60006020828403121561277957600080fd5b610c3382612752565b6000806040838503121561279557600080fd5b50508035926020909101359150565b6000806000606084860312156127b957600080fd5b83356127c481612711565b925060208401356127d481612711565b929592945050506040919091013590565b6000602082840312156127f757600080fd5b8135610c3381612711565b6000806040838503121561281557600080fd5b61281e83612752565b9150602083013560ff8116811461283457600080fd5b809150509250929050565b600080600080600060a0868803121561285757600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b6000806040838503121561288d57600080fd5b823561289881612711565b91506128a660208401612752565b90509250929050565b6000602082840312156128c157600080fd5b5035919050565b6000806000606084860312156128dd57600080fd5b83356128e881612711565b925060208401356128f881612711565b9150604084013561290881612711565b809150509250925092565b6000806040838503121561292657600080fd5b823561293181612711565b9150602083013561283481612711565b6000806040838503121561295457600080fd5b61274483612752565b60208082526006908201526510a7aba722a960d11b604082015260600190565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b6000602082840312156129b457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156129eb576129eb6129bb565b500290565b600082612a0d57634e487b7160e01b600052601260045260246000fd5b500490565b600082821015612a2457612a246129bb565b500390565b60008219821115612a3c57612a3c6129bb565b500190565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612aa75784516001600160a01b031683529383019391830191600101612a82565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612add57600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212201b7267f549fdedb06bcccbe073f448124d2ad9e2bd016dfd4c2ec8e1742a33a564736f6c634300080d003360806040526001805473c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031991821681179092556002805490911690911790556ec097ce7bc90715b34b9f1000000000600c55610e10600d5564e8d4a51000600e5534801561006857600080fd5b506040516110d63803806110d6833981016040819052610087916100e1565b6001600160a01b0381166100af57737a250d5630b4cf539739df2c5dacb4c659f2488d6100b1565b805b600380546001600160a01b03929092166001600160a01b0319928316179055600080549091163317905550610111565b6000602082840312156100f357600080fd5b81516001600160a01b038116811461010a57600080fd5b9392505050565b610fb6806101206000396000f3fe6080604052600436106100f35760003560e01c8063ce7c2ac21161008a578063efca2eed11610059578063efca2eed1461027a578063fe6e2f3f14610290578063ffb2c479146102c8578063ffd49c84146102e857600080fd5b8063ce7c2ac2146101e5578063d0e30db01461023c578063d3a528a114610244578063e2d2e2191461026457600080fd5b80633a98ef39116100c65780633a98ef39146101835780634fab0ae8146101995780638aee8127146101af578063997664d7146101cf57600080fd5b806311ce023d146100f857806314b6ca961461012157806328fd3198146101435780632d48e89614610163575b600080fd5b34801561010457600080fd5b5061010e600c5481565b6040519081526020015b60405180910390f35b34801561012d57600080fd5b5061014161013c366004610d37565b6102fe565b005b34801561014f57600080fd5b5061010e61015e366004610d63565b610476565b34801561016f57600080fd5b5061014161017e366004610d80565b610501565b34801561018f57600080fd5b5061010e60085481565b3480156101a557600080fd5b5061010e600e5481565b3480156101bb57600080fd5b506101416101ca366004610d63565b610523565b3480156101db57600080fd5b5061010e60095481565b3480156101f157600080fd5b50610221610200366004610d63565b60076020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610118565b61014161055c565b34801561025057600080fd5b5061014161025f366004610d63565b61078b565b34801561027057600080fd5b5061010e600b5481565b34801561028657600080fd5b5061010e600a5481565b34801561029c57600080fd5b506001546102b0906001600160a01b031681565b6040516001600160a01b039091168152602001610118565b3480156102d457600080fd5b506101416102e3366004610da2565b6107ae565b3480156102f457600080fd5b5061010e600d5481565b6000546001600160a01b0316331461031557600080fd5b6001600160a01b0382166000908152600760205260409020541561033c5761033c826108b2565b60008111801561036257506001600160a01b038216600090815260076020526040902054155b156103c857600480546001600160a01b0384166000818152600560205260408120839055600183018455929092527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b03191690911790556103fb565b801580156103ed57506001600160a01b03821660009081526007602052604090205415155b156103fb576103fb826109d0565b6001600160a01b03821660009081526007602052604090205460085461042c91839161042691610ae5565b90610b30565b6008556001600160a01b038216600090815260076020526040902081905561045381610b94565b6001600160a01b0390921660009081526007602052604090206001019190915550565b6001600160a01b038116600090815260076020526040812054810361049d57506000919050565b6001600160a01b0382166000908152600760205260408120546104bf90610b94565b6001600160a01b0384166000908152600760205260409020600101549091508082116104ef575060009392505050565b6104f98282610ae5565b949350505050565b6000546001600160a01b0316331461051857600080fd5b600d91909155600e55565b6000546001600160a01b0316331461053a57600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461057357600080fd5b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156105bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e09190610dbb565b6040805160028082526060820183529293506000929091602083019080368337505060025482519293506001600160a01b03169183915060009061062657610626610dd4565b6001600160a01b039283166020918202929092010152600180548351921691839190811061065657610656610dd4565b6001600160a01b03928316602091820292909201015260035460405163b6f9de9560e01b815291169063b6f9de9590349061069c90600090869030904290600401610dea565b6000604051808303818588803b1580156106b557600080fd5b505af11580156106c9573d6000803e3d6000fd5b50506001546040516370a0823160e01b81523060048201526000945061074993508692506001600160a01b03909116906370a0823190602401602060405180830381865afa15801561071f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107439190610dbb565b90610ae5565b6009549091506107599082610b30565b600955600854600c546107839161077a916107749085610bb1565b90610c33565b600b5490610b30565b600b55505050565b6000546001600160a01b031633146107a257600080fd5b6107ab816108b2565b50565b6000546001600160a01b031633146107c557600080fd5b60045460008190036107d5575050565b6000805a905060005b84831080156107ec57508381105b156108ab5783600f5410610800576000600f555b6108326004600f548154811061081857610818610dd4565b6000918252602090912001546001600160a01b0316610c75565b15610869576108696004600f548154811061084f5761084f610dd4565b6000918252602090912001546001600160a01b03166108b2565b61087e6108775a8490610ae5565b8490610b30565b92505a600f8054919350600061089383610e6a565b919050555080806108a390610e6a565b9150506107de565b5050505050565b6001600160a01b03811660009081526007602052604081205490036108d45750565b60006108df82610476565b905080156109cc57600a546108f49082610b30565b600a5560015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af115801561094a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096e9190610e83565b506001600160a01b038216600090815260066020908152604080832042905560079091529020600201546109a29082610b30565b6001600160a01b038316600090815260076020526040902060028101919091555461045390610b94565b5050565b600480546109e090600190610ea5565b815481106109f0576109f0610dd4565b60009182526020808320909101546001600160a01b0384811684526005909252604090922054600480549290931692918110610a2e57610a2e610dd4565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260059182905260408120546004805491939291610a7a90600190610ea5565b81548110610a8a57610a8a610dd4565b60009182526020808320909101546001600160a01b031683528201929092526040019020556004805480610ac057610ac0610ebc565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610b2783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610cba565b90505b92915050565b600080610b3d8385610ed2565b905083811015610b275760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064015b60405180910390fd5b6000610b2a600c54610774600b5485610bb190919063ffffffff16565b600082600003610bc357506000610b2a565b6000610bcf8385610eea565b905082610bdc8583610f09565b14610b275760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b8b565b6000610b2783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610cf4565b600d546001600160a01b03821660009081526006602052604081205490914291610c9f9190610ed2565b108015610b2a5750600e54610cb383610476565b1192915050565b60008184841115610cde5760405162461bcd60e51b8152600401610b8b9190610f2b565b506000610ceb8486610ea5565b95945050505050565b60008183610d155760405162461bcd60e51b8152600401610b8b9190610f2b565b506000610ceb8486610f09565b6001600160a01b03811681146107ab57600080fd5b60008060408385031215610d4a57600080fd5b8235610d5581610d22565b946020939093013593505050565b600060208284031215610d7557600080fd5b8135610b2781610d22565b60008060408385031215610d9357600080fd5b50508035926020909101359150565b600060208284031215610db457600080fd5b5035919050565b600060208284031215610dcd57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015610e345784516001600160a01b031683529383019391830191600101610e0f565b50506001600160a01b039690961660408501525050506060015292915050565b634e487b7160e01b600052601160045260246000fd5b600060018201610e7c57610e7c610e54565b5060010190565b600060208284031215610e9557600080fd5b81518015158114610b2757600080fd5b600082821015610eb757610eb7610e54565b500390565b634e487b7160e01b600052603160045260246000fd5b60008219821115610ee557610ee5610e54565b500190565b6000816000190483118215151615610f0457610f04610e54565b500290565b600082610f2657634e487b7160e01b600052601260045260246000fd5b500490565b600060208083528351808285015260005b81811015610f5857858101830151858201604001528201610f3c565b81811115610f6a576000604083870101525b50601f01601f191692909201604001939250505056fea2646970667358221220a003cdef9b75bf87905bcecd8ab90be427e3a93970a901b583f7292805b8e7dc64736f6c634300080d0033
Deployed Bytecode
0x6080604052600436106103545760003560e01c806382bf293c116101c6578063d51ed1c8116100f7578063f2fde38b11610095578063f84ba65d1161006f578063f84ba65d14610a07578063f887ea4014610a27578063fe9fbb8014610a47578063ffb54a9914610a6757600080fd5b8063f2fde38b146109b2578063f4293890146109d2578063f708a64f146109e757600080fd5b8063df20fd49116100d1578063df20fd4914610932578063df4a76c514610952578063e96fada214610972578063f0b37c041461099257600080fd5b8063d51ed1c8146108ac578063d7c01032146108cc578063dd62ed3e146108ec57600080fd5b8063a8aa1b3111610164578063bf56b3711161013e578063bf56b37114610840578063c1cf53c414610856578063ca33e64c14610876578063cf4be3941461089657600080fd5b8063a8aa1b31146107e0578063a9059cbb14610800578063b6a5d7de1461082057600080fd5b806395d89b41116101a057806395d89b411461075f5780639d1944f51461078b578063a409dc14146107ab578063a6b06a27146107c057600080fd5b806382bf293c14610701578063893d20e8146107215780638aee81271461073f57600080fd5b8063313ce567116102a0578063617fe0ed1161023e57806370a082311161021857806370a0823114610676578063722b62ad146106ac57806378109e54146106cb5780637affa29b146106e157600080fd5b8063617fe0ed1461061d578063658d4b7f146106375780636ddd17131461065757600080fd5b80633fd5f2c11161027a5780633fd5f2c11461058557806347a28b79146105bd57806350db71fb146105dd578063571ac8b0146105fd57600080fd5b8063313ce5671461052d578063334773271461054f57806338280e6b1461056557600080fd5b8063201e79911161030d5780632b112e49116102e75780632b112e49146104a95780632d48e896146104be5780632d594567146104de5780632f54bf6e146104fe57600080fd5b8063201e79911461044957806323b872dd1461046957806328fd31981461048957600080fd5b80630445b6671461036057806306fdde0314610389578063095ea7b3146103c25780630d295980146103f25780631161ae391461041457806318160ddd1461043457600080fd5b3661035b57005b600080fd5b34801561036c57600080fd5b5061037660245481565b6040519081526020015b60405180910390f35b34801561039557600080fd5b506040805180820190915260078152664b49545449455360c81b60208201525b60405161038091906126bc565b3480156103ce57600080fd5b506103e26103dd366004612726565b610a81565b6040519015158152602001610380565b3480156103fe57600080fd5b5061041261040d366004612767565b610aee565b005b34801561042057600080fd5b506103e261042f366004612782565b610b34565b34801561044057600080fd5b50600a54610376565b34801561045557600080fd5b50610412610464366004612782565b610b48565b34801561047557600080fd5b506103e26104843660046127a4565b610b78565b34801561049557600080fd5b506103766104a43660046127e5565b610c3a565b3480156104b557600080fd5b50610376610ca9565b3480156104ca57600080fd5b506104126104d9366004612782565b610cfb565b3480156104ea57600080fd5b506104126104f9366004612802565b610d8a565b34801561050a57600080fd5b506103e26105193660046127e5565b6000546001600160a01b0391821691161490565b34801561053957600080fd5b5060125b60405160ff9091168152602001610380565b34801561055b57600080fd5b50610376600b5481565b34801561057157600080fd5b506104126105803660046127e5565b610ddb565b34801561059157600080fd5b506009546105a5906001600160a01b031681565b6040516001600160a01b039091168152602001610380565b3480156105c957600080fd5b506104126105d836600461283f565b610e62565b3480156105e957600080fd5b506104126105f836600461287a565b610ec2565b34801561060957600080fd5b506103e26106183660046127e5565b610f12565b34801561062957600080fd5b506029546103e29060ff1681565b34801561064357600080fd5b5061041261065236600461287a565b610f20565b34801561066357600080fd5b50602e546103e290610100900460ff1681565b34801561068257600080fd5b506103766106913660046127e5565b6001600160a01b03166000908152600e602052604090205490565b3480156106b857600080fd5b5060295461053d90610100900460ff1681565b3480156106d757600080fd5b50610376600d5481565b3480156106ed57600080fd5b506104126106fc3660046128af565b610f70565b34801561070d57600080fd5b5061041261071c3660046128af565b610fc1565b34801561072d57600080fd5b506000546001600160a01b03166105a5565b34801561074b57600080fd5b5061041261075a3660046127e5565b61100c565b34801561076b57600080fd5b506040805180820190915260038152624b545360e81b60208201526103b5565b34801561079757600080fd5b506104126107a63660046128af565b611093565b3480156107b757600080fd5b506104126110cc565b3480156107cc57600080fd5b506104126107db36600461287a565b61112b565b3480156107ec57600080fd5b50602c546105a5906001600160a01b031681565b34801561080c57600080fd5b506103e261081b366004612726565b61119d565b34801561082c57600080fd5b5061041261083b3660046127e5565b6111aa565b34801561084c57600080fd5b50610376602d5481565b34801561086257600080fd5b5061041261087136600461283f565b6111fb565b34801561088257600080fd5b506007546105a5906001600160a01b031681565b3480156108a257600080fd5b50610376600c5481565b3480156108b857600080fd5b506103766108c73660046128af565b611255565b3480156108d857600080fd5b506104126108e73660046128c8565b611293565b3480156108f857600080fd5b50610376610907366004612913565b6001600160a01b039182166000908152600f6020908152604080832093909416825291909152205490565b34801561093e57600080fd5b5061041261094d366004612941565b6112f7565b34801561095e57600080fd5b5061041261096d3660046128af565b611352565b34801561097e57600080fd5b506008546105a5906001600160a01b031681565b34801561099e57600080fd5b506104126109ad3660046127e5565b61139d565b3480156109be57600080fd5b506104126109cd3660046127e5565b6113e8565b3480156109de57600080fd5b5061041261147e565b3480156109f357600080fd5b50610412610a0236600461287a565b6114e1565b348015610a1357600080fd5b50610412610a2236600461287a565b6115e5565b348015610a3357600080fd5b50602b546105a5906001600160a01b031681565b348015610a5357600080fd5b506103e2610a623660046127e5565b611635565b348015610a7357600080fd5b50602e546103e29060ff1681565b336000818152600f602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610adc9086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610b215760405162461bcd60e51b8152600401610b189061295d565b60405180910390fd5b602e805460ff1916911515919091179055565b600082610b4083611255565b119392505050565b610b5133611635565b610b6d5760405162461bcd60e51b8152600401610b189061297d565b602591909155602655565b6001600160a01b0383166000908152600f6020908152604080832033845290915281205460001914610c25576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600f82528381203382529091529190912054610c00918490611653565b6001600160a01b0385166000908152600f602090815260408083203384529091529020555b610c3084848461168d565b90505b9392505050565b60275460405163051fa63360e31b81526001600160a01b03838116600483015260009216906328fd319890602401602060405180830381865afa158015610c85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae891906129a2565b6005546001600160a01b03166000908152600e6020526040812054610cf6906004546001600160a01b03166000908152600e6020526040902054610cf090600a5490611a5f565b90611a5f565b905090565b610d0433611635565b610d205760405162461bcd60e51b8152600401610b189061297d565b6027546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b158015610d6e57600080fd5b505af1158015610d82573d6000803e3d6000fd5b505050505050565b6000546001600160a01b03163314610db45760405162461bcd60e51b8152600401610b189061295d565b6029805461ffff191692151561ff0019169290921761010060ff9290921691909102179055565b610de433611635565b610e005760405162461bcd60e51b8152600401610b189061297d565b600680546001600160a01b039092166001600160a01b0319909216821790556000908152601060209081526040808320805460ff1990811660019081179092556011845282852080548216831790556012909352922080549091169091179055565b6000546001600160a01b03163314610e8c5760405162461bcd60e51b8152600401610b189061295d565b6014859055601584905560168390556017829055610eb682610eb085818989611aa1565b90611aa1565b60185560235550505050565b610ecb33611635565b610ee75760405162461bcd60e51b8152600401610b189061297d565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b6000610ae882600019610a81565b610f2933611635565b610f455760405162461bcd60e51b8152600401610b189061297d565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610f9a5760405162461bcd60e51b8152600401610b189061295d565b610fbb612710610fb583600a54611b0090919063ffffffff16565b90611b82565b600b5550565b6000546001600160a01b03163314610feb5760405162461bcd60e51b8152600401610b189061295d565b611006612710610fb583600a54611b0090919063ffffffff16565b600d5550565b61101533611635565b6110315760405162461bcd60e51b8152600401610b189061297d565b602754604051638aee812760e01b81526001600160a01b03838116600483015290911690638aee812790602401600060405180830381600087803b15801561107857600080fd5b505af115801561108c573d6000803e3d6000fd5b5050505050565b61109c33611635565b6110b85760405162461bcd60e51b8152600401610b189061297d565b620b71b081106110c757600080fd5b602855565b60275460405163d3a528a160e01b81523360048201526001600160a01b039091169063d3a528a190602401600060405180830381600087803b15801561111157600080fd5b505af1158015611125573d6000803e3d6000fd5b50505050565b61113433611635565b6111505760405162461bcd60e51b8152600401610b189061297d565b6001600160a01b039091166000908152601160209081526040808320805494151560ff19958616811790915560108352818420805486168217905560129092529091208054909216179055565b6000610c3333848461168d565b6000546001600160a01b031633146111d45760405162461bcd60e51b8152600401610b189061295d565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6000546001600160a01b031633146112255760405162461bcd60e51b8152600401610b189061295d565b6019859055601a849055601b839055601c82905561124982610eb085818989611aa1565b601d5560235550505050565b6000610ae8611262610ca9565b602c546001600160a01b03166000908152600e6020526040902054610fb59061128c906002611b00565b8590611b00565b61129c33611635565b6112b85760405162461bcd60e51b8152600401610b189061297d565b600780546001600160a01b039485166001600160a01b031991821617909155600880549385169382169390931790925560098054919093169116179055565b61130033611635565b61131c5760405162461bcd60e51b8152600401610b189061297d565b602e805461ff00191661010084151502179055600a54612710906113419083906129d1565b61134b91906129f0565b6024555050565b6000546001600160a01b0316331461137c5760405162461bcd60e51b8152600401610b189061295d565b611397612710610fb583600a54611b0090919063ffffffff16565b600c5550565b6000546001600160a01b031633146113c75760405162461bcd60e51b8152600401610b189061295d565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b031633146114125760405162461bcd60e51b8152600401610b189061295d565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b61148733611635565b6114a35760405162461bcd60e51b8152600401610b189061297d565b60075460405147916001600160a01b03169082156108fc029083906000818181858888f193505050501580156114dd573d6000803e3d6000fd5b5050565b6114ea33611635565b6115065760405162461bcd60e51b8152600401610b189061297d565b6001600160a01b038216301480159061152d5750602c546001600160a01b03838116911614155b61153657600080fd5b6001600160a01b0382166000908152601360205260409020805460ff1916821580159190911790915561159c57602754604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca9690604401610d54565b6027546001600160a01b038381166000818152600e602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401610d54565b6115ee33611635565b61160a5760405162461bcd60e51b8152600401610b189061297d565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526001602052604090205460ff1690565b600081848411156116775760405162461bcd60e51b8152600401610b1891906126bc565b5060006116848486612a12565b95945050505050565b602e5460009062010000900460ff16156116b3576116ac848484611bc4565b9050610c33565b6001600160a01b03841660009081526001602052604090205460ff161580156116f557506001600160a01b03831660009081526001602052604090205460ff16155b801561170f57506006546001600160a01b03858116911614155b1561176657602e5460ff166117665760405162461bcd60e51b815260206004820152601760248201527f54726164696e67206e6f7420656e61626c6564207965740000000000000000006044820152606401610b18565b602c546001600160a01b0384811691161461178081611caa565b61178b858585611cf3565b6117958585611eaf565b6117a185848684611f91565b6117a96120c9565b156117b6576117b6612123565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0388166000908152600e9091529190912054611808918590611653565b6001600160a01b0386166000908152600e6020908152604080832093909355601090529081205460ff161561183d5783611847565b61184786856125e8565b6001600160a01b0386166000908152600e602052604090205490915061186d9082611aa1565b6001600160a01b038087166000908152600e602090815260408083209490945591891681526013909152205460ff16611911576027546001600160a01b038781166000818152600e602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b1580156118fe57600080fd5b505af192505050801561190f575060015b505b6001600160a01b03851660009081526013602052604090205460ff166119a2576027546001600160a01b038681166000818152600e602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561198f57600080fd5b505af19250505080156119a0575060015b505b6027546028546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c479916119da9160040190815260200190565b600060405180830381600087803b1580156119f457600080fd5b505af1925050508015611a05575060015b50846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a4b91815260200190565b60405180910390a350600195945050505050565b6000610c3383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611653565b600080611aae8385612a29565b905083811015610c335760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b18565b600082600003611b1257506000610ae8565b6000611b1e83856129d1565b905082611b2b85836129f0565b14610c335760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b18565b6000610c3383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061268e565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600e90915291822054611c15918490611653565b6001600160a01b038086166000908152600e60205260408082209390935590851681522054611c449083611aa1565b6001600160a01b038085166000818152600e602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c989086815260200190565b60405180910390a35060019392505050565b8015611cd157601954601e55601a54601f55601b54602055601c54602155601d5460225550565b601454601e55601554601f556016546020556017546021556018546022555b50565b6001600160a01b03831660009081526001602052604090205460ff16158015611d3557506001600160a01b03831660009081526011602052604090205460ff16155b8015611d5a57506001600160a01b03821660009081526011602052604090205460ff16155b8015611d7457506000546001600160a01b03838116911614155b8015611d8957506001600160a01b0382163014155b8015611da357506004546001600160a01b03838116911614155b8015611dbd5750602c546001600160a01b03838116911614155b8015611dd757506008546001600160a01b03838116911614155b8015611df157506007546001600160a01b03838116911614155b8015611e0b57506009546001600160a01b03838116911614155b15611eaa576001600160a01b0382166000908152600e6020526040902054600d54611e368383612a29565b11156111255760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610b18565b505050565b602c546001600160a01b038381169116148015611ece575060295460ff165b8015611ef357506001600160a01b03811660009081526012602052604090205460ff16155b156114dd576001600160a01b0381166000908152602a60205260409020544211611f5f5760405162461bcd60e51b815260206004820152601c60248201527f506c656173652077616974206265747765656e2074776f2062757973000000006044820152606401610b18565b602954611f7490610100900460ff1642612a29565b6001600160a01b0382166000908152602a60205260409020555050565b6000546001600160a01b0383811691161461112557801561203d57600c5483111580611fd557506001600160a01b03841660009081526011602052604090205460ff165b80611ff857506001600160a01b03821660009081526011602052604090205460ff165b6120385760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610b18565b611125565b600b548311158061206657506001600160a01b03841660009081526011602052604090205460ff165b8061208957506001600160a01b03821660009081526011602052604090205460ff165b6111255760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610b18565b602c546000906001600160a01b031633148015906120f05750602e5462010000900460ff16155b80156121035750602e54610100900460ff165b8015610cf6575050602454306000908152600e6020526040902054101590565b602e805462ff000019166201000017905560255460265460009161214691610b34565b61215257601e54612155565b60005b905060006121796002610fb5602254610fb586602454611b0090919063ffffffff16565b9050600061219282602454611a5f90919063ffffffff16565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106121cc576121cc612a41565b6001600160a01b0392831660209182029290920101526003548251911690829060019081106121fd576121fd612a41565b6001600160a01b039283166020918202929092010152602b5460405163791ac94760e01b81524792919091169063791ac94790612247908690600090879030904290600401612a57565b600060405180830381600087803b15801561226157600080fd5b505af1158015612275573d6000803e3d6000fd5b50505050600061228e8247611a5f90919063ffffffff16565b905060006122a96122a0886002611b82565b60225490611a5f565b905060006122be6002610fb58481878d611b00565b905060006122db83610fb560205487611b0090919063ffffffff16565b905060006122f884610fb560215488611b0090919063ffffffff16565b9050600061231585610fb5601f5489611b0090919063ffffffff16565b9050602760009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b15801561236757600080fd5b505af193505050508015612379575060015b506008546040516000916001600160a01b03169061753090859084818181858888f193505050503d80600081146123cc576040519150601f19603f3d011682016040523d82523d6000602084013e6123d1565b606091505b50506009546040519192506000916001600160a01b039091169061753090859084818181858888f193505050503d806000811461242a576040519150601f19603f3d011682016040523d82523d6000602084013e61242f565b606091505b50509050816124915760405162461bcd60e51b815260206004820152602860248201527f6d61726b6574696e672072656365697665722072656a656374656420455448206044820152673a3930b739b332b960c11b6064820152608401610b18565b806124f55760405162461bcd60e51b815260206004820152602e60248201527f47616d65446576656c6f706d656e742072656365697665722072656a6563746560448201526d321022aa24103a3930b739b332b960911b6064820152608401610b18565b8b156125cd57602b5460075460405163f305d71960e01b8152306004820152602481018f905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990889060c40160606040518083038185885af115801561256b573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906125909190612ac8565b505060408051888152602081018f90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050602e805462ff0000191690555050505050505050505050565b600080612606602354610fb560225486611b0090919063ffffffff16565b306000908152600e60205260409020549091506126239082611aa1565b306000818152600e6020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906126749085815260200190565b60405180910390a36126868382611a5f565b949350505050565b600081836126af5760405162461bcd60e51b8152600401610b1891906126bc565b50600061168484866129f0565b600060208083528351808285015260005b818110156126e9578581018301518582016040015282016126cd565b818111156126fb576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114611cf057600080fd5b6000806040838503121561273957600080fd5b823561274481612711565b946020939093013593505050565b8035801515811461276257600080fd5b919050565b60006020828403121561277957600080fd5b610c3382612752565b6000806040838503121561279557600080fd5b50508035926020909101359150565b6000806000606084860312156127b957600080fd5b83356127c481612711565b925060208401356127d481612711565b929592945050506040919091013590565b6000602082840312156127f757600080fd5b8135610c3381612711565b6000806040838503121561281557600080fd5b61281e83612752565b9150602083013560ff8116811461283457600080fd5b809150509250929050565b600080600080600060a0868803121561285757600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b6000806040838503121561288d57600080fd5b823561289881612711565b91506128a660208401612752565b90509250929050565b6000602082840312156128c157600080fd5b5035919050565b6000806000606084860312156128dd57600080fd5b83356128e881612711565b925060208401356128f881612711565b9150604084013561290881612711565b809150509250925092565b6000806040838503121561292657600080fd5b823561293181612711565b9150602083013561283481612711565b6000806040838503121561295457600080fd5b61274483612752565b60208082526006908201526510a7aba722a960d11b604082015260600190565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b6000602082840312156129b457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156129eb576129eb6129bb565b500290565b600082612a0d57634e487b7160e01b600052601260045260246000fd5b500490565b600082821015612a2457612a246129bb565b500390565b60008219821115612a3c57612a3c6129bb565b500190565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612aa75784516001600160a01b031683529383019391830191600101612a82565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612add57600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212201b7267f549fdedb06bcccbe073f448124d2ad9e2bd016dfd4c2ec8e1742a33a564736f6c634300080d0033
Deployed Bytecode Sourcemap
13328:19957:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15373:56;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;15373:56:0;;;;;;;;17815:80;;;;;;;;;;-1:-1:-1;17887:5:0;;;;;;;;;;;;-1:-1:-1;;;17887:5:0;;;;17815:80;;;;;;;:::i;18237:216::-;;;;;;;;;;-1:-1:-1;18237:216:0;;;;;:::i;:::-;;:::i;:::-;;;1419:14:1;;1412:22;1394:41;;1382:2;1367:18;18237:216:0;1254:187:1;24776:94:0;;;;;;;;;;-1:-1:-1;24776:94:0;;;;;:::i;:::-;;:::i;:::-;;33057:150;;;;;;;;;;-1:-1:-1;33057:150:0;;;;;:::i;:::-;;:::i;17545:88::-;;;;;;;;;;-1:-1:-1;17618:12:0;;17545:88;;31282:183;;;;;;;;;;-1:-1:-1;31282:183:0;;;;;:::i;:::-;;:::i;18755:370::-;;;;;;;;;;-1:-1:-1;18755:370:0;;;;;:::i;:::-;;:::i;32285:146::-;;;;;;;;;;-1:-1:-1;32285:146:0;;;;;:::i;:::-;;:::i;32654:142::-;;;;;;;;;;;;;:::i;31740:183::-;;;;;;;;;;-1:-1:-1;31740:183:0;;;;;:::i;:::-;;:::i;24917:164::-;;;;;;;;;;-1:-1:-1;24917:164:0;;;;;:::i;:::-;;:::i;4663:103::-;;;;;;;;;;-1:-1:-1;4663:103:0;;;;;:::i;:::-;4718:4;4753:5;-1:-1:-1;;;;;4742:16:0;;;4753:5;;4742:16;;4663:103;17639:80;;;;;;;;;;-1:-1:-1;14028:2:0;17639:80;;;3276:4:1;3264:17;;;3246:36;;3234:2;3219:18;17639:80:0;3104:184:1;14148:59:0;;;;;;;;;;;;;;;;19455:283;;;;;;;;;;-1:-1:-1;19455:283:0;;;;;:::i;:::-;;:::i;13851:41::-;;;;;;;;;;-1:-1:-1;13851:41:0;;;;-1:-1:-1;;;;;13851:41:0;;;;;;-1:-1:-1;;;;;3457:32:1;;;3439:51;;3427:2;3412:18;13851:41:0;3293:203:1;29483:546:0;;;;;;;;;;-1:-1:-1;29483:546:0;;;;;:::i;:::-;;:::i;29101:130::-;;;;;;;;;;-1:-1:-1;29101:130:0;;;;;:::i;:::-;;:::i;18461:122::-;;;;;;;;;;-1:-1:-1;18461:122:0;;;;;:::i;:::-;;:::i;15736:37::-;;;;;;;;;;-1:-1:-1;15736:37:0;;;;;;;;28783:120;;;;;;;;;;-1:-1:-1;28783:120:0;;;;;:::i;:::-;;:::i;16032:30::-;;;;;;;;;;-1:-1:-1;16032:30:0;;;;;;;;;;;17985:105;;;;;;;;;;-1:-1:-1;17985:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;18069:18:0;18051:7;18069:18;;;:9;:18;;;;;;;17985:105;15780:38;;;;;;;;;;-1:-1:-1;15780:38:0;;;;;;;;;;;14293:63;;;;;;;;;;;;;;;;28016:157;;;;;;;;;;-1:-1:-1;28016:157:0;;;;;:::i;:::-;;:::i;19203:156::-;;;;;;;;;;-1:-1:-1;19203:156:0;;;;;:::i;:::-;;:::i;17901:78::-;;;;;;;;;;-1:-1:-1;17953:7:0;17971:5;-1:-1:-1;;;;;17971:5:0;17901:78;;32110:120;;;;;;;;;;-1:-1:-1;32110:120:0;;;;;:::i;:::-;;:::i;17725:84::-;;;;;;;;;;-1:-1:-1;17799:7:0;;;;;;;;;;;;-1:-1:-1;;;17799:7:0;;;;17725:84;;32472:136;;;;;;;;;;-1:-1:-1;32472:136:0;;;;;:::i;:::-;;:::i;31972:92::-;;;;;;;;;;;;;:::i;29239:209::-;;;;;;;;;;-1:-1:-1;29239:209:0;;;;;:::i;:::-;;:::i;15936:19::-;;;;;;;;;;-1:-1:-1;15936:19:0;;;;-1:-1:-1;;;;;15936:19:0;;;18591:156;;;;;;;;;;-1:-1:-1;18591:156:0;;;;;:::i;:::-;;:::i;4321:102::-;;;;;;;;;;-1:-1:-1;4321:102:0;;;;;:::i;:::-;;:::i;15962:25::-;;;;;;;;;;;;;;;;30063:566;;;;;;;;;;-1:-1:-1;30063:566:0;;;;;:::i;:::-;;:::i;13766:36::-;;;;;;;;;;-1:-1:-1;13766:36:0;;;;-1:-1:-1;;;;;13766:36:0;;;14220:60;;;;;;;;;;;;;;;;32838:167;;;;;;;;;;-1:-1:-1;32838:167:0;;;;;:::i;:::-;;:::i;30687:332::-;;;;;;;;;;-1:-1:-1;30687:332:0;;;;;:::i;:::-;;:::i;18096:133::-;;;;;;;;;;-1:-1:-1;18096:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;18198:19:0;;;18180:7;18198:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;18096:133;31065:180;;;;;;;;;;-1:-1:-1;31065:180:0;;;;;:::i;:::-;;:::i;28206:161::-;;;;;;;;;;-1:-1:-1;28206:161:0;;;;;:::i;:::-;;:::i;13809:35::-;;;;;;;;;;-1:-1:-1;13809:35:0;;;;-1:-1:-1;;;;;13809:35:0;;;4498:105;;;;;;;;;;-1:-1:-1;4498:105:0;;;;;:::i;:::-;;:::i;5070:189::-;;;;;;;;;;-1:-1:-1;5070:189:0;;;;;:::i;:::-;;:::i;31504:181::-;;;;;;;;;;;;;:::i;28404:347::-;;;;;;;;;;-1:-1:-1;28404:347:0;;;;;:::i;:::-;;:::i;28938:128::-;;;;;;;;;;-1:-1:-1;28938:128:0;;;;;:::i;:::-;;:::i;15905:24::-;;;;;;;;;;-1:-1:-1;15905:24:0;;;;-1:-1:-1;;;;;15905:24:0;;;4836:115;;;;;;;;;;-1:-1:-1;4836:115:0;;;;;:::i;:::-;;:::i;15994:31::-;;;;;;;;;;-1:-1:-1;15994:31:0;;;;;;;;18237:216;18341:10;18312:4;18329:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;18329:32:0;;;;;;;;;;:41;;;18386:37;18312:4;;18329:32;;18386:37;;;;18364:6;160:25:1;;148:2;133:18;;14:177;18386:37:0;;;;;;;;-1:-1:-1;18441:4:0;18237:216;;;;;:::o;24776:94::-;4718:4;4753:5;-1:-1:-1;;;;;4753:5:0;4045:10;4742:16;4029:38;;;;-1:-1:-1;;;4029:38:0;;;;;;;:::i;:::-;;;;;;;;;24841:11:::1;:21:::0;;-1:-1:-1;;24841:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24776:94::o;33057:150::-;33137:4;33193:6;33161:29;33181:8;33161:19;:29::i;:::-;:38;;33057:150;-1:-1:-1;;;33057:150:0:o;31282:183::-;4206:24;4219:10;4206:12;:24::i;:::-;4198:48;;;;-1:-1:-1;;;4198:48:0;;;;;;;:::i;:::-;31380:15:::1;:25:::0;;;;31416:26:::1;:41:::0;31282:183::o;18755:370::-;-1:-1:-1;;;;;18875:19:0;;18855:4;18875:19;;;:11;:19;;;;;;;;18895:10;18875:31;;;;;;;;-1:-1:-1;;18875:52:0;18872:186;;18977:69;;;;;;;;;;;-1:-1:-1;;;18977:69:0;;;;;;;;-1:-1:-1;;;;;18977:19:0;;-1:-1:-1;18977:19:0;;;:11;:19;;;;;18997:10;18977:31;;;;;;;;;;:69;;19013:6;;18977:35;:69::i;:::-;-1:-1:-1;;;;;18943:19:0;;;;;;:11;:19;;;;;;;;18963:10;18943:31;;;;;;;:103;18872:186;19077:40;19091:6;19099:9;19110:6;19077:13;:40::i;:::-;19070:47;;18755:370;;;;;;:::o;32285:146::-;32381:11;;:42;;-1:-1:-1;;;32381:42:0;;-1:-1:-1;;;;;3457:32:1;;;32381:42:0;;;3439:51:1;32354:7:0;;32381:11;;:29;;3412:18:1;;32381:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;32654:142::-;32782:4;;-1:-1:-1;;;;;32782:4:0;32707:7;18069:18;;;:9;:18;;;;;;32734:54;;32761:4;;-1:-1:-1;;;;;32761:4:0;18051:7;18069:18;;;:9;:18;;;;;;32734:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;32727:61;;32654:142;:::o;31740:183::-;4206:24;4219:10;4206:12;:24::i;:::-;4198:48;;;;-1:-1:-1;;;4198:48:0;;;;;;;:::i;:::-;31850:11:::1;::::0;:65:::1;::::0;-1:-1:-1;;;31850:65:0;;::::1;::::0;::::1;7434:25:1::0;;;7475:18;;;7468:34;;;-1:-1:-1;;;;;31850:11:0;;::::1;::::0;:35:::1;::::0;7407:18:1;;31850:65:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;31740:183:::0;;:::o;24917:164::-;4718:4;4753:5;-1:-1:-1;;;;;4753:5:0;4045:10;4742:16;4029:38;;;;-1:-1:-1;;;4029:38:0;;;;;;;:::i;:::-;25001:18:::1;:28:::0;;-1:-1:-1;;25040:33:0;25001:28;::::1;;-1:-1:-1::0;;25040:33:0;;;;;25001:28:::1;;25040:33:::0;;;::::1;::::0;;;::::1;;::::0;;24917:164::o;19455:283::-;4206:24;4219:10;4206:12;:24::i;:::-;4198:48;;;;-1:-1:-1;;;4198:48:0;;;;;;;:::i;:::-;19541:16:::1;:36:::0;;-1:-1:-1;;;;;19541:36:0;;::::1;-1:-1:-1::0;;;;;;19541:36:0;;::::1;::::0;::::1;::::0;;:16:::1;19588:30:::0;;;:11:::1;:30;::::0;;;;;;;:37;;-1:-1:-1;;19588:37:0;;::::1;19541:36:::0;19588:37;;::::1;::::0;;;19636:15:::1;:34:::0;;;;;:41;;;::::1;::::0;::::1;::::0;;19688:16:::1;:35:::0;;;;;:42;;;;::::1;::::0;;::::1;::::0;;19455:283::o;29483:546::-;4718:4;4753:5;-1:-1:-1;;;;;4753:5:0;4045:10;4742:16;4029:38;;;;-1:-1:-1;;;4029:38:0;;;;;;;:::i;:::-;29672:15:::1;:34:::0;;;29717:21:::1;:46:::0;;;29774:19:::1;:42:::0;;;29827:15:::1;:34:::0;;;29886:92:::1;29845:16:::0;29886:70:::1;29796:20:::0;29886:70;29690:16;29741:22;29886:20:::1;:44::i;:::-;:48:::0;::::1;:70::i;:92::-;29872:11;:106:::0;29989:14:::1;:32:::0;-1:-1:-1;;;;29483:546:0:o;29101:130::-;4206:24;4219:10;4206:12;:24::i;:::-;4198:48;;;;-1:-1:-1;;;4198:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29190:24:0;;;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;29190:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;29101:130::o;18461:122::-;18516:4;18540:35;18548:7;-1:-1:-1;;18540:7:0;:35::i;28783:120::-;4206:24;4219:10;4206:12;:24::i;:::-;4198:48;;;;-1:-1:-1;;;4198:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28867:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;28867:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;28783:120::o;28016:157::-;4718:4;4753:5;-1:-1:-1;;;;;4753:5:0;4045:10;4742:16;4029:38;;;;-1:-1:-1;;;4029:38:0;;;;;;;:::i;:::-;28121:44:::1;28159:5;28121:33;28138:15;28121:12;;:16;;:33;;;;:::i;:::-;:37:::0;::::1;:44::i;:::-;28103:15;:62:::0;-1:-1:-1;28016:157:0:o;19203:156::-;4718:4;4753:5;-1:-1:-1;;;;;4753:5:0;4045:10;4742:16;4029:38;;;;-1:-1:-1;;;4029:38:0;;;;;;;:::i;:::-;19306:43:::1;19343:5;19306:32;19323:14;19306:12;;:16;;:32;;;;:::i;:43::-;19288:15;:61:::0;-1:-1:-1;19203:156:0:o;32110:120::-;4206:24;4219:10;4206:12;:24::i;:::-;4198:48;;;;-1:-1:-1;;;4198:48:0;;;;;;;:::i;:::-;32184:11:::1;::::0;:38:::1;::::0;-1:-1:-1;;;32184:38:0;;-1:-1:-1;;;;;3457:32:1;;;32184:38:0::1;::::0;::::1;3439:51:1::0;32184:11:0;;::::1;::::0;:26:::1;::::0;3412:18:1;;32184:38:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;32110:120:::0;:::o;32472:136::-;4206:24;4219:10;4206:12;:24::i;:::-;4198:48;;;;-1:-1:-1;;;4198:48:0;;;;;;;:::i;:::-;32562:6:::1;32556:3;:12;32548:21;;;::::0;::::1;;32580:14;:20:::0;32472:136::o;31972:92::-;32018:11;;:38;;-1:-1:-1;;;32018:38:0;;32045:10;32018:38;;;3439:51:1;-1:-1:-1;;;;;32018:11:0;;;;:26;;3412:18:1;;32018:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31972:92::o;29239:209::-;4206:24;4219:10;4206:12;:24::i;:::-;4198:48;;;;-1:-1:-1;;;4198:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29325:23:0;;::::1;;::::0;;;:15:::1;:23;::::0;;;;;;;:32;;;::::1;;-1:-1:-1::0;;29325:32:0;;::::1;::::0;::::1;::::0;;;29368:11:::1;:19:::0;;;;;:28;;;::::1;::::0;::::1;::::0;;29407:16:::1;:24:::0;;;;;;:33;;;;::::1;;::::0;;29239:209::o;18591:156::-;18671:4;18695:44;18709:10;18721:9;18732:6;18695:13;:44::i;4321:102::-;4718:4;4753:5;-1:-1:-1;;;;;4753:5:0;4045:10;4742:16;4029:38;;;;-1:-1:-1;;;4029:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4385:23:0::1;;::::0;;;4411:4:::1;4385:23;::::0;;;;;;;:30;;-1:-1:-1;;4385:30:0::1;::::0;;::::1;::::0;;4321:102::o;30063:566::-;4718:4;4753:5;-1:-1:-1;;;;;4753:5:0;4045:10;4742:16;4029:38;;;;-1:-1:-1;;;4029:38:0;;;;;;;:::i;:::-;30257:16:::1;:36:::0;;;30304:22:::1;:48:::0;;;30363:20:::1;:44:::0;;;30418:16:::1;:36:::0;;;30482:96:::1;30437:17:::0;30482:73:::1;30386:21:::0;30482:73;30276:17;30329:23;30482:21:::1;:46::i;:96::-;30467:12;:111:::0;30589:14:::1;:32:::0;-1:-1:-1;;;;30063:566:0:o;32838:167::-;32906:7;32933:64;32974:22;:20;:22::i;:::-;32956:4;;-1:-1:-1;;;;;32956:4:0;18051:7;18069:18;;;:9;:18;;;;;;32933:36;;32946:22;;32966:1;32946:19;:22::i;:::-;32933:8;;:12;:36::i;30687:332::-;4206:24;4219:10;4206:12;:24::i;:::-;4198:48;;;;-1:-1:-1;;;4198:48:0;;;;;;;:::i;:::-;30843:21:::1;:46:::0;;-1:-1:-1;;;;;30843:46:0;;::::1;-1:-1:-1::0;;;;;;30843:46:0;;::::1;;::::0;;;30900:20:::1;:44:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;30955:26:::1;:56:::0;;;;;::::1;::::0;::::1;;::::0;;30687:332::o;31065:180::-;4206:24;4219:10;4206:12;:24::i;:::-;4198:48;;;;-1:-1:-1;;;4198:48:0;;;;;;;:::i;:::-;31157:11:::1;:22:::0;;-1:-1:-1;;31157:22:0::1;;::::0;::::1;;;;::::0;;31206:12:::1;::::0;31231:5:::1;::::0;31206:22:::1;::::0;31221:7;;31206:22:::1;:::i;:::-;:30;;;;:::i;:::-;31190:13;:46:::0;-1:-1:-1;;31065:180:0:o;28206:161::-;4718:4;4753:5;-1:-1:-1;;;;;4753:5:0;4045:10;4742:16;4029:38;;;;-1:-1:-1;;;4029:38:0;;;;;;;:::i;:::-;28314:45:::1;28353:5;28314:34;28331:16;28314:12;;:16;;:34;;;;:::i;:45::-;28295:16;:64:::0;-1:-1:-1;28206:161:0:o;4498:105::-;4718:4;4753:5;-1:-1:-1;;;;;4753:5:0;4045:10;4742:16;4029:38;;;;-1:-1:-1;;;4029:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4564:23:0::1;4590:5;4564:23:::0;;;:14:::1;:23;::::0;;;;:31;;-1:-1:-1;;4564:31:0::1;::::0;;4498:105::o;5070:189::-;4718:4;4753:5;-1:-1:-1;;;;;4753:5:0;4045:10;4742:16;4029:38;;;;-1:-1:-1;;;4029:38:0;;;;;;;:::i;:::-;5150:5:::1;:15:::0;;-1:-1:-1;;;;;;5150:15:0::1;-1:-1:-1::0;;;;;5150:15:0;::::1;::::0;;::::1;::::0;;5176:23;;;-1:-1:-1;5176:23:0::1;::::0;;;;;;;;:30;;-1:-1:-1;;5176:30:0::1;::::0;;::::1;::::0;;;5222:29;;3439:51:1;;;5222:29:0::1;::::0;3412:18:1;5222:29:0::1;;;;;;;5070:189:::0;:::o;31504:181::-;4206:24;4219:10;4206:12;:24::i;:::-;4198:48;;;;-1:-1:-1;;;4198:48:0;;;;;;;:::i;:::-;31626:21:::1;::::0;31618:59:::1;::::0;31586:21:::1;::::0;-1:-1:-1;;;;;31626:21:0::1;::::0;31618:59;::::1;;;::::0;31586:21;;31557:26:::1;31618:59:::0;31557:26;31618:59;31586:21;31626;31618:59;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;31546:139;31504:181::o:0;28404:347::-;4206:24;4219:10;4206:12;:24::i;:::-;4198:48;;;;-1:-1:-1;;;4198:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28501:23:0;::::1;28519:4;28501:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;28538:4:0::1;::::0;-1:-1:-1;;;;;28528:14:0;;::::1;28538:4:::0;::::1;28528:14;;28501:41;28493:50;;;::::0;::::1;;-1:-1:-1::0;;;;;28554:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;28554:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;28598:146:::1;;28623:11;::::0;:31:::1;::::0;-1:-1:-1;;;28623:31:0;;-1:-1:-1;;;;;8678:32:1;;;28623:31:0::1;::::0;::::1;8660:51:1::0;28623:11:0::1;8727:18:1::0;;;8720:34;28623:11:0;;::::1;::::0;:20:::1;::::0;8633:18:1;;28623:31:0::1;8478:282:1::0;28598:146:0::1;28685:11;::::0;-1:-1:-1;;;;;28714:17:0;;::::1;28685:11;28714:17:::0;;;:9:::1;:17;::::0;;;;;;;28685:47;;-1:-1:-1;;;28685:47:0;;::::1;::::0;::::1;8660:51:1::0;;;;8727:18;;;8720:34;28685:11:0;::::1;::::0;:20:::1;::::0;8633:18:1;;28685:47:0::1;8478:282:1::0;28938:128:0;4206:24;4219:10;4206:12;:24::i;:::-;4198:48;;;;-1:-1:-1;;;4198:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29026:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;29026:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;28938:128::o;4836:115::-;-1:-1:-1;;;;;4920:23:0;4896:4;4920:23;;;:14;:23;;;;;;;;;4836:115::o;1723:192::-;1809:7;1845:12;1837:6;;;;1829:29;;;;-1:-1:-1;;;1829:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1869:9:0;1881:5;1885:1;1881;:5;:::i;:::-;1869:17;1723:192;-1:-1:-1;;;;;1723:192:0:o;19777:1609::-;19889:6;;19869:4;;19889:6;;;;;19886:63;;;19905:41;19920:6;19928:9;19939:6;19905:14;:41::i;:::-;19898:48;;;;19886:63;-1:-1:-1;;;;;20005:22:0;;;;;;:14;:22;;;;;;;;20004:23;:53;;;;-1:-1:-1;;;;;;20032:25:0;;;;;;:14;:25;;;;;;;;20031:26;20004:53;:83;;;;-1:-1:-1;20061:16:0;;-1:-1:-1;;;;;20061:26:0;;;:16;;:26;;20004:83;20001:160;;;20111:11;;;;20103:46;;;;-1:-1:-1;;;20103:46:0;;9376:2:1;20103:46:0;;;9358:21:1;9415:2;9395:18;;;9388:30;9454:25;9434:18;;;9427:53;9497:18;;20103:46:0;9174:347:1;20103:46:0;20239:4;;-1:-1:-1;;;;;20226:17:0;;;20239:4;;20226:17;20290:22;20226:17;20290:14;:22::i;:::-;20354:41;20369:6;20377:9;20388:6;20354:14;:41::i;:::-;20436:35;20453:6;20461:9;20436:16;:35::i;:::-;20509:47;20522:6;20530;20538:9;20549:6;20509:12;:47::i;:::-;20619:16;:14;:16::i;:::-;20616:35;;;20638:10;:8;:10::i;:::-;20710:53;;;;;;;;;;;-1:-1:-1;;;20710:53:0;;;;;;;;-1:-1:-1;;;;;20710:17:0;;-1:-1:-1;20710:17:0;;;:9;:17;;;;;;;;:53;;20732:6;;20710:21;:53::i;:::-;-1:-1:-1;;;;;20690:17:0;;;;;;:9;:17;;;;;;;;:73;;;;24099:11;:19;;;;;;;;24098:20;20801:56;;20851:6;20801:56;;;20825:23;20833:6;20841;20825:7;:23::i;:::-;-1:-1:-1;;;;;20891:20:0;;;;;;:9;:20;;;;;;20776:81;;-1:-1:-1;20891:40:0;;20776:81;20891:24;:40::i;:::-;-1:-1:-1;;;;;20868:20:0;;;;;;;:9;:20;;;;;;;;:63;;;;20977:24;;;;;:16;:24;;;;;;;20973:119;;21022:11;;-1:-1:-1;;;;;21051:17:0;;;21022:11;21051:17;;;:9;:17;;;;;;;;21022:47;;-1:-1:-1;;;21022:47:0;;;;;8660:51:1;;;;8727:18;;;8720:34;21022:11:0;;;:20;;8633:18:1;;21022:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21018:63;;-1:-1:-1;;;;;21108:27:0;;;;;;:16;:27;;;;;;;;21104:129;;21156:11;;-1:-1:-1;;;;;21188:20:0;;;21156:11;21188:20;;;:9;:20;;;;;;;;21156:53;;-1:-1:-1;;;21156:53:0;;;;;8660:51:1;;;;8727:18;;;8720:34;21156:11:0;;;:20;;8633:18:1;;21156:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21152:69;;21249:11;;21269:14;;21249:35;;-1:-1:-1;;;;;;21249:35:0;;-1:-1:-1;;;;;21249:11:0;;;;:19;;:35;;;;160:25:1;;;148:2;133:18;;14:177;21249:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21245:51;21330:9;-1:-1:-1;;;;;21313:43:0;21322:6;-1:-1:-1;;;;;21313:43:0;;21341:14;21313:43;;;;160:25:1;;148:2;133:18;;14:177;21313:43:0;;;;;;;;-1:-1:-1;21374:4:0;;19777:1609;-1:-1:-1;;;;;19777:1609:0:o;1581:136::-;1639:7;1666:43;1670:1;1673;1666:43;;;;;;;;;;;;;;;;;:3;:43::i;1394:181::-;1452:7;;1484:5;1488:1;1484;:5;:::i;:::-;1472:17;;1513:1;1508;:6;;1500:46;;;;-1:-1:-1;;;1500:46:0;;9861:2:1;1500:46:0;;;9843:21:1;9900:2;9880:18;;;9873:30;9939:29;9919:18;;;9912:57;9986:18;;1500:46:0;9659:351:1;1921:250:0;1979:7;2003:1;2008;2003:6;1999:47;;-1:-1:-1;2033:1:0;2026:8;;1999:47;2058:9;2070:5;2074:1;2070;:5;:::i;:::-;2058:17;-1:-1:-1;2103:1:0;2094:5;2098:1;2058:17;2094:5;:::i;:::-;:10;2086:56;;;;-1:-1:-1;;;2086:56:0;;10217:2:1;2086:56:0;;;10199:21:1;10256:2;10236:18;;;10229:30;10295:34;10275:18;;;10268:62;-1:-1:-1;;;10346:18:1;;;10339:31;10387:19;;2086:56:0;10015:397:1;2177:132:0;2235:7;2262:39;2266:1;2269;2262:39;;;;;;;;;;;;;;;;;:3;:39::i;21423:330::-;21553:53;;;;;;;;;;;-1:-1:-1;;;21553:53:0;;;;;;;;-1:-1:-1;;;;;21553:17:0;;21516:4;21553:17;;;:9;:17;;;;;;;:53;;21575:6;;21553:21;:53::i;:::-;-1:-1:-1;;;;;21533:17:0;;;;;;;:9;:17;;;;;;:73;;;;21640:20;;;;;;;:32;;21665:6;21640:24;:32::i;:::-;-1:-1:-1;;;;;21617:20:0;;;;;;;:9;:20;;;;;;;:55;;;;21688:35;;;;;;;;;;21716:6;160:25:1;;148:2;133:18;;14:177;21688:35:0;;;;;;;;-1:-1:-1;21741:4:0;21423:330;;;;;:::o;21812:583::-;21872:6;21869:519;;;21909:16;;21894:12;:31;21961:22;;21940:18;:43;22017:20;;21998:16;:39;22067:16;;22052:12;:31;22109:12;;22098:8;:23;21812:583;:::o;21869:519::-;22169:15;;22154:12;:30;22220:21;;22199:18;:42;22275:19;;22256:16;:38;22324:15;;22309:12;:30;22365:11;;22354:8;:22;21869:519;21812:583;:::o;23350:613::-;-1:-1:-1;;;;;23455:22:0;;;;;;:14;:22;;;;;;;;23454:23;:51;;;;-1:-1:-1;;;;;;23482:23:0;;;;;;:15;:23;;;;;;;;23481:24;23454:51;:82;;;;-1:-1:-1;;;;;;23510:26:0;;;;;;:15;:26;;;;;;;;23509:27;23454:82;:104;;;;-1:-1:-1;23553:5:0;;-1:-1:-1;;;;;23540:18:0;;;23553:5;;23540:18;;23454:104;:134;;;;-1:-1:-1;;;;;;23562:26:0;;23583:4;23562:26;;23454:134;:165;;;;-1:-1:-1;23614:4:0;;-1:-1:-1;;;;;23593:26:0;;;23614:4;;23593:26;;23454:165;:186;;;;-1:-1:-1;23636:4:0;;-1:-1:-1;;;;;23623:17:0;;;23636:4;;23623:17;;23454:186;:223;;;;-1:-1:-1;23657:20:0;;-1:-1:-1;;;;;23644:33:0;;;23657:20;;23644:33;;23454:223;:261;;;;-1:-1:-1;23694:21:0;;-1:-1:-1;;;;;23681:34:0;;;23694:21;;23681:34;;23454:261;:304;;;;-1:-1:-1;23732:26:0;;-1:-1:-1;;;;;23719:39:0;;;23732:26;;23719:39;;23454:304;23450:506;;;-1:-1:-1;;;;;18069:18:0;;23774;18069;;;:9;:18;;;;;;23863:15;;23839:19;23852:6;18069:18;23839:19;:::i;:::-;23838:40;;23830:114;;;;-1:-1:-1;;;23830:114:0;;10619:2:1;23830:114:0;;;10601:21:1;10658:2;10638:18;;;10631:30;10697:34;10677:18;;;10670:62;10768:32;10748:18;;;10741:60;10818:19;;23830:114:0;10417:426:1;23450:506:0;23350:613;;;:::o;22940:378::-;23035:4;;-1:-1:-1;;;;;23025:14:0;;;23035:4;;23025:14;:49;;;;-1:-1:-1;23056:18:0;;;;23025:49;:94;;;;-1:-1:-1;;;;;;23092:27:0;;;;;;:16;:27;;;;;;;;23091:28;23025:94;23021:290;;;-1:-1:-1;;;;;23144:24:0;;;;;;:13;:24;;;;;;23171:15;-1:-1:-1;23136:82:0;;;;-1:-1:-1;;;23136:82:0;;11050:2:1;23136:82:0;;;11032:21:1;11089:2;11069:18;;;11062:30;11128;11108:18;;;11101:58;11176:18;;23136:82:0;10848:352:1;23136:82:0;23278:21;;23260:39;;23278:21;;;;;23260:15;:39;:::i;:::-;-1:-1:-1;;;;;23233:24:0;;;;;;:13;:24;;;;;:66;22940:378;;:::o;22427:478::-;22555:5;;-1:-1:-1;;;;;22542:18:0;;;22555:5;;22542:18;22538:360;;22579:6;22576:311;;;22623:16;;22613:6;:26;;:53;;;-1:-1:-1;;;;;;22643:23:0;;;;;;:15;:23;;;;;;;;22613:53;:83;;;-1:-1:-1;;;;;;22670:26:0;;;;;;:15;:26;;;;;;;;22613:83;22605:113;;;;-1:-1:-1;;;22605:113:0;;11407:2:1;22605:113:0;;;11389:21:1;11446:2;11426:18;;;11419:30;-1:-1:-1;;;11465:18:1;;;11458:47;11522:18;;22605:113:0;11205:341:1;22605:113:0;22576:311;;;22777:15;;22767:6;:25;;:52;;;-1:-1:-1;;;;;;22796:23:0;;;;;;:15;:23;;;;;;;;22767:52;:82;;;-1:-1:-1;;;;;;22823:26:0;;;;;;:15;:26;;;;;;;;22767:82;22759:112;;;;-1:-1:-1;;;22759:112:0;;11407:2:1;22759:112:0;;;11389:21:1;11446:2;11426:18;;;11419:30;-1:-1:-1;;;11465:18:1;;;11458:47;11522:18;;22759:112:0;11205:341:1;24548:197:0;24635:4;;24597;;-1:-1:-1;;;;;24635:4:0;24621:10;:18;;;;:38;;-1:-1:-1;24653:6:0;;;;;;;24652:7;24621:38;:62;;;;-1:-1:-1;24672:11:0;;;;;;;24621:62;:116;;;;-1:-1:-1;;24724:13:0;;24714:4;24696:24;;;;:9;:24;;;;;;:41;;;24548:197::o;25135:2160::-;16109:6;:13;;-1:-1:-1;;16109:13:0;;;;;25230:15:::1;::::0;25247:26:::1;::::0;16109:13;;25214:60:::1;::::0;:15:::1;:60::i;:::-;:79;;25281:12;;25214:79;;;25277:1;25214:79;25184:109;;25304:23;25330:59;25387:1;25330:52;25373:8;;25330:38;25348:19;25330:13;;:17;;:38;;;;:::i;:59::-;25304:85;;25400:20;25423:34;25441:15;25423:13;;:17;;:34;;;;:::i;:::-;25494:16;::::0;;25508:1:::1;25494:16:::0;;;;;::::1;::::0;;25400:57;;-1:-1:-1;25470:21:0::1;::::0;25494:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;25494:16:0::1;25470:40;;25539:4;25521;25526:1;25521:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;25521:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;25565:4:::1;::::0;25555:7;;25565:4;::::1;::::0;25555;;25565;;25555:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;25555:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;25640:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;25640:188:0;;25606:21:::1;::::0;25640:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;25712:12;;25582:21:::1;::::0;25755:4;;25782::::1;::::0;25802:15:::1;::::0;25640:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;25839:18;25860:40;25886:13;25860:21;:25;;:40;;;;:::i;:::-;25839:61:::0;-1:-1:-1;25911:20:0::1;25934:40;25947:26;:19:::0;25971:1:::1;25947:23;:26::i;:::-;25934:8;::::0;;:12:::1;:40::i;:::-;25911:63:::0;-1:-1:-1;25985:27:0::1;26015:60;26073:1;26015:53;25911:63:::0;26015:53;:10;26030:19;26015:14:::1;:35::i;:60::-;25985:90;;26086:31;26120:50;26157:12;26120:32;26135:16;;26120:10;:14;;:32;;;;:::i;:50::-;26086:84;;26181:27;26211:46;26244:12;26211:28;26226:12;;26211:10;:14;;:28;;;;:::i;:46::-;26181:76;;26268:33;26304:52;26343:12;26304:34;26319:18;;26304:10;:14;;:34;;;;:::i;:52::-;26268:88;;26376:11;;;;;;;;;-1:-1:-1::0;;;;;26376:11:0::1;-1:-1:-1::0;;;;;26376:19:0::1;;26403:23;26376:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;26510:20:0::1;::::0;26502:78:::1;::::0;26452:21:::1;::::0;-1:-1:-1;;;;;26510:20:0::1;::::0;26570:5:::1;::::0;26544:19;;26452:21;26502:78;26452:21;26502:78;26544:19;26510:20;26570:5;26502:78:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;26656:26:0::1;::::0;26648:90:::1;::::0;26451:129;;-1:-1:-1;26592:27:0::1;::::0;-1:-1:-1;;;;;26656:26:0;;::::1;::::0;26728:5:::1;::::0;26696:25;;26592:27;26648:90;26592:27;26648:90;26696:25;26656:26;26728:5;26648:90:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26591:147;;;26758:16;26750:69;;;::::0;-1:-1:-1;;;26750:69:0;;13212:2:1;26750:69:0::1;::::0;::::1;13194:21:1::0;13251:2;13231:18;;;13224:30;13290:34;13270:18;;;13263:62;-1:-1:-1;;;13341:18:1;;;13334:38;13389:19;;26750:69:0::1;13010:404:1::0;26750:69:0::1;26838:22;26830:81;;;::::0;-1:-1:-1;;;26830:81:0;;13621:2:1;26830:81:0::1;::::0;::::1;13603:21:1::0;13660:2;13640:18;;;13633:30;13699:34;13679:18;;;13672:62;-1:-1:-1;;;13750:18:1;;;13743:44;13804:19;;26830:81:0::1;13419:410:1::0;26830:81:0::1;26927:19:::0;;26924:364:::1;;26962:6;::::0;27137:21:::1;::::0;26962:245:::1;::::0;-1:-1:-1;;;26962:245:0;;27039:4:::1;26962:245;::::0;::::1;14175:34:1::0;14225:18;;;14218:34;;;26962:6:0::1;14268:18:1::0;;;14261:34;;;14311:18;;;14304:34;-1:-1:-1;;;;;27137:21:0;;::::1;14354:19:1::0;;;14347:44;27177:15:0::1;14407:19:1::0;;;14400:35;26962:6:0;::::1;::::0;:22:::1;::::0;26992:19;;14109::1;;26962:245:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;27227:49:0::1;::::0;;7434:25:1;;;7490:2;7475:18;;7468:34;;;27227:49:0::1;::::0;-1:-1:-1;7407:18:1;27227:49:0::1;;;;;;;26924:364;-1:-1:-1::0;;16127:6:0;:14;;-1:-1:-1;;16127:14:0;;;-1:-1:-1;;;;;;;;;;;25135:2160:0:o;24168:333::-;24235:7;24255:17;24275:40;24300:14;;24275:20;24286:8;;24275:6;:10;;:20;;;;:::i;:40::-;24373:4;24355:24;;;;:9;:24;;;;;;24255:60;;-1:-1:-1;24355:39:0;;24255:60;24355:28;:39::i;:::-;24346:4;24328:24;;;;:9;:24;;;;;;;:66;;;;24410:42;;-1:-1:-1;;;;;24410:42:0;;;;;;;24442:9;160:25:1;;148:2;133:18;;14:177;24410:42:0;;;;;;;;24472:21;:6;24483:9;24472:10;:21::i;:::-;24465:28;24168:333;-1:-1:-1;;;;24168:333:0:o;2315:345::-;2401:7;2503:12;2496:5;2488:28;;;;-1:-1:-1;;;2488:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2527:9:0;2539:5;2543:1;2539;:5;:::i;196:597:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;634:6;631:1;628:13;625:91;;;704:1;699:2;690:6;679:9;675:22;671:31;664:42;625:91;-1:-1:-1;777:2:1;756:15;-1:-1:-1;;752:29:1;737:45;;;;784:2;733:54;;196:597;-1:-1:-1;;;196:597:1:o;798:131::-;-1:-1:-1;;;;;873:31:1;;863:42;;853:70;;919:1;916;909:12;934:315;1002:6;1010;1063:2;1051:9;1042:7;1038:23;1034:32;1031:52;;;1079:1;1076;1069:12;1031:52;1118:9;1105:23;1137:31;1162:5;1137:31;:::i;:::-;1187:5;1239:2;1224:18;;;;1211:32;;-1:-1:-1;;;934:315:1:o;1446:160::-;1511:20;;1567:13;;1560:21;1550:32;;1540:60;;1596:1;1593;1586:12;1540:60;1446:160;;;:::o;1611:180::-;1667:6;1720:2;1708:9;1699:7;1695:23;1691:32;1688:52;;;1736:1;1733;1726:12;1688:52;1759:26;1775:9;1759:26;:::i;1796:248::-;1864:6;1872;1925:2;1913:9;1904:7;1900:23;1896:32;1893:52;;;1941:1;1938;1931:12;1893:52;-1:-1:-1;;1964:23:1;;;2034:2;2019:18;;;2006:32;;-1:-1:-1;1796:248:1:o;2049:456::-;2126:6;2134;2142;2195:2;2183:9;2174:7;2170:23;2166:32;2163:52;;;2211:1;2208;2201:12;2163:52;2250:9;2237:23;2269:31;2294:5;2269:31;:::i;:::-;2319:5;-1:-1:-1;2376:2:1;2361:18;;2348:32;2389:33;2348:32;2389:33;:::i;:::-;2049:456;;2441:7;;-1:-1:-1;;;2495:2:1;2480:18;;;;2467:32;;2049:456::o;2510:247::-;2569:6;2622:2;2610:9;2601:7;2597:23;2593:32;2590:52;;;2638:1;2635;2628:12;2590:52;2677:9;2664:23;2696:31;2721:5;2696:31;:::i;2762:337::-;2825:6;2833;2886:2;2874:9;2865:7;2861:23;2857:32;2854:52;;;2902:1;2899;2892:12;2854:52;2925:26;2941:9;2925:26;:::i;:::-;2915:36;;3001:2;2990:9;2986:18;2973:32;3045:4;3038:5;3034:16;3027:5;3024:27;3014:55;;3065:1;3062;3055:12;3014:55;3088:5;3078:15;;;2762:337;;;;;:::o;3501:454::-;3596:6;3604;3612;3620;3628;3681:3;3669:9;3660:7;3656:23;3652:33;3649:53;;;3698:1;3695;3688:12;3649:53;-1:-1:-1;;3721:23:1;;;3791:2;3776:18;;3763:32;;-1:-1:-1;3842:2:1;3827:18;;3814:32;;3893:2;3878:18;;3865:32;;-1:-1:-1;3944:3:1;3929:19;3916:33;;-1:-1:-1;3501:454:1;-1:-1:-1;3501:454:1:o;3960:315::-;4025:6;4033;4086:2;4074:9;4065:7;4061:23;4057:32;4054:52;;;4102:1;4099;4092:12;4054:52;4141:9;4128:23;4160:31;4185:5;4160:31;:::i;:::-;4210:5;-1:-1:-1;4234:35:1;4265:2;4250:18;;4234:35;:::i;:::-;4224:45;;3960:315;;;;;:::o;4280:180::-;4339:6;4392:2;4380:9;4371:7;4367:23;4363:32;4360:52;;;4408:1;4405;4398:12;4360:52;-1:-1:-1;4431:23:1;;4280:180;-1:-1:-1;4280:180:1:o;4731:529::-;4808:6;4816;4824;4877:2;4865:9;4856:7;4852:23;4848:32;4845:52;;;4893:1;4890;4883:12;4845:52;4932:9;4919:23;4951:31;4976:5;4951:31;:::i;:::-;5001:5;-1:-1:-1;5058:2:1;5043:18;;5030:32;5071:33;5030:32;5071:33;:::i;:::-;5123:7;-1:-1:-1;5182:2:1;5167:18;;5154:32;5195:33;5154:32;5195:33;:::i;:::-;5247:7;5237:17;;;4731:529;;;;;:::o;5265:388::-;5333:6;5341;5394:2;5382:9;5373:7;5369:23;5365:32;5362:52;;;5410:1;5407;5400:12;5362:52;5449:9;5436:23;5468:31;5493:5;5468:31;:::i;:::-;5518:5;-1:-1:-1;5575:2:1;5560:18;;5547:32;5588:33;5547:32;5588:33;:::i;5658:248::-;5723:6;5731;5784:2;5772:9;5763:7;5759:23;5755:32;5752:52;;;5800:1;5797;5790:12;5752:52;5823:26;5839:9;5823:26;:::i;6397:329::-;6599:2;6581:21;;;6638:1;6618:18;;;6611:29;-1:-1:-1;;;6671:2:1;6656:18;;6649:36;6717:2;6702:18;;6397:329::o;6731:335::-;6933:2;6915:21;;;6972:2;6952:18;;;6945:30;-1:-1:-1;;;7006:2:1;6991:18;;6984:41;7057:2;7042:18;;6731:335::o;7071:184::-;7141:6;7194:2;7182:9;7173:7;7169:23;7165:32;7162:52;;;7210:1;7207;7200:12;7162:52;-1:-1:-1;7233:16:1;;7071:184;-1:-1:-1;7071:184:1:o;7735:127::-;7796:10;7791:3;7787:20;7784:1;7777:31;7827:4;7824:1;7817:15;7851:4;7848:1;7841:15;7867:168;7907:7;7973:1;7969;7965:6;7961:14;7958:1;7955:21;7950:1;7943:9;7936:17;7932:45;7929:71;;;7980:18;;:::i;:::-;-1:-1:-1;8020:9:1;;7867:168::o;8040:217::-;8080:1;8106;8096:132;;8150:10;8145:3;8141:20;8138:1;8131:31;8185:4;8182:1;8175:15;8213:4;8210:1;8203:15;8096:132;-1:-1:-1;8242:9:1;;8040:217::o;9044:125::-;9084:4;9112:1;9109;9106:8;9103:34;;;9117:18;;:::i;:::-;-1:-1:-1;9154:9:1;;9044:125::o;9526:128::-;9566:3;9597:1;9593:6;9590:1;9587:13;9584:39;;;9603:18;;:::i;:::-;-1:-1:-1;9639:9:1;;9526:128::o;11683:127::-;11744:10;11739:3;11735:20;11732:1;11725:31;11775:4;11772:1;11765:15;11799:4;11796:1;11789:15;11815:980;12077:4;12125:3;12114:9;12110:19;12156:6;12145:9;12138:25;12182:2;12220:6;12215:2;12204:9;12200:18;12193:34;12263:3;12258:2;12247:9;12243:18;12236:31;12287:6;12322;12316:13;12353:6;12345;12338:22;12391:3;12380:9;12376:19;12369:26;;12430:2;12422:6;12418:15;12404:29;;12451:1;12461:195;12475:6;12472:1;12469:13;12461:195;;;12540:13;;-1:-1:-1;;;;;12536:39:1;12524:52;;12631:15;;;;12596:12;;;;12572:1;12490:9;12461:195;;;-1:-1:-1;;;;;;;12712:32:1;;;;12707:2;12692:18;;12685:60;-1:-1:-1;;;12776:3:1;12761:19;12754:35;12673:3;11815:980;-1:-1:-1;;;11815:980:1:o;14446:306::-;14534:6;14542;14550;14603:2;14591:9;14582:7;14578:23;14574:32;14571:52;;;14619:1;14616;14609:12;14571:52;14648:9;14642:16;14632:26;;14698:2;14687:9;14683:18;14677:25;14667:35;;14742:2;14731:9;14727:18;14721:25;14711:35;;14446:306;;;;;:::o
Swarm Source
ipfs://a003cdef9b75bf87905bcecd8ab90be427e3a93970a901b583f7292805b8e7dc
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.