ERC-20
Overview
Max Total Supply
1,000,000,000 FFI
Holders
50
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
990 FFIValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
FFI
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-10-18 */ /** https://t.me/FFI_ERC20 FFI - FINANCIAL FREEDOM INU 1000x is nothing please don't track our funding tx, it is DEFINITELY not linked to big wallets uint256 _totalSupply = 1_000_000_000 * (10 ** _decimals); uint256 _maxBuyTxAmount = (_totalSupply * 1) / 100; uint256 _maxSellTxAmount = (_totalSupply * 1) / 300; uint256 _maxWalletSize = (_totalSupply * 1) / 100; ^ this means you can buy 1% in one tx, 1% is also max wallet, however you can only sell 0.3% at a time Until we remove limits that is. */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.7; library Address { /** * */ function isContract(address account) internal view returns (bool) { bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } abstract contract Context { function _msgSender() internal view returns (address payable) { return payable(msg.sender); } function _msgData() internal view returns (bytes memory) { this; return msg.data; } } interface IERC20 { function totalSupply() external view returns (uint256); 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); } interface IDEXFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IDEXRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } contract FFI is IERC20, Ownable { using Address for address; address DEAD = 0x000000000000000000000000000000000000dEaD; address ZERO = 0x0000000000000000000000000000000000000000; string constant _name = "FINANCIAL FREEDOM INU"; string constant _symbol = "FFI"; uint8 constant _decimals = 9; uint256 _totalSupply = 1_000_000_000 * (10 ** _decimals); uint256 _maxBuyTxAmount = (_totalSupply * 1) / 100; uint256 _maxSellTxAmount = (_totalSupply * 1) / 300; uint256 _maxWalletSize = (_totalSupply * 1) / 100; mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) _allowances; mapping (address => uint256) public lastSell; mapping (address => uint256) public lastBuy; mapping (address => bool) isFeeExempt; mapping (address => bool) isTxLimitExempt; mapping (address => bool) liquidityCreator; uint256 marketingFee = 400; uint256 liquidityFee = 500; uint256 totalFee = marketingFee + liquidityFee; uint256 sellBias = 0; uint256 feeDenominator = 10000; address payable public liquidityFeeReceiver = payable(0xB41eD775c337E895BC7AccDc542D3dE051Ad16b0); address payable public marketingFeeReceiver = payable(0xB41eD775c337E895BC7AccDc542D3dE051Ad16b0); IDEXRouter public router; address routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; mapping (address => bool) liquidityPools; mapping (address => uint256) public protected; bool protectionEnabled = true; bool protectionDisabled = false; uint256 protectionLimit; uint256 public protectionCount; uint256 protectionTimer; address public pair; uint256 public launchedAt; uint256 public launchedTime; uint256 public deadBlocks; bool startBullRun = false; bool pauseDisabled = false; uint256 public rateLimit = 2; bool public swapEnabled = false; bool processEnabled = true; uint256 public swapThreshold = _totalSupply / 1000; uint256 public swapMinimum = _totalSupply / 10000; bool inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } mapping (address => bool) teamMember; modifier onlyTeam() { require(teamMember[_msgSender()] || msg.sender == owner(), "Caller is not a team member"); _; } event ProtectedWallet(address, address, uint256, uint8); constructor () { router = IDEXRouter(routerAddress); pair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this)); liquidityPools[pair] = true; _allowances[owner()][routerAddress] = type(uint256).max; _allowances[address(this)][routerAddress] = type(uint256).max; isFeeExempt[owner()] = true; liquidityCreator[owner()] = true; isTxLimitExempt[address(this)] = true; isTxLimitExempt[owner()] = true; isTxLimitExempt[routerAddress] = true; isTxLimitExempt[DEAD] = true; _balances[owner()] = _totalSupply; emit Transfer(address(0), owner(), _totalSupply); } receive() external payable { } function totalSupply() external view override returns (uint256) { return _totalSupply; } function decimals() external pure returns (uint8) { return _decimals; } function symbol() external pure returns (string memory) { return _symbol; } function name() external pure returns (string memory) { return _name; } function getOwner() external view returns (address) { return owner(); } function maxBuyTxTokens() external view returns (uint256) { return _maxBuyTxAmount / (10 ** _decimals); } function maxSellTxTokens() external view returns (uint256) { return _maxSellTxAmount / (10 ** _decimals); } function maxWalletTokens() external view returns (uint256) { return _maxWalletSize / (10 ** _decimals); } 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 setTeamMember(address _team, bool _enabled) external onlyOwner { teamMember[_team] = _enabled; } function airdrop(address[] calldata addresses, uint256[] calldata amounts) external onlyOwner { require(addresses.length > 0 && amounts.length == addresses.length); address from = msg.sender; for (uint i = 0; i < addresses.length; i++) { if(!liquidityPools[addresses[i]] && !liquidityCreator[addresses[i]]) { _basicTransfer(from, addresses[i], amounts[i] * (10 ** _decimals)); } } } function clearStuckBalance(uint256 amountPercentage, address adr) external onlyTeam { uint256 amountETH = address(this).balance; payable(adr).transfer((amountETH * amountPercentage) / 100); } function openTrading(uint256 _deadBlocks, uint256 _protection, uint256 _limit) external onlyTeam { require(!startBullRun && _deadBlocks < 10); deadBlocks = _deadBlocks; startBullRun = true; launchedAt = block.number; protectionTimer = block.timestamp + _protection; protectionLimit = _limit * (10 ** _decimals); } function pauseTrading() external onlyTeam { require(!pauseDisabled); startBullRun = false; } function disablePause() external onlyTeam { pauseDisabled = true; startBullRun = true; } function setProtection(bool _protect, uint256 _addTime) external onlyTeam { require(!protectionDisabled); protectionEnabled = _protect; require(_addTime < 1 days); protectionTimer += _addTime; } function disableProtection() external onlyTeam { protectionDisabled = true; protectionEnabled = false; } function protectWallet(address[] calldata _wallets, bool _protect) external onlyTeam { if (_protect) { require(protectionEnabled); } for (uint i = 0; i < _wallets.length; i++) { if (_protect) { protectionCount++; emit ProtectedWallet(tx.origin, _wallets[i], block.number, 2); } else { if (protected[_wallets[i]] != 0) protectionCount--; } protected[_wallets[i]] = _protect ? block.number : 0; } } 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] - amount; } return _transferFrom(sender, recipient, amount); } function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) { require(sender != address(0), "BEP20: transfer from 0x0"); require(recipient != address(0), "BEP20: transfer to 0x0"); require(amount > 0, "Amount must be > zero"); require(_balances[sender] >= amount, "Insufficient balance"); if(!launched() && liquidityPools[recipient]){ require(liquidityCreator[sender], "Liquidity not added yet."); launch(); } if(!startBullRun){ require(liquidityCreator[sender] || liquidityCreator[recipient], "Trading not open yet."); } checkTxLimit(sender, recipient, amount); if (!liquidityPools[recipient] && recipient != DEAD) { if (!isTxLimitExempt[recipient]) { checkWalletLimit(recipient, amount); } } if(protectionEnabled && protectionTimer > block.timestamp) { if(liquidityPools[sender] && tx.origin != recipient && protected[recipient] == 0) { protected[recipient] = block.number; protectionCount++; emit ProtectedWallet(tx.origin, recipient, block.number, 0); } } if(inSwap){ return _basicTransfer(sender, recipient, amount); } _balances[sender] = _balances[sender] - amount; uint256 amountReceived = shouldTakeFee(sender) ? takeFee(recipient, amount) : amount; if(shouldSwapBack(recipient)){ if (amount > 0) swapBack(amount); } _balances[recipient] = _balances[recipient] + amountReceived; emit Transfer(sender, recipient, amountReceived); return true; } function launched() internal view returns (bool) { return launchedAt != 0; } function launch() internal { launchedAt = block.number; launchedTime = block.timestamp; swapEnabled = true; } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] = _balances[sender] - amount; _balances[recipient] = _balances[recipient] + amount; emit Transfer(sender, recipient, amount); return true; } function checkWalletLimit(address recipient, uint256 amount) internal view { uint256 walletLimit = _maxWalletSize; require(_balances[recipient] + amount <= walletLimit, "Transfer amount exceeds the bag size."); } function checkTxLimit(address sender, address recipient, uint256 amount) internal { require(isTxLimitExempt[sender] || amount <= (liquidityPools[sender] ? _maxBuyTxAmount : _maxSellTxAmount), "TX Limit Exceeded"); require(isTxLimitExempt[sender] || lastBuy[recipient] + rateLimit <= block.number, "Transfer rate limit exceeded."); if (protected[sender] != 0){ require(amount <= protectionLimit * (10 ** _decimals) && lastSell[sender] == 0 && protectionTimer > block.timestamp, "Wallet protected, please contact support."); lastSell[sender] = block.number; } if (liquidityPools[recipient]) { lastSell[sender] = block.number; } else if (shouldTakeFee(sender)) { if (protectionEnabled && protectionTimer > block.timestamp && lastBuy[tx.origin] == block.number && protected[recipient] == 0) { protected[recipient] = block.number; emit ProtectedWallet(tx.origin, recipient, block.number, 1); } lastBuy[recipient] = block.number; if (tx.origin != recipient) lastBuy[tx.origin] = block.number; } } function shouldTakeFee(address sender) internal view returns (bool) { return !isFeeExempt[sender]; } function getTotalFee(bool selling) public view returns (uint256) { if(launchedAt + deadBlocks >= block.number){ return feeDenominator - 1; } if (selling) return totalFee + sellBias; return totalFee - sellBias; } function takeFee(address recipient, uint256 amount) internal returns (uint256) { bool selling = liquidityPools[recipient]; uint256 feeAmount = (amount * getTotalFee(selling)) / feeDenominator; _balances[address(this)] += feeAmount; return amount - feeAmount; } function shouldSwapBack(address recipient) internal view returns (bool) { return !liquidityPools[msg.sender] && !inSwap && swapEnabled && liquidityPools[recipient] && _balances[address(this)] >= swapMinimum; } function swapBack(uint256 amount) internal swapping { uint256 amountToSwap = amount < swapThreshold ? amount : swapThreshold; if (_balances[address(this)] < amountToSwap) amountToSwap = _balances[address(this)]; uint256 amountToLiquify = (amountToSwap * liquidityFee / 2) / totalFee; amountToSwap -= amountToLiquify; address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); uint256 balanceBefore = address(this).balance; router.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); uint256 amountBNB = address(this).balance - balanceBefore; uint256 totalBNBFee = totalFee - (liquidityFee / 2); uint256 amountBNBLiquidity = (amountBNB * liquidityFee / 2) / totalBNBFee; uint256 amountBNBMarketing = amountBNB - amountBNBLiquidity; if (amountBNBMarketing > 0) marketingFeeReceiver.transfer(amountBNBMarketing); if(amountToLiquify > 0){ router.addLiquidityETH{value: amountBNBLiquidity}( address(this), amountToLiquify, 0, 0, liquidityFeeReceiver, block.timestamp ); } emit FundsDistributed(amountBNBMarketing, amountBNBLiquidity, amountToLiquify); } function addLiquidityPool(address lp, bool isPool) external onlyOwner { require(lp != pair, "Can't alter current liquidity pair"); liquidityPools[lp] = isPool; } function setRateLimit(uint256 rate) external onlyOwner { require(rate <= 60 seconds); rateLimit = rate; } function setTxLimit(uint256 buyNumerator, uint256 sellNumerator, uint256 divisor) external onlyOwner { require(buyNumerator > 0 && sellNumerator > 0 && divisor > 0 && divisor <= 10000); _maxBuyTxAmount = (_totalSupply * buyNumerator) / divisor; _maxSellTxAmount = (_totalSupply * sellNumerator) / divisor; } function setMaxWallet(uint256 numerator, uint256 divisor) external onlyOwner() { require(numerator > 0 && divisor > 0 && divisor <= 10000); _maxWalletSize = (_totalSupply * numerator) / divisor; } function setIsFeeExempt(address holder, bool exempt) external onlyOwner { isFeeExempt[holder] = exempt; } function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner { isTxLimitExempt[holder] = exempt; } function setFees(uint256 _liquidityFee, uint256 _marketingFee, uint256 _sellBias, uint256 _feeDenominator) external onlyOwner { liquidityFee = _liquidityFee; marketingFee = _marketingFee; totalFee = _marketingFee + _liquidityFee; sellBias = _sellBias; feeDenominator = _feeDenominator; require(totalFee < feeDenominator / 2); } function setFeeReceivers(address _liquidityFeeReceiver, address _marketingFeeReceiver) external onlyOwner { liquidityFeeReceiver = payable(_liquidityFeeReceiver); marketingFeeReceiver = payable(_marketingFeeReceiver); } function setSwapBackSettings(bool _enabled, bool _processEnabled, uint256 _denominator, uint256 _swapMinimum) external onlyOwner { require(_denominator > 0); swapEnabled = _enabled; processEnabled = _processEnabled; swapThreshold = _totalSupply / _denominator; swapMinimum = _swapMinimum * (10 ** _decimals); } function getCirculatingSupply() public view returns (uint256) { return _totalSupply - (balanceOf(DEAD) + balanceOf(ZERO)); } event FundsDistributed(uint256 marketingBNB, uint256 liquidityBNB, uint256 liquidityTokens); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"marketingBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidityBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidityTokens","type":"uint256"}],"name":"FundsDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"","type":"uint8"}],"name":"ProtectedWallet","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":[{"internalType":"address","name":"lp","type":"address"},{"internalType":"bool","name":"isPool","type":"bool"}],"name":"addLiquidityPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","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":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"},{"internalType":"address","name":"adr","type":"address"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"disablePause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"selling","type":"bool"}],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeReceiver","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTxTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTxTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadBlocks","type":"uint256"},{"internalType":"uint256","name":"_protection","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pauseTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_wallets","type":"address[]"},{"internalType":"bool","name":"_protect","type":"bool"}],"name":"protectWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"protected","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protectionCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rateLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_liquidityFeeReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_sellBias","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_protect","type":"bool"},{"internalType":"uint256","name":"_addTime","type":"uint256"}],"name":"setProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"setRateLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"bool","name":"_processEnabled","type":"bool"},{"internalType":"uint256","name":"_denominator","type":"uint256"},{"internalType":"uint256","name":"_swapMinimum","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_team","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setTeamMember","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyNumerator","type":"uint256"},{"internalType":"uint256","name":"sellNumerator","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapMinimum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600180546001600160a01b031990811661dead17909155600280549091169055620000326009600a6200059d565b6200004290633b9aca006200065e565b600355606460035460016200005891906200065e565b62000064919062000531565b60045561012c60035460016200007b91906200065e565b62000087919062000531565b600555606460035460016200009d91906200065e565b620000a9919062000531565b600655610190600e8190556101f4600f819055620000c79162000516565b6010556000601155612710601255601380546001600160a01b031990811673b41ed775c337e895bc7accdc542d3de051ad16b090811790925560148054821690921790915560168054909116737a250d5630b4cf539739df2c5dacb4c659f2488d1790556019805461ffff19908116600117909155602180548216905560026022556023805490911661010017905560035462000168906103e89062000531565b6024556127106003546200017d919062000531565b6025553480156200018d57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601654601580546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b1580156200022757600080fd5b505afa1580156200023c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002629190620004e4565b6001600160a01b031663c9c65396601560009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002bf57600080fd5b505afa158015620002d4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002fa9190620004e4565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381600087803b1580156200034257600080fd5b505af115801562000357573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037d9190620004e4565b601d80546001600160a01b0319166001600160a01b039290921691821790556000908152601760205260408120805460ff1916600117905560001990600890620003cf6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120601680548416835290855283822095909555308082526008855283822086548416835285528382206000199055815483168252600b85528382208054600160ff199182168117909255835485168452600d87528584208054821683179055918352600c865284832080548316821790558254841683528483208054831682179055955483168252838220805482168717905585548316825283822080549091169095179094556003548454821685526007845282852081905584549251908152911692917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000696565b600060208284031215620004f757600080fd5b81516001600160a01b03811681146200050f57600080fd5b9392505050565b600082198211156200052c576200052c62000680565b500190565b6000826200054f57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156200059557816000190482111562000579576200057962000680565b808516156200058757918102915b93841c939080029062000559565b509250929050565b60006200050f60ff841683600082620005b95750600162000658565b81620005c85750600062000658565b8160018114620005e15760028114620005ec576200060c565b600191505062000658565b60ff84111562000600576200060062000680565b50506001821b62000658565b5060208310610133831016604e8410600b841016171562000631575081810a62000658565b6200063d838362000554565b806000190482111562000654576200065462000680565b0290505b92915050565b60008160001904831182151516156200067b576200067b62000680565b500290565b634e487b7160e01b600052601160045260246000fd5b612c5180620006a66000396000f3fe6080604052600436106103035760003560e01c80636f4ce42811610190578063bf56b371116100dc578063e96fada211610095578063f84ba65d1161006f578063f84ba65d1461093b578063f8821a621461095b578063f887ea4014610971578063fabb0b4f1461099157600080fd5b8063e96fada2146108db578063f1f3bca3146108fb578063f2fde38b1461091b57600080fd5b8063bf56b371146107f2578063bfa21d6a14610808578063c1adf7bc14610828578063c287184e14610855578063d686014214610875578063dd62ed3e1461089557600080fd5b806395d89b4111610149578063a8aa1b3111610123578063a8aa1b311461077d578063a9059cbb1461079d578063abe57e70146107bd578063bafe446b146107dd57600080fd5b806395d89b411461071b5780639b02c40214610747578063a4b45c001461075d57600080fd5b80636f4ce428146106335780636fcba3771461066057806370a0823114610680578063715018a6146106b6578063893d20e8146106cb5780638da5cb5b146106fd57600080fd5b8063492a937b1161024f578063584f969a1161020857806363a803e1116101e257806363a803e1146105c4578063658d4b7f146105d957806367243482146105f95780636ddd17131461061957600080fd5b8063584f969a1461057957806360bba03d1461058e57806361e08e72146105ae57600080fd5b8063492a937b146104c357806350713935146104e357806354a1dfc91461050357806356a227f214610523578063571ac8b0146105435780635804f1e41461056357600080fd5b8063234e9494116102bc578063313ce56711610296578063313ce5671461044557806334848b9a14610461578063421dd7c71461048157806346d7edaa1461049657600080fd5b8063234e9494146103fb57806323b872dd146104105780632b112e491461043057600080fd5b80630445b6671461030f57806306fdde0314610338578063095db78f1461037f578063095ea7b3146103a15780631031e36e146103d157806318160ddd146103e657600080fd5b3661030a57005b600080fd5b34801561031b57600080fd5b5061032560245481565b6040519081526020015b60405180910390f35b34801561034457600080fd5b5060408051808201909152601581527446494e414e4349414c2046524545444f4d20494e5560581b60208201525b60405161032f9190612915565b34801561038b57600080fd5b5061039f61039a366004612731565b6109a7565b005b3480156103ad57600080fd5b506103c16103bc366004612699565b610b63565b604051901515815260200161032f565b3480156103dd57600080fd5b5061039f610bd0565b3480156103f257600080fd5b50600354610325565b34801561040757600080fd5b50610325610c35565b34801561041c57600080fd5b506103c161042b366004612623565b610c55565b34801561043c57600080fd5b50610325610cea565b34801561045157600080fd5b506040516009815260200161032f565b34801561046d57600080fd5b5061039f61047c36600461285e565b610d2b565b34801561048d57600080fd5b5061039f610dcc565b3480156104a257600080fd5b506103256104b13660046125b0565b60186020526000908152604090205481565b3480156104cf57600080fd5b5061039f6104de366004612664565b610e21565b3480156104ef57600080fd5b5061039f6104fe36600461285e565b610edf565b34801561050f57600080fd5b5061039f61051e3660046127a0565b610f7a565b34801561052f57600080fd5b5061039f61053e366004612817565b610ffd565b34801561054f57600080fd5b506103c161055e3660046125b0565b61108d565b34801561056f57600080fd5b50610325601f5481565b34801561058557600080fd5b5061039f61109b565b34801561059a57600080fd5b5061039f6105a9366004612664565b6110f0565b3480156105ba57600080fd5b5061032560225481565b3480156105d057600080fd5b50610325611145565b3480156105e557600080fd5b5061039f6105f4366004612664565b611160565b34801561060557600080fd5b5061039f6106143660046126c5565b6111b5565b34801561062557600080fd5b506023546103c19060ff1681565b34801561063f57600080fd5b5061032561064e3660046125b0565b60096020526000908152604090205481565b34801561066c57600080fd5b5061039f61067b3660046128b8565b61131c565b34801561068c57600080fd5b5061032561069b3660046125b0565b6001600160a01b031660009081526007602052604090205490565b3480156106c257600080fd5b5061039f61137f565b3480156106d757600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161032f565b34801561070957600080fd5b506000546001600160a01b03166106e5565b34801561072757600080fd5b5060408051808201909152600381526246464960e81b6020820152610372565b34801561075357600080fd5b50610325601b5481565b34801561076957600080fd5b5061039f6107783660046125ea565b6113f3565b34801561078957600080fd5b50601d546106e5906001600160a01b031681565b3480156107a957600080fd5b506103c16107b8366004612699565b61144b565b3480156107c957600080fd5b5061039f6107d836600461283c565b611458565b3480156107e957600080fd5b506103256114c9565b3480156107fe57600080fd5b50610325601e5481565b34801561081457600080fd5b506013546106e5906001600160a01b031681565b34801561083457600080fd5b506103256108433660046125b0565b600a6020526000908152604090205481565b34801561086157600080fd5b5061039f6108703660046127fe565b6114e4565b34801561088157600080fd5b5061039f6108903660046127e2565b611521565b3480156108a157600080fd5b506103256108b03660046125ea565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b3480156108e757600080fd5b506014546106e5906001600160a01b031681565b34801561090757600080fd5b50610325610916366004612785565b6115b2565b34801561092757600080fd5b5061039f6109363660046125b0565b6115ff565b34801561094757600080fd5b5061039f610956366004612664565b6116e9565b34801561096757600080fd5b5061032560255481565b34801561097d57600080fd5b506015546106e5906001600160a01b031681565b34801561099d57600080fd5b5061032560205481565b3360009081526027602052604090205460ff16806109cf57506000546001600160a01b031633145b6109f45760405162461bcd60e51b81526004016109eb9061296a565b60405180910390fd5b8015610a095760195460ff16610a0957600080fd5b60005b82811015610b5d578115610a9857601b8054906000610a2a83612bbc565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea32858584818110610a6357610a63612bed565b9050602002016020810190610a7891906125b0565b436002604051610a8b94939291906128ea565b60405180910390a1610af8565b60186000858584818110610aae57610aae612bed565b9050602002016020810190610ac391906125b0565b6001600160a01b0316815260208101919091526040016000205415610af857601b8054906000610af283612ba5565b91905055505b81610b04576000610b06565b435b60186000868685818110610b1c57610b1c612bed565b9050602002016020810190610b3191906125b0565b6001600160a01b0316815260208101919091526040016000205580610b5581612bbc565b915050610a0c565b50505050565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610bbe9086815260200190565b60405180910390a35060015b92915050565b3360009081526027602052604090205460ff1680610bf857506000546001600160a01b031633145b610c145760405162461bcd60e51b81526004016109eb9061296a565b602154610100900460ff1615610c2957600080fd5b6021805460ff19169055565b6000610c436009600a612ac4565b600554610c509190612a5f565b905090565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001914610cd5576001600160a01b0384166000908152600860209081526040808320338452909152902054610cb0908390612b8e565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b610ce084848461173e565b90505b9392505050565b6002546001600160a01b039081166000908152600760205260408082205460015490931682528120549091610d1e91612a47565b600354610c509190612b8e565b3360009081526027602052604090205460ff1680610d5357506000546001600160a01b031633145b610d6f5760405162461bcd60e51b81526004016109eb9061296a565b60215460ff16158015610d825750600a83105b610d8b57600080fd5b60208390556021805460ff1916600117905543601e55610dab8242612a47565b601c55610dba6009600a612ac4565b610dc49082612b6f565b601a55505050565b3360009081526027602052604090205460ff1680610df457506000546001600160a01b031633145b610e105760405162461bcd60e51b81526004016109eb9061296a565b6019805461ffff1916610100179055565b6000546001600160a01b03163314610e4b5760405162461bcd60e51b81526004016109eb906129a1565b601d546001600160a01b0383811691161415610eb45760405162461bcd60e51b815260206004820152602260248201527f43616e277420616c7465722063757272656e74206c697175696469747920706160448201526134b960f11b60648201526084016109eb565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610f095760405162461bcd60e51b81526004016109eb906129a1565b600083118015610f195750600082115b8015610f255750600081115b8015610f3357506127108111155b610f3c57600080fd5b8083600354610f4b9190612b6f565b610f559190612a5f565b6004556003548190610f68908490612b6f565b610f729190612a5f565b600555505050565b6000546001600160a01b03163314610fa45760405162461bcd60e51b81526004016109eb906129a1565b60008211610fb157600080fd5b6023805461ffff191685151561ff0019161761010085151502179055600354610fdb908390612a5f565b602455610fea6009600a612ac4565b610ff49082612b6f565b60255550505050565b3360009081526027602052604090205460ff168061102557506000546001600160a01b031633145b6110415760405162461bcd60e51b81526004016109eb9061296a565b476001600160a01b0382166108fc606461105b8685612b6f565b6110659190612a5f565b6040518115909202916000818181858888f19350505050158015610b5d573d6000803e3d6000fd5b6000610bca82600019610b63565b3360009081526027602052604090205460ff16806110c357506000546001600160a01b031633145b6110df5760405162461bcd60e51b81526004016109eb9061296a565b6021805461ffff1916610101179055565b6000546001600160a01b0316331461111a5760405162461bcd60e51b81526004016109eb906129a1565b6001600160a01b03919091166000908152602760205260409020805460ff1916911515919091179055565b60006111536009600a612ac4565b600654610c509190612a5f565b6000546001600160a01b0316331461118a5760405162461bcd60e51b81526004016109eb906129a1565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146111df5760405162461bcd60e51b81526004016109eb906129a1565b82158015906111ed57508083145b6111f657600080fd5b3360005b84811015611314576017600087878481811061121857611218612bed565b905060200201602081019061122d91906125b0565b6001600160a01b0316815260208101919091526040016000205460ff1615801561129c5750600d600087878481811061126857611268612bed565b905060200201602081019061127d91906125b0565b6001600160a01b0316815260208101919091526040016000205460ff16155b1561130257611300828787848181106112b7576112b7612bed565b90506020020160208101906112cc91906125b0565b6112d86009600a612ac4565b8787868181106112ea576112ea612bed565b905060200201356112fb9190612b6f565b611c40565b505b8061130c81612bbc565b9150506111fa565b505050505050565b6000546001600160a01b031633146113465760405162461bcd60e51b81526004016109eb906129a1565b600f849055600e83905561135a8484612a47565b60105560118290556012819055611372600282612a5f565b60105410610b5d57600080fd5b6000546001600160a01b031633146113a95760405162461bcd60e51b81526004016109eb906129a1565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461141d5760405162461bcd60e51b81526004016109eb906129a1565b601380546001600160a01b039384166001600160a01b03199182161790915560148054929093169116179055565b6000610ce333848461173e565b6000546001600160a01b031633146114825760405162461bcd60e51b81526004016109eb906129a1565b6000821180156114925750600081115b80156114a057506127108111155b6114a957600080fd5b80826003546114b89190612b6f565b6114c29190612a5f565b6006555050565b60006114d76009600a612ac4565b600454610c509190612a5f565b6000546001600160a01b0316331461150e5760405162461bcd60e51b81526004016109eb906129a1565b603c81111561151c57600080fd5b602255565b3360009081526027602052604090205460ff168061154957506000546001600160a01b031633145b6115655760405162461bcd60e51b81526004016109eb9061296a565b601954610100900460ff161561157a57600080fd5b6019805460ff191683151517905562015180811061159757600080fd5b80601c60008282546115a99190612a47565b90915550505050565b600043602054601e546115c59190612a47565b106115d9576001601254610bca9190612b8e565b81156115ef57601154601054610bca9190612a47565b601154601054610bca9190612b8e565b6000546001600160a01b031633146116295760405162461bcd60e51b81526004016109eb906129a1565b6001600160a01b03811661168e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109eb565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146117135760405162461bcd60e51b81526004016109eb906129a1565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b60006001600160a01b0384166117965760405162461bcd60e51b815260206004820152601860248201527f42455032303a207472616e736665722066726f6d20307830000000000000000060448201526064016109eb565b6001600160a01b0383166117e55760405162461bcd60e51b8152602060048201526016602482015275042455032303a207472616e7366657220746f203078360541b60448201526064016109eb565b6000821161182d5760405162461bcd60e51b8152602060048201526015602482015274416d6f756e74206d757374206265203e207a65726f60581b60448201526064016109eb565b6001600160a01b03841660009081526007602052604090205482111561188c5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b60448201526064016109eb565b601e541580156118b457506001600160a01b03831660009081526017602052604090205460ff165b1561193b576001600160a01b0384166000908152600d602052604090205460ff166119215760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206e6f74206164646564207965742e000000000000000060448201526064016109eb565b61193b43601e5542601f556023805460ff19166001179055565b60215460ff166119c8576001600160a01b0384166000908152600d602052604090205460ff168061198457506001600160a01b0383166000908152600d602052604090205460ff165b6119c85760405162461bcd60e51b81526020600482015260156024820152742a3930b234b733903737ba1037b832b7103cb2ba1760591b60448201526064016109eb565b6119d3848484611cfa565b6001600160a01b03831660009081526017602052604090205460ff16158015611a0a57506001546001600160a01b03848116911614155b15611a39576001600160a01b0383166000908152600c602052604090205460ff16611a3957611a39838361204f565b60195460ff168015611a4c575042601c54115b15611b16576001600160a01b03841660009081526017602052604090205460ff168015611a825750326001600160a01b03841614155b8015611aa457506001600160a01b038316600090815260186020526040902054155b15611b16576001600160a01b0383166000908152601860205260408120439055601b805491611ad283612bbc565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea3284436000604051611b0d94939291906128ea565b60405180910390a15b60265460ff1615611b3357611b2c848484611c40565b9050610ce3565b6001600160a01b038416600090815260076020526040902054611b57908390612b8e565b6001600160a01b038516600090815260076020908152604080832093909355600b90529081205460ff1615611b8c5782611b96565b611b9684846120d4565b9050611ba184612152565b15611bb5578215611bb557611bb5836121c9565b6001600160a01b038416600090815260076020526040902054611bd9908290612a47565b6001600160a01b0380861660008181526007602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c2d9085815260200190565b60405180910390a3506001949350505050565b6001600160a01b038316600090815260076020526040812054611c64908390612b8e565b6001600160a01b038086166000908152600760205260408082209390935590851681522054611c94908390612a47565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611ce89086815260200190565b60405180910390a35060019392505050565b6001600160a01b0383166000908152600c602052604090205460ff1680611d4c57506001600160a01b03831660009081526017602052604090205460ff16611d4457600554611d48565b6004545b8111155b611d8c5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016109eb565b6001600160a01b0383166000908152600c602052604090205460ff1680611dd857506022546001600160a01b0383166000908152600a60205260409020544391611dd591612a47565b11155b611e245760405162461bcd60e51b815260206004820152601d60248201527f5472616e736665722072617465206c696d69742065786365656465642e00000060448201526064016109eb565b6001600160a01b03831660009081526018602052604090205415611f0757611e4e6009600a612ac4565b601a54611e5b9190612b6f565b8111158015611e8057506001600160a01b038316600090815260096020526040902054155b8015611e8d575042601c54115b611eeb5760405162461bcd60e51b815260206004820152602960248201527f57616c6c65742070726f7465637465642c20706c6561736520636f6e746163746044820152681039bab83837b93a1760b91b60648201526084016109eb565b6001600160a01b03831660009081526009602052604090204390555b6001600160a01b03821660009081526017602052604090205460ff1615611f465750506001600160a01b03166000908152600960205260409020439055565b6001600160a01b0383166000908152600b602052604090205460ff1661204a5760195460ff168015611f79575042601c54115b8015611f935750326000908152600a602052604090205443145b8015611fb557506001600160a01b038216600090815260186020526040902054155b15612016576001600160a01b03821660009081526018602052604090819020439081905590517f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea9161200d91329186916001906128ea565b60405180910390a15b6001600160a01b0382166000818152600a60205260409020439055321461204a57326000908152600a602052604090204390555b505050565b6006546001600160a01b0383166000908152600760205260409020548190612078908490612a47565b111561204a5760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b60648201526084016109eb565b6001600160a01b03821660009081526017602052604081205460125460ff909116908290612101836115b2565b61210b9086612b6f565b6121159190612a5f565b30600090815260076020526040812080549293508392909190612139908490612a47565b9091555061214990508185612b8e565b95945050505050565b3360009081526017602052604081205460ff16158015612175575060265460ff16155b8015612183575060235460ff165b80156121a757506001600160a01b03821660009081526017602052604090205460ff165b8015610bca575060255430600090815260076020526040902054101592915050565b6026805460ff1916600117905560245460009082106121ea576024546121ec565b815b306000908152600760205260409020549091508111156122185750306000908152600760205260409020545b60006010546002600f548461222d9190612b6f565b6122379190612a5f565b6122419190612a5f565b905061224d8183612b8e565b6040805160028082526060820183529294506000929091602083019080368337019050509050308160008151811061228757612287612bed565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156122db57600080fd5b505afa1580156122ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061231391906125cd565b8160018151811061232657612326612bed565b6001600160a01b03928316602091820292909201015260155460405163791ac94760e01b81524792919091169063791ac947906123709087906000908790309042906004016129d6565b600060405180830381600087803b15801561238a57600080fd5b505af115801561239e573d6000803e3d6000fd5b50505050600081476123b09190612b8e565b905060006002600f546123c39190612a5f565b6010546123d09190612b8e565b90506000816002600f54856123e59190612b6f565b6123ef9190612a5f565b6123f99190612a5f565b905060006124078285612b8e565b9050801561244b576014546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612449573d6000803e3d6000fd5b505b86156124f95760155460135460405163f305d71960e01b8152306004820152602481018a905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990849060c4016060604051808303818588803b1580156124bc57600080fd5b505af11580156124d0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124f5919061288a565b5050505b60408051828152602081018490529081018890527fdaf6233a382145376035341e71f8a04305f7e323d0fe3e58c908cf0a26b76df99060600160405180910390a150506026805460ff1916905550505050505050565b60008083601f84011261256157600080fd5b50813567ffffffffffffffff81111561257957600080fd5b6020830191508360208260051b850101111561259457600080fd5b9250929050565b803580151581146125ab57600080fd5b919050565b6000602082840312156125c257600080fd5b8135610ce381612c03565b6000602082840312156125df57600080fd5b8151610ce381612c03565b600080604083850312156125fd57600080fd5b823561260881612c03565b9150602083013561261881612c03565b809150509250929050565b60008060006060848603121561263857600080fd5b833561264381612c03565b9250602084013561265381612c03565b929592945050506040919091013590565b6000806040838503121561267757600080fd5b823561268281612c03565b91506126906020840161259b565b90509250929050565b600080604083850312156126ac57600080fd5b82356126b781612c03565b946020939093013593505050565b600080600080604085870312156126db57600080fd5b843567ffffffffffffffff808211156126f357600080fd5b6126ff8883890161254f565b9096509450602087013591508082111561271857600080fd5b506127258782880161254f565b95989497509550505050565b60008060006040848603121561274657600080fd5b833567ffffffffffffffff81111561275d57600080fd5b6127698682870161254f565b909450925061277c90506020850161259b565b90509250925092565b60006020828403121561279757600080fd5b610ce38261259b565b600080600080608085870312156127b657600080fd5b6127bf8561259b565b93506127cd6020860161259b565b93969395505050506040820135916060013590565b600080604083850312156127f557600080fd5b6126b78361259b565b60006020828403121561281057600080fd5b5035919050565b6000806040838503121561282a57600080fd5b82359150602083013561261881612c03565b6000806040838503121561284f57600080fd5b50508035926020909101359150565b60008060006060848603121561287357600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561289f57600080fd5b8351925060208401519150604084015190509250925092565b600080600080608085870312156128ce57600080fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b039485168152929093166020830152604082015260ff909116606082015260800190565b600060208083528351808285015260005b8181101561294257858101830151858201604001528201612926565b81811115612954576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252601b908201527f43616c6c6572206973206e6f742061207465616d206d656d6265720000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612a265784516001600160a01b031683529383019391830191600101612a01565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612a5a57612a5a612bd7565b500190565b600082612a7c57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115612abc578160001904821115612aa257612aa2612bd7565b80851615612aaf57918102915b93841c9390800290612a86565b509250929050565b6000610ce360ff841683600082612add57506001610bca565b81612aea57506000610bca565b8160018114612b005760028114612b0a57612b26565b6001915050610bca565b60ff841115612b1b57612b1b612bd7565b50506001821b610bca565b5060208310610133831016604e8410600b8410161715612b49575081810a610bca565b612b538383612a81565b8060001904821115612b6757612b67612bd7565b029392505050565b6000816000190483118215151615612b8957612b89612bd7565b500290565b600082821015612ba057612ba0612bd7565b500390565b600081612bb457612bb4612bd7565b506000190190565b6000600019821415612bd057612bd0612bd7565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114612c1857600080fd5b5056fea2646970667358221220019da438b2a47da366d5996844d127c68f4011fb8f743521fbeb005a019d65e764736f6c63430008070033
Deployed Bytecode
0x6080604052600436106103035760003560e01c80636f4ce42811610190578063bf56b371116100dc578063e96fada211610095578063f84ba65d1161006f578063f84ba65d1461093b578063f8821a621461095b578063f887ea4014610971578063fabb0b4f1461099157600080fd5b8063e96fada2146108db578063f1f3bca3146108fb578063f2fde38b1461091b57600080fd5b8063bf56b371146107f2578063bfa21d6a14610808578063c1adf7bc14610828578063c287184e14610855578063d686014214610875578063dd62ed3e1461089557600080fd5b806395d89b4111610149578063a8aa1b3111610123578063a8aa1b311461077d578063a9059cbb1461079d578063abe57e70146107bd578063bafe446b146107dd57600080fd5b806395d89b411461071b5780639b02c40214610747578063a4b45c001461075d57600080fd5b80636f4ce428146106335780636fcba3771461066057806370a0823114610680578063715018a6146106b6578063893d20e8146106cb5780638da5cb5b146106fd57600080fd5b8063492a937b1161024f578063584f969a1161020857806363a803e1116101e257806363a803e1146105c4578063658d4b7f146105d957806367243482146105f95780636ddd17131461061957600080fd5b8063584f969a1461057957806360bba03d1461058e57806361e08e72146105ae57600080fd5b8063492a937b146104c357806350713935146104e357806354a1dfc91461050357806356a227f214610523578063571ac8b0146105435780635804f1e41461056357600080fd5b8063234e9494116102bc578063313ce56711610296578063313ce5671461044557806334848b9a14610461578063421dd7c71461048157806346d7edaa1461049657600080fd5b8063234e9494146103fb57806323b872dd146104105780632b112e491461043057600080fd5b80630445b6671461030f57806306fdde0314610338578063095db78f1461037f578063095ea7b3146103a15780631031e36e146103d157806318160ddd146103e657600080fd5b3661030a57005b600080fd5b34801561031b57600080fd5b5061032560245481565b6040519081526020015b60405180910390f35b34801561034457600080fd5b5060408051808201909152601581527446494e414e4349414c2046524545444f4d20494e5560581b60208201525b60405161032f9190612915565b34801561038b57600080fd5b5061039f61039a366004612731565b6109a7565b005b3480156103ad57600080fd5b506103c16103bc366004612699565b610b63565b604051901515815260200161032f565b3480156103dd57600080fd5b5061039f610bd0565b3480156103f257600080fd5b50600354610325565b34801561040757600080fd5b50610325610c35565b34801561041c57600080fd5b506103c161042b366004612623565b610c55565b34801561043c57600080fd5b50610325610cea565b34801561045157600080fd5b506040516009815260200161032f565b34801561046d57600080fd5b5061039f61047c36600461285e565b610d2b565b34801561048d57600080fd5b5061039f610dcc565b3480156104a257600080fd5b506103256104b13660046125b0565b60186020526000908152604090205481565b3480156104cf57600080fd5b5061039f6104de366004612664565b610e21565b3480156104ef57600080fd5b5061039f6104fe36600461285e565b610edf565b34801561050f57600080fd5b5061039f61051e3660046127a0565b610f7a565b34801561052f57600080fd5b5061039f61053e366004612817565b610ffd565b34801561054f57600080fd5b506103c161055e3660046125b0565b61108d565b34801561056f57600080fd5b50610325601f5481565b34801561058557600080fd5b5061039f61109b565b34801561059a57600080fd5b5061039f6105a9366004612664565b6110f0565b3480156105ba57600080fd5b5061032560225481565b3480156105d057600080fd5b50610325611145565b3480156105e557600080fd5b5061039f6105f4366004612664565b611160565b34801561060557600080fd5b5061039f6106143660046126c5565b6111b5565b34801561062557600080fd5b506023546103c19060ff1681565b34801561063f57600080fd5b5061032561064e3660046125b0565b60096020526000908152604090205481565b34801561066c57600080fd5b5061039f61067b3660046128b8565b61131c565b34801561068c57600080fd5b5061032561069b3660046125b0565b6001600160a01b031660009081526007602052604090205490565b3480156106c257600080fd5b5061039f61137f565b3480156106d757600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161032f565b34801561070957600080fd5b506000546001600160a01b03166106e5565b34801561072757600080fd5b5060408051808201909152600381526246464960e81b6020820152610372565b34801561075357600080fd5b50610325601b5481565b34801561076957600080fd5b5061039f6107783660046125ea565b6113f3565b34801561078957600080fd5b50601d546106e5906001600160a01b031681565b3480156107a957600080fd5b506103c16107b8366004612699565b61144b565b3480156107c957600080fd5b5061039f6107d836600461283c565b611458565b3480156107e957600080fd5b506103256114c9565b3480156107fe57600080fd5b50610325601e5481565b34801561081457600080fd5b506013546106e5906001600160a01b031681565b34801561083457600080fd5b506103256108433660046125b0565b600a6020526000908152604090205481565b34801561086157600080fd5b5061039f6108703660046127fe565b6114e4565b34801561088157600080fd5b5061039f6108903660046127e2565b611521565b3480156108a157600080fd5b506103256108b03660046125ea565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b3480156108e757600080fd5b506014546106e5906001600160a01b031681565b34801561090757600080fd5b50610325610916366004612785565b6115b2565b34801561092757600080fd5b5061039f6109363660046125b0565b6115ff565b34801561094757600080fd5b5061039f610956366004612664565b6116e9565b34801561096757600080fd5b5061032560255481565b34801561097d57600080fd5b506015546106e5906001600160a01b031681565b34801561099d57600080fd5b5061032560205481565b3360009081526027602052604090205460ff16806109cf57506000546001600160a01b031633145b6109f45760405162461bcd60e51b81526004016109eb9061296a565b60405180910390fd5b8015610a095760195460ff16610a0957600080fd5b60005b82811015610b5d578115610a9857601b8054906000610a2a83612bbc565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea32858584818110610a6357610a63612bed565b9050602002016020810190610a7891906125b0565b436002604051610a8b94939291906128ea565b60405180910390a1610af8565b60186000858584818110610aae57610aae612bed565b9050602002016020810190610ac391906125b0565b6001600160a01b0316815260208101919091526040016000205415610af857601b8054906000610af283612ba5565b91905055505b81610b04576000610b06565b435b60186000868685818110610b1c57610b1c612bed565b9050602002016020810190610b3191906125b0565b6001600160a01b0316815260208101919091526040016000205580610b5581612bbc565b915050610a0c565b50505050565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610bbe9086815260200190565b60405180910390a35060015b92915050565b3360009081526027602052604090205460ff1680610bf857506000546001600160a01b031633145b610c145760405162461bcd60e51b81526004016109eb9061296a565b602154610100900460ff1615610c2957600080fd5b6021805460ff19169055565b6000610c436009600a612ac4565b600554610c509190612a5f565b905090565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001914610cd5576001600160a01b0384166000908152600860209081526040808320338452909152902054610cb0908390612b8e565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b610ce084848461173e565b90505b9392505050565b6002546001600160a01b039081166000908152600760205260408082205460015490931682528120549091610d1e91612a47565b600354610c509190612b8e565b3360009081526027602052604090205460ff1680610d5357506000546001600160a01b031633145b610d6f5760405162461bcd60e51b81526004016109eb9061296a565b60215460ff16158015610d825750600a83105b610d8b57600080fd5b60208390556021805460ff1916600117905543601e55610dab8242612a47565b601c55610dba6009600a612ac4565b610dc49082612b6f565b601a55505050565b3360009081526027602052604090205460ff1680610df457506000546001600160a01b031633145b610e105760405162461bcd60e51b81526004016109eb9061296a565b6019805461ffff1916610100179055565b6000546001600160a01b03163314610e4b5760405162461bcd60e51b81526004016109eb906129a1565b601d546001600160a01b0383811691161415610eb45760405162461bcd60e51b815260206004820152602260248201527f43616e277420616c7465722063757272656e74206c697175696469747920706160448201526134b960f11b60648201526084016109eb565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610f095760405162461bcd60e51b81526004016109eb906129a1565b600083118015610f195750600082115b8015610f255750600081115b8015610f3357506127108111155b610f3c57600080fd5b8083600354610f4b9190612b6f565b610f559190612a5f565b6004556003548190610f68908490612b6f565b610f729190612a5f565b600555505050565b6000546001600160a01b03163314610fa45760405162461bcd60e51b81526004016109eb906129a1565b60008211610fb157600080fd5b6023805461ffff191685151561ff0019161761010085151502179055600354610fdb908390612a5f565b602455610fea6009600a612ac4565b610ff49082612b6f565b60255550505050565b3360009081526027602052604090205460ff168061102557506000546001600160a01b031633145b6110415760405162461bcd60e51b81526004016109eb9061296a565b476001600160a01b0382166108fc606461105b8685612b6f565b6110659190612a5f565b6040518115909202916000818181858888f19350505050158015610b5d573d6000803e3d6000fd5b6000610bca82600019610b63565b3360009081526027602052604090205460ff16806110c357506000546001600160a01b031633145b6110df5760405162461bcd60e51b81526004016109eb9061296a565b6021805461ffff1916610101179055565b6000546001600160a01b0316331461111a5760405162461bcd60e51b81526004016109eb906129a1565b6001600160a01b03919091166000908152602760205260409020805460ff1916911515919091179055565b60006111536009600a612ac4565b600654610c509190612a5f565b6000546001600160a01b0316331461118a5760405162461bcd60e51b81526004016109eb906129a1565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146111df5760405162461bcd60e51b81526004016109eb906129a1565b82158015906111ed57508083145b6111f657600080fd5b3360005b84811015611314576017600087878481811061121857611218612bed565b905060200201602081019061122d91906125b0565b6001600160a01b0316815260208101919091526040016000205460ff1615801561129c5750600d600087878481811061126857611268612bed565b905060200201602081019061127d91906125b0565b6001600160a01b0316815260208101919091526040016000205460ff16155b1561130257611300828787848181106112b7576112b7612bed565b90506020020160208101906112cc91906125b0565b6112d86009600a612ac4565b8787868181106112ea576112ea612bed565b905060200201356112fb9190612b6f565b611c40565b505b8061130c81612bbc565b9150506111fa565b505050505050565b6000546001600160a01b031633146113465760405162461bcd60e51b81526004016109eb906129a1565b600f849055600e83905561135a8484612a47565b60105560118290556012819055611372600282612a5f565b60105410610b5d57600080fd5b6000546001600160a01b031633146113a95760405162461bcd60e51b81526004016109eb906129a1565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461141d5760405162461bcd60e51b81526004016109eb906129a1565b601380546001600160a01b039384166001600160a01b03199182161790915560148054929093169116179055565b6000610ce333848461173e565b6000546001600160a01b031633146114825760405162461bcd60e51b81526004016109eb906129a1565b6000821180156114925750600081115b80156114a057506127108111155b6114a957600080fd5b80826003546114b89190612b6f565b6114c29190612a5f565b6006555050565b60006114d76009600a612ac4565b600454610c509190612a5f565b6000546001600160a01b0316331461150e5760405162461bcd60e51b81526004016109eb906129a1565b603c81111561151c57600080fd5b602255565b3360009081526027602052604090205460ff168061154957506000546001600160a01b031633145b6115655760405162461bcd60e51b81526004016109eb9061296a565b601954610100900460ff161561157a57600080fd5b6019805460ff191683151517905562015180811061159757600080fd5b80601c60008282546115a99190612a47565b90915550505050565b600043602054601e546115c59190612a47565b106115d9576001601254610bca9190612b8e565b81156115ef57601154601054610bca9190612a47565b601154601054610bca9190612b8e565b6000546001600160a01b031633146116295760405162461bcd60e51b81526004016109eb906129a1565b6001600160a01b03811661168e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109eb565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146117135760405162461bcd60e51b81526004016109eb906129a1565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b60006001600160a01b0384166117965760405162461bcd60e51b815260206004820152601860248201527f42455032303a207472616e736665722066726f6d20307830000000000000000060448201526064016109eb565b6001600160a01b0383166117e55760405162461bcd60e51b8152602060048201526016602482015275042455032303a207472616e7366657220746f203078360541b60448201526064016109eb565b6000821161182d5760405162461bcd60e51b8152602060048201526015602482015274416d6f756e74206d757374206265203e207a65726f60581b60448201526064016109eb565b6001600160a01b03841660009081526007602052604090205482111561188c5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b60448201526064016109eb565b601e541580156118b457506001600160a01b03831660009081526017602052604090205460ff165b1561193b576001600160a01b0384166000908152600d602052604090205460ff166119215760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206e6f74206164646564207965742e000000000000000060448201526064016109eb565b61193b43601e5542601f556023805460ff19166001179055565b60215460ff166119c8576001600160a01b0384166000908152600d602052604090205460ff168061198457506001600160a01b0383166000908152600d602052604090205460ff165b6119c85760405162461bcd60e51b81526020600482015260156024820152742a3930b234b733903737ba1037b832b7103cb2ba1760591b60448201526064016109eb565b6119d3848484611cfa565b6001600160a01b03831660009081526017602052604090205460ff16158015611a0a57506001546001600160a01b03848116911614155b15611a39576001600160a01b0383166000908152600c602052604090205460ff16611a3957611a39838361204f565b60195460ff168015611a4c575042601c54115b15611b16576001600160a01b03841660009081526017602052604090205460ff168015611a825750326001600160a01b03841614155b8015611aa457506001600160a01b038316600090815260186020526040902054155b15611b16576001600160a01b0383166000908152601860205260408120439055601b805491611ad283612bbc565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea3284436000604051611b0d94939291906128ea565b60405180910390a15b60265460ff1615611b3357611b2c848484611c40565b9050610ce3565b6001600160a01b038416600090815260076020526040902054611b57908390612b8e565b6001600160a01b038516600090815260076020908152604080832093909355600b90529081205460ff1615611b8c5782611b96565b611b9684846120d4565b9050611ba184612152565b15611bb5578215611bb557611bb5836121c9565b6001600160a01b038416600090815260076020526040902054611bd9908290612a47565b6001600160a01b0380861660008181526007602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c2d9085815260200190565b60405180910390a3506001949350505050565b6001600160a01b038316600090815260076020526040812054611c64908390612b8e565b6001600160a01b038086166000908152600760205260408082209390935590851681522054611c94908390612a47565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611ce89086815260200190565b60405180910390a35060019392505050565b6001600160a01b0383166000908152600c602052604090205460ff1680611d4c57506001600160a01b03831660009081526017602052604090205460ff16611d4457600554611d48565b6004545b8111155b611d8c5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016109eb565b6001600160a01b0383166000908152600c602052604090205460ff1680611dd857506022546001600160a01b0383166000908152600a60205260409020544391611dd591612a47565b11155b611e245760405162461bcd60e51b815260206004820152601d60248201527f5472616e736665722072617465206c696d69742065786365656465642e00000060448201526064016109eb565b6001600160a01b03831660009081526018602052604090205415611f0757611e4e6009600a612ac4565b601a54611e5b9190612b6f565b8111158015611e8057506001600160a01b038316600090815260096020526040902054155b8015611e8d575042601c54115b611eeb5760405162461bcd60e51b815260206004820152602960248201527f57616c6c65742070726f7465637465642c20706c6561736520636f6e746163746044820152681039bab83837b93a1760b91b60648201526084016109eb565b6001600160a01b03831660009081526009602052604090204390555b6001600160a01b03821660009081526017602052604090205460ff1615611f465750506001600160a01b03166000908152600960205260409020439055565b6001600160a01b0383166000908152600b602052604090205460ff1661204a5760195460ff168015611f79575042601c54115b8015611f935750326000908152600a602052604090205443145b8015611fb557506001600160a01b038216600090815260186020526040902054155b15612016576001600160a01b03821660009081526018602052604090819020439081905590517f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea9161200d91329186916001906128ea565b60405180910390a15b6001600160a01b0382166000818152600a60205260409020439055321461204a57326000908152600a602052604090204390555b505050565b6006546001600160a01b0383166000908152600760205260409020548190612078908490612a47565b111561204a5760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b60648201526084016109eb565b6001600160a01b03821660009081526017602052604081205460125460ff909116908290612101836115b2565b61210b9086612b6f565b6121159190612a5f565b30600090815260076020526040812080549293508392909190612139908490612a47565b9091555061214990508185612b8e565b95945050505050565b3360009081526017602052604081205460ff16158015612175575060265460ff16155b8015612183575060235460ff165b80156121a757506001600160a01b03821660009081526017602052604090205460ff165b8015610bca575060255430600090815260076020526040902054101592915050565b6026805460ff1916600117905560245460009082106121ea576024546121ec565b815b306000908152600760205260409020549091508111156122185750306000908152600760205260409020545b60006010546002600f548461222d9190612b6f565b6122379190612a5f565b6122419190612a5f565b905061224d8183612b8e565b6040805160028082526060820183529294506000929091602083019080368337019050509050308160008151811061228757612287612bed565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156122db57600080fd5b505afa1580156122ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061231391906125cd565b8160018151811061232657612326612bed565b6001600160a01b03928316602091820292909201015260155460405163791ac94760e01b81524792919091169063791ac947906123709087906000908790309042906004016129d6565b600060405180830381600087803b15801561238a57600080fd5b505af115801561239e573d6000803e3d6000fd5b50505050600081476123b09190612b8e565b905060006002600f546123c39190612a5f565b6010546123d09190612b8e565b90506000816002600f54856123e59190612b6f565b6123ef9190612a5f565b6123f99190612a5f565b905060006124078285612b8e565b9050801561244b576014546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612449573d6000803e3d6000fd5b505b86156124f95760155460135460405163f305d71960e01b8152306004820152602481018a905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990849060c4016060604051808303818588803b1580156124bc57600080fd5b505af11580156124d0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124f5919061288a565b5050505b60408051828152602081018490529081018890527fdaf6233a382145376035341e71f8a04305f7e323d0fe3e58c908cf0a26b76df99060600160405180910390a150506026805460ff1916905550505050505050565b60008083601f84011261256157600080fd5b50813567ffffffffffffffff81111561257957600080fd5b6020830191508360208260051b850101111561259457600080fd5b9250929050565b803580151581146125ab57600080fd5b919050565b6000602082840312156125c257600080fd5b8135610ce381612c03565b6000602082840312156125df57600080fd5b8151610ce381612c03565b600080604083850312156125fd57600080fd5b823561260881612c03565b9150602083013561261881612c03565b809150509250929050565b60008060006060848603121561263857600080fd5b833561264381612c03565b9250602084013561265381612c03565b929592945050506040919091013590565b6000806040838503121561267757600080fd5b823561268281612c03565b91506126906020840161259b565b90509250929050565b600080604083850312156126ac57600080fd5b82356126b781612c03565b946020939093013593505050565b600080600080604085870312156126db57600080fd5b843567ffffffffffffffff808211156126f357600080fd5b6126ff8883890161254f565b9096509450602087013591508082111561271857600080fd5b506127258782880161254f565b95989497509550505050565b60008060006040848603121561274657600080fd5b833567ffffffffffffffff81111561275d57600080fd5b6127698682870161254f565b909450925061277c90506020850161259b565b90509250925092565b60006020828403121561279757600080fd5b610ce38261259b565b600080600080608085870312156127b657600080fd5b6127bf8561259b565b93506127cd6020860161259b565b93969395505050506040820135916060013590565b600080604083850312156127f557600080fd5b6126b78361259b565b60006020828403121561281057600080fd5b5035919050565b6000806040838503121561282a57600080fd5b82359150602083013561261881612c03565b6000806040838503121561284f57600080fd5b50508035926020909101359150565b60008060006060848603121561287357600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561289f57600080fd5b8351925060208401519150604084015190509250925092565b600080600080608085870312156128ce57600080fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b039485168152929093166020830152604082015260ff909116606082015260800190565b600060208083528351808285015260005b8181101561294257858101830151858201604001528201612926565b81811115612954576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252601b908201527f43616c6c6572206973206e6f742061207465616d206d656d6265720000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612a265784516001600160a01b031683529383019391830191600101612a01565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612a5a57612a5a612bd7565b500190565b600082612a7c57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115612abc578160001904821115612aa257612aa2612bd7565b80851615612aaf57918102915b93841c9390800290612a86565b509250929050565b6000610ce360ff841683600082612add57506001610bca565b81612aea57506000610bca565b8160018114612b005760028114612b0a57612b26565b6001915050610bca565b60ff841115612b1b57612b1b612bd7565b50506001821b610bca565b5060208310610133831016604e8410600b8410161715612b49575081810a610bca565b612b538383612a81565b8060001904821115612b6757612b67612bd7565b029392505050565b6000816000190483118215151615612b8957612b89612bd7565b500290565b600082821015612ba057612ba0612bd7565b500390565b600081612bb457612bb4612bd7565b506000190190565b6000600019821415612bd057612bd0612bd7565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114612c1857600080fd5b5056fea2646970667358221220019da438b2a47da366d5996844d127c68f4011fb8f743521fbeb005a019d65e764736f6c63430008070033
Deployed Bytecode Sourcemap
5566:16299:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7567:50;;;;;;;;;;;;;;;;;;;15227:25:1;;;15215:2;15200:18;7567:50:0;;;;;;;;9031:71;;;;;;;;;;-1:-1:-1;9094:5:0;;;;;;;;;;;;-1:-1:-1;;;9094:5:0;;;;9031:71;;;;;;;:::i;11987:617::-;;;;;;;;;;-1:-1:-1;11987:617:0;;;;;:::i;:::-;;:::i;:::-;;9772:216;;;;;;;;;;-1:-1:-1;9772:216:0;;;;;:::i;:::-;;:::i;:::-;;;9073:14:1;;9066:22;9048:41;;9036:2;9021:18;9772:216:0;8908:187:1;11351:115:0;;;;;;;;;;;;;:::i;8779:88::-;;;;;;;;;;-1:-1:-1;8852:12:0;;8779:88;;9296:107;;;;;;;;;;;;;:::i;12776:341::-;;;;;;;;;;-1:-1:-1;12776:341:0;;;;;:::i;:::-;;:::i;21618:138::-;;;;;;;;;;;;;:::i;8873:71::-;;;;;;;;;;-1:-1:-1;8873:71:0;;5892:1;16714:36:1;;16702:2;16687:18;8873:71:0;16572:184:1;10967:372:0;;;;;;;;;;-1:-1:-1;10967:372:0;;;;;:::i;:::-;;:::i;11848:127::-;;;;;;;;;;;;;:::i;7043:45::-;;;;;;;;;;-1:-1:-1;7043:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;19438:184;;;;;;;;;;-1:-1:-1;19438:184:0;;;;;:::i;:::-;;:::i;19766:339::-;;;;;;;;;;-1:-1:-1;19766:339:0;;;;;:::i;:::-;;:::i;21250:360::-;;;;;;;;;;-1:-1:-1;21250:360:0;;;;;:::i;:::-;;:::i;10741:214::-;;;;;;;;;;-1:-1:-1;10741:214:0;;;;;:::i;:::-;;:::i;9996:122::-;;;;;;;;;;-1:-1:-1;9996:122:0;;;;;:::i;:::-;;:::i;7328:27::-;;;;;;;;;;;;;;;;11478:111;;;;;;;;;;;;;:::i;10130:119::-;;;;;;;;;;-1:-1:-1;10130:119:0;;;;;:::i;:::-;;:::i;7459:28::-;;;;;;;;;;;;;;;;9409:105;;;;;;;;;;;;;:::i;20344:119::-;;;;;;;;;;-1:-1:-1;20344:119:0;;;;;:::i;:::-;;:::i;10261:468::-;;;;;;;;;;-1:-1:-1;10261:468:0;;;;;:::i;:::-;;:::i;7496:31::-;;;;;;;;;;-1:-1:-1;7496:31:0;;;;;;;;6251:44;;;;;;;;;;-1:-1:-1;6251:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;20606:386;;;;;;;;;;-1:-1:-1;20606:386:0;;;;;:::i;:::-;;:::i;9520:105::-;;;;;;;;;;-1:-1:-1;9520:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;9604:18:0;9586:7;9604:18;;;:9;:18;;;;;;;9520:105;5161:148;;;;;;;;;;;;;:::i;9108:71::-;;;;;;;;;;-1:-1:-1;9151:7:0;5016:6;-1:-1:-1;;;;;5016:6:0;9108:71;;;-1:-1:-1;;;;;6613:32:1;;;6595:51;;6583:2;6568:18;9108:71:0;6449:203:1;4951:79:0;;;;;;;;;;-1:-1:-1;4989:7:0;5016:6;-1:-1:-1;;;;;5016:6:0;4951:79;;8950:75;;;;;;;;;;-1:-1:-1;9015:7:0;;;;;;;;;;;;-1:-1:-1;;;9015:7:0;;;;8950:75;;7199:30;;;;;;;;;;;;;;;;21000:242;;;;;;;;;;-1:-1:-1;21000:242:0;;;;;:::i;:::-;;:::i;7268:19::-;;;;;;;;;;-1:-1:-1;7268:19:0;;;;-1:-1:-1;;;;;7268:19:0;;;12612:156;;;;;;;;;;-1:-1:-1;12612:156:0;;;;;:::i;:::-;;:::i;20117:219::-;;;;;;;;;;-1:-1:-1;20117:219:0;;;;;:::i;:::-;;:::i;9185:105::-;;;;;;;;;;;;;:::i;7296:25::-;;;;;;;;;;;;;;;;6682:97;;;;;;;;;;-1:-1:-1;6682:97:0;;;;-1:-1:-1;;;;;6682:97:0;;;6302:43;;;;;;;;;;-1:-1:-1;6302:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;19630:128;;;;;;;;;;-1:-1:-1;19630:128:0;;;;;:::i;:::-;;:::i;11601:235::-;;;;;;;;;;-1:-1:-1;11601:235:0;;;;;:::i;:::-;;:::i;9631:133::-;;;;;;;;;;-1:-1:-1;9631:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;9733:19:0;;;9715:7;9733:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;9631:133;6786:97;;;;;;;;;;-1:-1:-1;6786:97:0;;;;-1:-1:-1;;;;;6786:97:0;;;17023:243;;;;;;;;;;-1:-1:-1;17023:243:0;;;;;:::i;:::-;;:::i;5315:244::-;;;;;;;;;;-1:-1:-1;5315:244:0;;;;;:::i;:::-;;:::i;20471:127::-;;;;;;;;;;-1:-1:-1;20471:127:0;;;;;:::i;:::-;;:::i;7624:49::-;;;;;;;;;;;;;;;;6892:24;;;;;;;;;;-1:-1:-1;6892:24:0;;;;-1:-1:-1;;;;;6892:24:0;;;7362:25;;;;;;;;;;;;;;;;11987:617;3066:10;7855:24;;;;:10;:24;;;;;;;;;:49;;-1:-1:-1;4989:7:0;5016:6;-1:-1:-1;;;;;5016:6:0;7883:10;:21;7855:49;7847:89;;;;-1:-1:-1;;;7847:89:0;;;;;;;:::i;:::-;;;;;;;;;12087:8:::1;12083:67;;;12120:17;::::0;::::1;;12112:26;;;::::0;::::1;;12175:6;12170:427;12187:19:::0;;::::1;12170:427;;;12246:8;12242:277;;;12275:15;:17:::0;;;:15:::1;:17;::::0;::::1;:::i;:::-;;;;;;12316:56;12332:9;12343:8;;12352:1;12343:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;12356:12;12370:1;12316:56;;;;;;;;;:::i;:::-;;;;;;;;12242:277;;;12430:9;:22;12440:8;;12449:1;12440:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12430:22:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;12430:22:0;;:27;12426:71:::1;;12480:15;:17:::0;;;:15:::1;:17;::::0;::::1;:::i;:::-;;;;;;12426:71;12558:8;:27;;12584:1;12558:27;;;12569:12;12558:27;12533:9;:22;12543:8;;12552:1;12543:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12533:22:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;12533:22:0;:52;12208:3;::::1;::::0;::::1;:::i;:::-;;;;12170:427;;;;11987:617:::0;;;:::o;9772:216::-;9876:10;9847:4;9864:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;9864:32:0;;;;;;;;;;:41;;;9921:37;9847:4;;9864:32;;9921:37;;;;9899:6;15227:25:1;;15215:2;15200:18;;15081:177;9921:37:0;;;;;;;;-1:-1:-1;9976:4:0;9772:216;;;;;:::o;11351:115::-;3066:10;7855:24;;;;:10;:24;;;;;;;;;:49;;-1:-1:-1;4989:7:0;5016:6;-1:-1:-1;;;;;5016:6:0;7883:10;:21;7855:49;7847:89;;;;-1:-1:-1;;;7847:89:0;;;;;;;:::i;:::-;11413:13:::1;::::0;::::1;::::0;::::1;;;11412:14;11404:23;;;::::0;::::1;;11438:12;:20:::0;;-1:-1:-1;;11438:20:0::1;::::0;;11351:115::o;9296:107::-;9346:7;9384:15;5892:1;9384:2;:15;:::i;:::-;9364:16;;:36;;;;:::i;:::-;9357:43;;9296:107;:::o;12776:341::-;-1:-1:-1;;;;;12896:19:0;;12876:4;12896:19;;;:11;:19;;;;;;;;12916:10;12896:31;;;;;;;;-1:-1:-1;;12896:52:0;12893:157;;-1:-1:-1;;;;;12998:19:0;;;;;;:11;:19;;;;;;;;13018:10;12998:31;;;;;;;;:40;;13032:6;;12998:40;:::i;:::-;-1:-1:-1;;;;;12964:19:0;;;;;;:11;:19;;;;;;;;12984:10;12964:31;;;;;;;:74;12893:157;13069:40;13083:6;13091:9;13102:6;13069:13;:40::i;:::-;13062:47;;12776:341;;;;;;:::o;21618:138::-;21742:4;;-1:-1:-1;;;;;21742:4:0;;;21671:7;9604:18;;;:9;:18;;;;;;;21724:4;;;;;9604:18;;;;;21671:7;;21714:33;;;:::i;:::-;21698:12;;:50;;;;:::i;10967:372::-;3066:10;7855:24;;;;:10;:24;;;;;;;;;:49;;-1:-1:-1;4989:7:0;5016:6;-1:-1:-1;;;;;5016:6:0;7883:10;:21;7855:49;7847:89;;;;-1:-1:-1;;;7847:89:0;;;;;;;:::i;:::-;11084:12:::1;::::0;::::1;;11083:13;:33:::0;::::1;;;;11114:2;11100:11;:16;11083:33;11075:42;;;::::0;::::1;;11128:10;:24:::0;;;11163:12:::1;:19:::0;;-1:-1:-1;;11163:19:0::1;11178:4;11163:19;::::0;;11206:12:::1;11193:10;:25:::0;11247:29:::1;11265:11:::0;11247:15:::1;:29;:::i;:::-;11229:15;:47:::0;11315:15:::1;5892:1;11315:2;:15;:::i;:::-;11305:26;::::0;:6;:26:::1;:::i;:::-;11287:15;:44:::0;-1:-1:-1;;;10967:372:0:o;11848:127::-;3066:10;7855:24;;;;:10;:24;;;;;;;;;:49;;-1:-1:-1;4989:7:0;5016:6;-1:-1:-1;;;;;5016:6:0;7883:10;:21;7855:49;7847:89;;;;-1:-1:-1;;;7847:89:0;;;;;;;:::i;:::-;11906:18:::1;:25:::0;;-1:-1:-1;;11942:25:0;11906::::1;11942::::0;;;11848:127::o;19438:184::-;5076:6;;-1:-1:-1;;;;;5076:6:0;3066:10;5076:22;5068:67;;;;-1:-1:-1;;;5068:67:0;;;;;;;:::i;:::-;19533:4:::1;::::0;-1:-1:-1;;;;;19527:10:0;;::::1;19533:4:::0;::::1;19527:10;;19519:57;;;::::0;-1:-1:-1;;;19519:57:0;;14880:2:1;19519:57:0::1;::::0;::::1;14862:21:1::0;14919:2;14899:18;;;14892:30;14958:34;14938:18;;;14931:62;-1:-1:-1;;;15009:18:1;;;15002:32;15051:19;;19519:57:0::1;14678:398:1::0;19519:57:0::1;-1:-1:-1::0;;;;;19587:18:0;;;::::1;;::::0;;;:14:::1;:18;::::0;;;;:27;;-1:-1:-1;;19587:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19438:184::o;19766:339::-;5076:6;;-1:-1:-1;;;;;5076:6:0;3066:10;5076:22;5068:67;;;;-1:-1:-1;;;5068:67:0;;;;;;;:::i;:::-;19901:1:::1;19886:12;:16;:37;;;;;19922:1;19906:13;:17;19886:37;:52;;;;;19937:1;19927:7;:11;19886:52;:72;;;;;19953:5;19942:7;:16;;19886:72;19878:81;;;::::0;::::1;;20020:7;20004:12;19989;;:27;;;;:::i;:::-;19988:39;;;;:::i;:::-;19970:15;:57:::0;20058:12:::1;::::0;20090:7;;20058:28:::1;::::0;20073:13;;20058:28:::1;:::i;:::-;20057:40;;;;:::i;:::-;20038:16;:59:::0;-1:-1:-1;;;19766:339:0:o;21250:360::-;5076:6;;-1:-1:-1;;;;;5076:6:0;3066:10;5076:22;5068:67;;;;-1:-1:-1;;;5068:67:0;;;;;;;:::i;:::-;21413:1:::1;21398:12;:16;21390:25;;;::::0;::::1;;21426:11;:22:::0;;-1:-1:-1;;21459:32:0;21426:22;::::1;;-1:-1:-1::0;;21459:32:0;;21426:22:::1;21459:32:::0;::::1;;;;::::0;;21518:12:::1;::::0;:27:::1;::::0;21533:12;;21518:27:::1;:::i;:::-;21502:13;:43:::0;21586:15:::1;5892:1;21586:2;:15;:::i;:::-;21570:32;::::0;:12;:32:::1;:::i;:::-;21556:11;:46:::0;-1:-1:-1;;;;21250:360:0:o;10741:214::-;3066:10;7855:24;;;;:10;:24;;;;;;;;;:49;;-1:-1:-1;4989:7:0;5016:6;-1:-1:-1;;;;;5016:6:0;7883:10;:21;7855:49;7847:89;;;;-1:-1:-1;;;7847:89:0;;;;;;;:::i;:::-;10856:21:::1;-1:-1:-1::0;;;;;10888:21:0;::::1;:59;10943:3;10911:28;10923:16:::0;10856:21;10911:28:::1;:::i;:::-;10910:36;;;;:::i;:::-;10888:59;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;9996:122:::0;10051:4;10075:35;10083:7;-1:-1:-1;;10075:7:0;:35::i;11478:111::-;3066:10;7855:24;;;;:10;:24;;;;;;;;;:49;;-1:-1:-1;4989:7:0;5016:6;-1:-1:-1;;;;;5016:6:0;7883:10;:21;7855:49;7847:89;;;;-1:-1:-1;;;7847:89:0;;;;;;;:::i;:::-;11531:13:::1;:20:::0;;-1:-1:-1;;11562:19:0;;;;;11478:111::o;10130:119::-;5076:6;;-1:-1:-1;;;;;5076:6:0;3066:10;5076:22;5068:67;;;;-1:-1:-1;;;5068:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10213:17:0;;;::::1;;::::0;;;:10:::1;:17;::::0;;;;:28;;-1:-1:-1;;10213:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10130:119::o;9409:105::-;9459:7;9495:15;5892:1;9495:2;:15;:::i;:::-;9477:14;;:34;;;;:::i;20344:119::-;5076:6;;-1:-1:-1;;;;;5076:6:0;3066:10;5076:22;5068:67;;;;-1:-1:-1;;;5068:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20427:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;20427:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20344:119::o;10261:468::-;5076:6;;-1:-1:-1;;;;;5076:6:0;3066:10;5076:22;5068:67;;;;-1:-1:-1;;;5068:67:0;;;;;;;:::i;:::-;10374:20;;;;;:58:::1;;-1:-1:-1::0;10398:34:0;;::::1;10374:58;10366:67;;;::::0;::::1;;10459:10;10444:12;10482:240;10499:20:::0;;::::1;10482:240;;;10545:14;:28;10560:9;;10570:1;10560:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10545:28:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;10545:28:0;;::::1;;10544:29;:64:::0;::::1;;;;10578:16;:30;10595:9;;10605:1;10595:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10578:30:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;10578:30:0;;::::1;;10577:31;10544:64;10541:170;;;10629:66;10644:4;10650:9;;10660:1;10650:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;10678:15;5892:1;10678:2;:15;:::i;:::-;10664:7;;10672:1;10664:10;;;;;;;:::i;:::-;;;;;;;:30;;;;:::i;:::-;10629:14;:66::i;:::-;;10541:170;10521:3:::0;::::1;::::0;::::1;:::i;:::-;;;;10482:240;;;;10355:374;10261:468:::0;;;;:::o;20606:386::-;5076:6;;-1:-1:-1;;;;;5076:6:0;3066:10;5076:22;5068:67;;;;-1:-1:-1;;;5068:67:0;;;;;;;:::i;:::-;20743:12:::1;:28:::0;;;20782:12:::1;:28:::0;;;20832:29:::1;20758:13:::0;20797;20832:29:::1;:::i;:::-;20821:8;:40:::0;20872:8:::1;:20:::0;;;20903:14:::1;:32:::0;;;20965:18:::1;20982:1;20920:15:::0;20965:18:::1;:::i;:::-;20954:8;;:29;20946:38;;;::::0;::::1;5161:148:::0;5076:6;;-1:-1:-1;;;;;5076:6:0;3066:10;5076:22;5068:67;;;;-1:-1:-1;;;5068:67:0;;;;;;;:::i;:::-;5268:1:::1;5252:6:::0;;5231:40:::1;::::0;-1:-1:-1;;;;;5252:6:0;;::::1;::::0;5231:40:::1;::::0;5268:1;;5231:40:::1;5299:1;5282:19:::0;;-1:-1:-1;;;;;;5282:19:0::1;::::0;;5161:148::o;21000:242::-;5076:6;;-1:-1:-1;;;;;5076:6:0;3066:10;5076:22;5068:67;;;;-1:-1:-1;;;5068:67:0;;;;;;;:::i;:::-;21117:20:::1;:53:::0;;-1:-1:-1;;;;;21117:53:0;;::::1;-1:-1:-1::0;;;;;;21117:53:0;;::::1;;::::0;;;21181:20:::1;:53:::0;;;;;::::1;::::0;::::1;;::::0;;21000:242::o;12612:156::-;12692:4;12716:44;12730:10;12742:9;12753:6;12716:13;:44::i;20117:219::-;5076:6;;-1:-1:-1;;;;;5076:6:0;3066:10;5076:22;5068:67;;;;-1:-1:-1;;;5068:67:0;;;;;;;:::i;:::-;20227:1:::1;20215:9;:13;:28;;;;;20242:1;20232:7;:11;20215:28;:48;;;;;20258:5;20247:7;:16;;20215:48;20207:57;;;::::0;::::1;;20321:7;20308:9;20293:12;;:24;;;;:::i;:::-;20292:36;;;;:::i;:::-;20275:14;:53:::0;-1:-1:-1;;20117:219:0:o;9185:105::-;9234:7;9271:15;5892:1;9271:2;:15;:::i;:::-;9252;;:35;;;;:::i;19630:128::-;5076:6;;-1:-1:-1;;;;;5076:6:0;3066:10;5076:22;5068:67;;;;-1:-1:-1;;;5068:67:0;;;;;;;:::i;:::-;19712:10:::1;19704:4;:18;;19696:27;;;::::0;::::1;;19734:9;:16:::0;19630:128::o;11601:235::-;3066:10;7855:24;;;;:10;:24;;;;;;;;;:49;;-1:-1:-1;4989:7:0;5016:6;-1:-1:-1;;;;;5016:6:0;7883:10;:21;7855:49;7847:89;;;;-1:-1:-1;;;7847:89:0;;;;;;;:::i;:::-;11695:18:::1;::::0;::::1;::::0;::::1;;;11694:19;11686:28;;;::::0;::::1;;11725:17;:28:::0;;-1:-1:-1;;11725:28:0::1;::::0;::::1;;;::::0;;11783:6:::1;11772:17:::0;::::1;11764:26;;;::::0;::::1;;11820:8;11801:15;;:27;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;;;11601:235:0:o;17023:243::-;17079:7;17129:12;17115:10;;17102;;:23;;;;:::i;:::-;:39;17099:73;;17168:1;17151:14;;:18;;;;:::i;17099:73::-;17186:7;17182:39;;;17213:8;;17202;;:19;;;;:::i;17182:39::-;17250:8;;17239;;:19;;;;:::i;5315:244::-;5076:6;;-1:-1:-1;;;;;5076:6:0;3066:10;5076:22;5068:67;;;;-1:-1:-1;;;5068:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5404:22:0;::::1;5396:73;;;::::0;-1:-1:-1;;;5396:73:0;;11585:2:1;5396:73:0::1;::::0;::::1;11567:21:1::0;11624:2;11604:18;;;11597:30;11663:34;11643:18;;;11636:62;-1:-1:-1;;;11714:18:1;;;11707:36;11760:19;;5396:73:0::1;11383:402:1::0;5396:73:0::1;5506:6;::::0;;5485:38:::1;::::0;-1:-1:-1;;;;;5485:38:0;;::::1;::::0;5506:6;::::1;::::0;5485:38:::1;::::0;::::1;5534:6;:17:::0;;-1:-1:-1;;;;;;5534:17:0::1;-1:-1:-1::0;;;;;5534:17:0;;;::::1;::::0;;;::::1;::::0;;5315:244::o;20471:127::-;5076:6;;-1:-1:-1;;;;;5076:6:0;3066:10;5076:22;5068:67;;;;-1:-1:-1;;;5068:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20558:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;20558:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20471:127::o;13125:1734::-;13217:4;-1:-1:-1;;;;;13242:20:0;;13234:57;;;;-1:-1:-1;;;13234:57:0;;11232:2:1;13234:57:0;;;11214:21:1;11271:2;11251:18;;;11244:30;11310:26;11290:18;;;11283:54;11354:18;;13234:57:0;11030:348:1;13234:57:0;-1:-1:-1;;;;;13310:23:0;;13302:58;;;;-1:-1:-1;;;13302:58:0;;11992:2:1;13302:58:0;;;11974:21:1;12031:2;12011:18;;;12004:30;-1:-1:-1;;;12050:18:1;;;12043:52;12112:18;;13302:58:0;11790:346:1;13302:58:0;13388:1;13379:6;:10;13371:44;;;;-1:-1:-1;;;13371:44:0;;10130:2:1;13371:44:0;;;10112:21:1;10169:2;10149:18;;;10142:30;-1:-1:-1;;;10188:18:1;;;10181:51;10249:18;;13371:44:0;9928:345:1;13371:44:0;-1:-1:-1;;;;;13434:17:0;;;;;;:9;:17;;;;;;:27;-1:-1:-1;13434:27:0;13426:60;;;;-1:-1:-1;;;13426:60:0;;12343:2:1;13426:60:0;;;12325:21:1;12382:2;12362:18;;;12355:30;-1:-1:-1;;;12401:18:1;;;12394:50;12461:18;;13426:60:0;12141:344:1;13426:60:0;14938:10;;:15;;;13500:40;;-1:-1:-1;;;;;;13515:25:0;;;;;;:14;:25;;;;;;;;13500:40;13497:120;;;-1:-1:-1;;;;;13551:24:0;;;;;;:16;:24;;;;;;;;13543:61;;;;-1:-1:-1;;;13543:61:0;;13406:2:1;13543:61:0;;;13388:21:1;13445:2;13425:18;;;13418:30;13484:26;13464:18;;;13457:54;13528:18;;13543:61:0;13204:348:1;13543:61:0;13606:8;15020:12;15007:10;:25;15058:15;15043:12;:30;15084:11;:18;;-1:-1:-1;;15084:18:0;15098:4;15084:18;;;14969:141;13606:8;13631:12;;;;13627:111;;-1:-1:-1;;;;;13654:24:0;;;;;;:16;:24;;;;;;;;;:55;;-1:-1:-1;;;;;;13682:27:0;;;;;;:16;:27;;;;;;;;13654:55;13646:89;;;;-1:-1:-1;;;13646:89:0;;14530:2:1;13646:89:0;;;14512:21:1;14569:2;14549:18;;;14542:30;-1:-1:-1;;;14588:18:1;;;14581:51;14649:18;;13646:89:0;14328:345:1;13646:89:0;13750:39;13763:6;13771:9;13782:6;13750:12;:39::i;:::-;-1:-1:-1;;;;;13815:25:0;;;;;;:14;:25;;;;;;;;13814:26;:47;;;;-1:-1:-1;13857:4:0;;-1:-1:-1;;;;;13844:17:0;;;13857:4;;13844:17;;13814:47;13810:182;;;-1:-1:-1;;;;;13883:26:0;;;;;;:15;:26;;;;;;;;13878:103;;13930:35;13947:9;13958:6;13930:16;:35::i;:::-;14015:17;;;;:54;;;;;14054:15;14036;;:33;14015:54;14012:351;;;-1:-1:-1;;;;;14089:22:0;;;;;;:14;:22;;;;;;;;:48;;;;-1:-1:-1;14115:9:0;-1:-1:-1;;;;;14115:22:0;;;;14089:48;:77;;;;-1:-1:-1;;;;;;14141:20:0;;;;;;:9;:20;;;;;;:25;14089:77;14086:266;;;-1:-1:-1;;;;;14187:20:0;;;;;;:9;:20;;;;;14210:12;14187:35;;14241:15;:17;;;;;;:::i;:::-;;;;;;14282:54;14298:9;14309;14320:12;14334:1;14282:54;;;;;;;;;:::i;:::-;;;;;;;;14086:266;14386:6;;;;14383:63;;;14402:41;14417:6;14425:9;14436:6;14402:14;:41::i;:::-;14395:48;;;;14383:63;-1:-1:-1;;;;;14478:17:0;;;;;;:9;:17;;;;;;:26;;14498:6;;14478:26;:::i;:::-;-1:-1:-1;;;;;14458:17:0;;;;;;:9;:17;;;;;;;;:46;;;;16988:11;:19;;;;;;;;16987:20;14542:59;;14595:6;14542:59;;;14566:26;14574:9;14585:6;14566:7;:26::i;:::-;14517:84;;14625:25;14640:9;14625:14;:25::i;:::-;14622:66;;;14657:10;;14653:32;;14669:16;14678:6;14669:8;:16::i;:::-;-1:-1:-1;;;;;14731:20:0;;;;;;:9;:20;;;;;;:37;;14754:14;;14731:37;:::i;:::-;-1:-1:-1;;;;;14708:20:0;;;;;;;:9;:20;;;;;;;:60;;;;14786:43;;;;;;;;;;14814:14;15227:25:1;;15215:2;15200:18;;15081:177;14786:43:0;;;;;;;;-1:-1:-1;14847:4:0;;13125:1734;-1:-1:-1;;;;13125:1734:0:o;15118:300::-;-1:-1:-1;;;;;15248:17:0;;15211:4;15248:17;;;:9;:17;;;;;;:26;;15268:6;;15248:26;:::i;:::-;-1:-1:-1;;;;;15228:17:0;;;;;;;:9;:17;;;;;;:46;;;;15308:20;;;;;;;:29;;15331:6;;15308:29;:::i;:::-;-1:-1:-1;;;;;15285:20:0;;;;;;;:9;:20;;;;;;;:52;;;;15353:35;;;;;;;;;;15381:6;15227:25:1;;15215:2;15200:18;;15081:177;15353:35:0;;;;;;;;-1:-1:-1;15406:4:0;15118:300;;;;;:::o;15673:1220::-;-1:-1:-1;;;;;15774:23:0;;;;;;:15;:23;;;;;;;;;:98;;-1:-1:-1;;;;;;15812:22:0;;;;;;:14;:22;;;;;;;;:59;;15855:16;;15812:59;;;15837:15;;15812:59;15801:6;:71;;15774:98;15766:128;;;;-1:-1:-1;;;15766:128:0;;10886:2:1;15766:128:0;;;10868:21:1;10925:2;10905:18;;;10898:30;-1:-1:-1;;;10944:18:1;;;10937:47;11001:18;;15766:128:0;10684:341:1;15766:128:0;-1:-1:-1;;;;;15913:23:0;;;;;;:15;:23;;;;;;;;;:73;;-1:-1:-1;15961:9:0;;-1:-1:-1;;;;;15940:18:0;;;;;;:7;:18;;;;;;15974:12;;15940:30;;;:::i;:::-;:46;;15913:73;15905:115;;;;-1:-1:-1;;;15905:115:0;;13048:2:1;15905:115:0;;;13030:21:1;13087:2;13067:18;;;13060:30;13126:31;13106:18;;;13099:59;13175:18;;15905:115:0;12846:353:1;15905:115:0;-1:-1:-1;;;;;16045:17:0;;;;;;:9;:17;;;;;;:22;16041:261;;16120:15;5892:1;16120:2;:15;:::i;:::-;16101;;:35;;;;:::i;:::-;16091:6;:45;;:70;;;;-1:-1:-1;;;;;;16140:16:0;;;;;;:8;:16;;;;;;:21;16091:70;:107;;;;;16183:15;16165;;:33;16091:107;16083:161;;;;-1:-1:-1;;;16083:161:0;;13759:2:1;16083:161:0;;;13741:21:1;13798:2;13778:18;;;13771:30;13837:34;13817:18;;;13810:62;-1:-1:-1;;;13888:18:1;;;13881:39;13937:19;;16083:161:0;13557:405:1;16083:161:0;-1:-1:-1;;;;;16259:16:0;;;;;;:8;:16;;;;;16278:12;16259:31;;16041:261;-1:-1:-1;;;;;16326:25:0;;;;;;:14;:25;;;;;;;;16322:564;;;-1:-1:-1;;;;;;;16368:16:0;;;;;:8;:16;;;;;16387:12;16368:31;;15673:1220::o;16322:564::-;-1:-1:-1;;;;;16988:19:0;;16963:4;16988:19;;;:11;:19;;;;;;;;16417:469;;16463:17;;;;:54;;;;;16502:15;16484;;:33;16463:54;:92;;;;-1:-1:-1;16529:9:0;16521:18;;;;:7;:18;;;;;;16543:12;16521:34;16463:92;:121;;;;-1:-1:-1;;;;;;16559:20:0;;;;;;:9;:20;;;;;;:25;16463:121;16459:275;;;-1:-1:-1;;;;;16605:20:0;;;;;;:9;:20;;;;;;;16628:12;16605:35;;;;16664:54;;;;;;16680:9;;16615;;16716:1;;16664:54;:::i;:::-;;;;;;;;16459:275;-1:-1:-1;;;;;16748:18:0;;;;;;:7;:18;;;;;16769:12;16748:33;;16800:9;:22;16796:78;;16849:9;16841:18;;;;:7;:18;;;;;16862:12;16841:33;;16796:78;15673:1220;;;:::o;15430:235::-;15538:14;;-1:-1:-1;;;;;15571:20:0;;15516:19;15571:20;;;:9;:20;;;;;;15538:14;;15571:29;;15594:6;;15571:29;:::i;:::-;:44;;15563:94;;;;-1:-1:-1;;;15563:94:0;;10480:2:1;15563:94:0;;;10462:21:1;10519:2;10499:18;;;10492:30;10558:34;10538:18;;;10531:62;-1:-1:-1;;;10609:18:1;;;10602:35;10654:19;;15563:94:0;10278:401:1;17274:317:0;-1:-1:-1;;;;;17379:25:0;;17344:7;17379:25;;;:14;:25;;;;;;17469:14;;17379:25;;;;;17344:7;;17445:20;17379:25;17445:11;:20::i;:::-;17436:29;;:6;:29;:::i;:::-;17435:48;;;;:::i;:::-;17522:4;17504:24;;;;:9;:24;;;;;:37;;17415:68;;-1:-1:-1;17415:68:0;;17504:24;;;:37;;17415:68;;17504:37;:::i;:::-;;;;-1:-1:-1;17565:18:0;;-1:-1:-1;17574:9:0;17565:6;:18;:::i;:::-;17558:25;17274:317;-1:-1:-1;;;;;17274:317:0:o;17599:259::-;17705:10;17665:4;17690:26;;;:14;:26;;;;;;;;17689:27;:47;;;;-1:-1:-1;17730:6:0;;;;17729:7;17689:47;:71;;;;-1:-1:-1;17749:11:0;;;;17689:71;:109;;;;-1:-1:-1;;;;;;17773:25:0;;;;;;:14;:25;;;;;;;;17689:109;:161;;;;-1:-1:-1;17839:11:0;;17829:4;17811:24;;;;:9;:24;;;;;;:39;;17682:168;17599:259;-1:-1:-1;;17599:259:0:o;17866:1560::-;7720:6;:13;;-1:-1:-1;;7720:13:0;7729:4;7720:13;;;17961::::1;::::0;7720:6;;17952:22;::::1;:47;;17986:13;;17952:47;;;17977:6;17952:47;18032:4;18014:24;::::0;;;:9:::1;:24;::::0;;;;;17929:70;;-1:-1:-1;18014:39:0;-1:-1:-1;18010:84:0::1;;;-1:-1:-1::0;18088:4:0::1;18070:24;::::0;;;:9:::1;:24;::::0;;;;;18010:84:::1;18115:23;18177:8;;18172:1;18157:12;;18142;:27;;;;:::i;:::-;:31;;;;:::i;:::-;18141:44;;;;:::i;:::-;18115:70:::0;-1:-1:-1;18196:31:0::1;18115:70:::0;18196:31;::::1;:::i;:::-;18264:16;::::0;;18278:1:::1;18264:16:::0;;;;;::::1;::::0;;18196:31;;-1:-1:-1;18240:21:0::1;::::0;18264:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;18264:16:0::1;18240:40;;18309:4;18291;18296:1;18291:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18291:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;18335:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;18335:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;18291:7;;18335:13;;;;;:6;:13;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18325:4;18330:1;18325:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18325:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;18427:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;18427:188:0;;18393:21:::1;::::0;18427:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;18499:12;;18369:21:::1;::::0;18542:4;;18569::::1;::::0;18589:15:::1;::::0;18427:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18628:17;18672:13;18648:21;:37;;;;:::i;:::-;18628:57;;18696:19;18745:1;18730:12;;:16;;;;:::i;:::-;18718:8;;:29;;;;:::i;:::-;18696:51;;18760:26;18822:11;18817:1;18802:12;;18790:9;:24;;;;:::i;:::-;:28;;;;:::i;:::-;18789:44;;;;:::i;:::-;18760:73:::0;-1:-1:-1;18844:26:0::1;18873:30;18760:73:::0;18873:9;:30:::1;:::i;:::-;18844:59:::0;-1:-1:-1;18928:22:0;;18924:90:::1;;18965:20;::::0;:49:::1;::::0;-1:-1:-1;;;;;18965:20:0;;::::1;::::0;:49;::::1;;;::::0;18995:18;;18965:20:::1;:49:::0;:20;:49;18995:18;18965:20;:49;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;18924:90;19038:19:::0;;19035:293:::1;;19073:6;::::0;19247:20:::1;::::0;19073:243:::1;::::0;-1:-1:-1;;;19073:243:0;;19149:4:::1;19073:243;::::0;::::1;8637:34:1::0;8687:18;;;8680:34;;;19073:6:0::1;8730:18:1::0;;;8723:34;;;8773:18;;;8766:34;-1:-1:-1;;;;;19247:20:0;;::::1;8816:19:1::0;;;8809:44;19286:15:0::1;8869:19:1::0;;;8862:35;19073:6:0;::::1;::::0;:22:::1;::::0;19103:18;;8571:19:1;;19073:243:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19035:293;19345:73;::::0;;16450:25:1;;;16506:2;16491:18;;16484:34;;;16534:18;;;16527:34;;;19345:73:0::1;::::0;16438:2:1;16423:18;19345:73:0::1;;;;;;;-1:-1:-1::0;;7738:6:0;:14;;-1:-1:-1;;7738:14:0;;;-1:-1:-1;;;;;;;17866:1560:0:o;14:367:1:-;77:8;87:6;141:3;134:4;126:6;122:17;118:27;108:55;;159:1;156;149:12;108:55;-1:-1:-1;182:20:1;;225:18;214:30;;211:50;;;257:1;254;247:12;211:50;294:4;286:6;282:17;270:29;;354:3;347:4;337:6;334:1;330:14;322:6;318:27;314:38;311:47;308:67;;;371:1;368;361:12;308:67;14:367;;;;;:::o;386:160::-;451:20;;507:13;;500:21;490:32;;480:60;;536:1;533;526:12;480:60;386:160;;;:::o;551:247::-;610:6;663:2;651:9;642:7;638:23;634:32;631:52;;;679:1;676;669:12;631:52;718:9;705:23;737:31;762:5;737:31;:::i;803:251::-;873:6;926:2;914:9;905:7;901:23;897:32;894:52;;;942:1;939;932:12;894:52;974:9;968:16;993:31;1018:5;993:31;:::i;1059:388::-;1127:6;1135;1188:2;1176:9;1167:7;1163:23;1159:32;1156:52;;;1204:1;1201;1194:12;1156:52;1243:9;1230:23;1262:31;1287:5;1262:31;:::i;:::-;1312:5;-1:-1:-1;1369:2:1;1354:18;;1341:32;1382:33;1341:32;1382:33;:::i;:::-;1434:7;1424:17;;;1059:388;;;;;:::o;1452:456::-;1529:6;1537;1545;1598:2;1586:9;1577:7;1573:23;1569:32;1566:52;;;1614:1;1611;1604:12;1566:52;1653:9;1640:23;1672:31;1697:5;1672:31;:::i;:::-;1722:5;-1:-1:-1;1779:2:1;1764:18;;1751:32;1792:33;1751:32;1792:33;:::i;:::-;1452:456;;1844:7;;-1:-1:-1;;;1898:2:1;1883:18;;;;1870:32;;1452:456::o;1913:315::-;1978:6;1986;2039:2;2027:9;2018:7;2014:23;2010:32;2007:52;;;2055:1;2052;2045:12;2007:52;2094:9;2081:23;2113:31;2138:5;2113:31;:::i;:::-;2163:5;-1:-1:-1;2187:35:1;2218:2;2203:18;;2187:35;:::i;:::-;2177:45;;1913:315;;;;;:::o;2233:::-;2301:6;2309;2362:2;2350:9;2341:7;2337:23;2333:32;2330:52;;;2378:1;2375;2368:12;2330:52;2417:9;2404:23;2436:31;2461:5;2436:31;:::i;:::-;2486:5;2538:2;2523:18;;;;2510:32;;-1:-1:-1;;;2233:315:1:o;2553:773::-;2675:6;2683;2691;2699;2752:2;2740:9;2731:7;2727:23;2723:32;2720:52;;;2768:1;2765;2758:12;2720:52;2808:9;2795:23;2837:18;2878:2;2870:6;2867:14;2864:34;;;2894:1;2891;2884:12;2864:34;2933:70;2995:7;2986:6;2975:9;2971:22;2933:70;:::i;:::-;3022:8;;-1:-1:-1;2907:96:1;-1:-1:-1;3110:2:1;3095:18;;3082:32;;-1:-1:-1;3126:16:1;;;3123:36;;;3155:1;3152;3145:12;3123:36;;3194:72;3258:7;3247:8;3236:9;3232:24;3194:72;:::i;:::-;2553:773;;;;-1:-1:-1;3285:8:1;-1:-1:-1;;;;2553:773:1:o;3331:505::-;3423:6;3431;3439;3492:2;3480:9;3471:7;3467:23;3463:32;3460:52;;;3508:1;3505;3498:12;3460:52;3548:9;3535:23;3581:18;3573:6;3570:30;3567:50;;;3613:1;3610;3603:12;3567:50;3652:70;3714:7;3705:6;3694:9;3690:22;3652:70;:::i;:::-;3741:8;;-1:-1:-1;3626:96:1;-1:-1:-1;3795:35:1;;-1:-1:-1;3826:2:1;3811:18;;3795:35;:::i;:::-;3785:45;;3331:505;;;;;:::o;3841:180::-;3897:6;3950:2;3938:9;3929:7;3925:23;3921:32;3918:52;;;3966:1;3963;3956:12;3918:52;3989:26;4005:9;3989:26;:::i;4026:385::-;4106:6;4114;4122;4130;4183:3;4171:9;4162:7;4158:23;4154:33;4151:53;;;4200:1;4197;4190:12;4151:53;4223:26;4239:9;4223:26;:::i;:::-;4213:36;;4268:35;4299:2;4288:9;4284:18;4268:35;:::i;:::-;4026:385;;4258:45;;-1:-1:-1;;;;4350:2:1;4335:18;;4322:32;;4401:2;4386:18;4373:32;;4026:385::o;4416:248::-;4481:6;4489;4542:2;4530:9;4521:7;4517:23;4513:32;4510:52;;;4558:1;4555;4548:12;4510:52;4581:26;4597:9;4581:26;:::i;4669:180::-;4728:6;4781:2;4769:9;4760:7;4756:23;4752:32;4749:52;;;4797:1;4794;4787:12;4749:52;-1:-1:-1;4820:23:1;;4669:180;-1:-1:-1;4669:180:1:o;4854:315::-;4922:6;4930;4983:2;4971:9;4962:7;4958:23;4954:32;4951:52;;;4999:1;4996;4989:12;4951:52;5035:9;5022:23;5012:33;;5095:2;5084:9;5080:18;5067:32;5108:31;5133:5;5108:31;:::i;5174:248::-;5242:6;5250;5303:2;5291:9;5282:7;5278:23;5274:32;5271:52;;;5319:1;5316;5309:12;5271:52;-1:-1:-1;;5342:23:1;;;5412:2;5397:18;;;5384:32;;-1:-1:-1;5174:248:1:o;5427:316::-;5504:6;5512;5520;5573:2;5561:9;5552:7;5548:23;5544:32;5541:52;;;5589:1;5586;5579:12;5541:52;-1:-1:-1;;5612:23:1;;;5682:2;5667:18;;5654:32;;-1:-1:-1;5733:2:1;5718:18;;;5705:32;;5427:316;-1:-1:-1;5427:316:1:o;5748:306::-;5836:6;5844;5852;5905:2;5893:9;5884:7;5880:23;5876:32;5873:52;;;5921:1;5918;5911:12;5873:52;5950:9;5944:16;5934:26;;6000:2;5989:9;5985:18;5979:25;5969:35;;6044:2;6033:9;6029:18;6023:25;6013:35;;5748:306;;;;;:::o;6059:385::-;6145:6;6153;6161;6169;6222:3;6210:9;6201:7;6197:23;6193:33;6190:53;;;6239:1;6236;6229:12;6190:53;-1:-1:-1;;6262:23:1;;;6332:2;6317:18;;6304:32;;-1:-1:-1;6383:2:1;6368:18;;6355:32;;6434:2;6419:18;6406:32;;-1:-1:-1;6059:385:1;-1:-1:-1;6059:385:1:o;6881:464::-;-1:-1:-1;;;;;7174:15:1;;;7156:34;;7226:15;;;;7221:2;7206:18;;7199:43;7273:2;7258:18;;7251:34;7333:4;7321:17;;;7316:2;7301:18;;7294:45;7105:3;7090:19;;6881:464::o;9326:597::-;9438:4;9467:2;9496;9485:9;9478:21;9528:6;9522:13;9571:6;9566:2;9555:9;9551:18;9544:34;9596:1;9606:140;9620:6;9617:1;9614:13;9606:140;;;9715:14;;;9711:23;;9705:30;9681:17;;;9700:2;9677:26;9670:66;9635:10;;9606:140;;;9764:6;9761:1;9758:13;9755:91;;;9834:1;9829:2;9820:6;9809:9;9805:22;9801:31;9794:42;9755:91;-1:-1:-1;9907:2:1;9886:15;-1:-1:-1;;9882:29:1;9867:45;;;;9914:2;9863:54;;9326:597;-1:-1:-1;;;9326:597:1:o;12490:351::-;12692:2;12674:21;;;12731:2;12711:18;;;12704:30;12770:29;12765:2;12750:18;;12743:57;12832:2;12817:18;;12490:351::o;13967:356::-;14169:2;14151:21;;;14188:18;;;14181:30;14247:34;14242:2;14227:18;;14220:62;14314:2;14299:18;;13967:356::o;15263:980::-;15525:4;15573:3;15562:9;15558:19;15604:6;15593:9;15586:25;15630:2;15668:6;15663:2;15652:9;15648:18;15641:34;15711:3;15706:2;15695:9;15691:18;15684:31;15735:6;15770;15764:13;15801:6;15793;15786:22;15839:3;15828:9;15824:19;15817:26;;15878:2;15870:6;15866:15;15852:29;;15899:1;15909:195;15923:6;15920:1;15917:13;15909:195;;;15988:13;;-1:-1:-1;;;;;15984:39:1;15972:52;;16079:15;;;;16044:12;;;;16020:1;15938:9;15909:195;;;-1:-1:-1;;;;;;;16160:32:1;;;;16155:2;16140:18;;16133:60;-1:-1:-1;;;16224:3:1;16209:19;16202:35;16121:3;15263:980;-1:-1:-1;;;15263:980:1:o;16761:128::-;16801:3;16832:1;16828:6;16825:1;16822:13;16819:39;;;16838:18;;:::i;:::-;-1:-1:-1;16874:9:1;;16761:128::o;16894:217::-;16934:1;16960;16950:132;;17004:10;16999:3;16995:20;16992:1;16985:31;17039:4;17036:1;17029:15;17067:4;17064:1;17057:15;16950:132;-1:-1:-1;17096:9:1;;16894:217::o;17116:422::-;17205:1;17248:5;17205:1;17262:270;17283:7;17273:8;17270:21;17262:270;;;17342:4;17338:1;17334:6;17330:17;17324:4;17321:27;17318:53;;;17351:18;;:::i;:::-;17401:7;17391:8;17387:22;17384:55;;;17421:16;;;;17384:55;17500:22;;;;17460:15;;;;17262:270;;;17266:3;17116:422;;;;;:::o;17543:140::-;17601:5;17630:47;17671:4;17661:8;17657:19;17651:4;17737:5;17767:8;17757:80;;-1:-1:-1;17808:1:1;17822:5;;17757:80;17856:4;17846:76;;-1:-1:-1;17893:1:1;17907:5;;17846:76;17938:4;17956:1;17951:59;;;;18024:1;18019:130;;;;17931:218;;17951:59;17981:1;17972:10;;17995:5;;;18019:130;18056:3;18046:8;18043:17;18040:43;;;18063:18;;:::i;:::-;-1:-1:-1;;18119:1:1;18105:16;;18134:5;;17931:218;;18233:2;18223:8;18220:16;18214:3;18208:4;18205:13;18201:36;18195:2;18185:8;18182:16;18177:2;18171:4;18168:12;18164:35;18161:77;18158:159;;;-1:-1:-1;18270:19:1;;;18302:5;;18158:159;18349:34;18374:8;18368:4;18349:34;:::i;:::-;18419:6;18415:1;18411:6;18407:19;18398:7;18395:32;18392:58;;;18430:18;;:::i;:::-;18468:20;;17688:806;-1:-1:-1;;;17688:806:1:o;18499:168::-;18539:7;18605:1;18601;18597:6;18593:14;18590:1;18587:21;18582:1;18575:9;18568:17;18564:45;18561:71;;;18612:18;;:::i;:::-;-1:-1:-1;18652:9:1;;18499:168::o;18672:125::-;18712:4;18740:1;18737;18734:8;18731:34;;;18745:18;;:::i;:::-;-1:-1:-1;18782:9:1;;18672:125::o;18802:136::-;18841:3;18869:5;18859:39;;18878:18;;:::i;:::-;-1:-1:-1;;;18914:18:1;;18802:136::o;18943:135::-;18982:3;-1:-1:-1;;19003:17:1;;19000:43;;;19023:18;;:::i;:::-;-1:-1:-1;19070:1:1;19059:13;;18943:135::o;19083:127::-;19144:10;19139:3;19135:20;19132:1;19125:31;19175:4;19172:1;19165:15;19199:4;19196:1;19189:15;19215:127;19276:10;19271:3;19267:20;19264:1;19257:31;19307:4;19304:1;19297:15;19331:4;19328:1;19321:15;19479:131;-1:-1:-1;;;;;19554:31:1;;19544:42;;19534:70;;19600:1;19597;19590:12;19534:70;19479:131;:::o
Swarm Source
ipfs://019da438b2a47da366d5996844d127c68f4011fb8f743521fbeb005a019d65e7
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.