ERC-20
Overview
Max Total Supply
100,000,000 IAI
Holders
37
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
304,368.942214956 IAIValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
InterstellarAI
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-12-09 */ /* Website: https://interstellarai.app/ Telegram: https://t.me/InterStellarVPN Twitter: https://x.com/InterStellarVPN */ pragma solidity ^0.8.17; // SPDX-License-Identifier: MIT library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } interface ERC20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function getOwner() external view returns (address); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address _owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } function _msgData() internal view virtual returns (bytes memory) { this; return msg.data; } } contract Ownable is Context { address public _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; authorizations[_owner] = true; emit OwnershipTransferred(address(0), msgSender); } mapping (address => bool) internal authorizations; 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; } } interface IDEXFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IDEXRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } interface InterfaceLP { function sync() external; } contract InterstellarAI is Ownable, ERC20 { using SafeMath for uint256; address WETH; address DEAD = 0x000000000000000000000000000000000000dEaD; address ZERO = 0x0000000000000000000000000000000000000000; string constant _name = "InterstellarAI"; string constant _symbol = "IAI"; uint8 constant _decimals = 9; uint256 _totalSupply = 100000000 * (10 ** _decimals); uint256 public _maxTxAmount = 2000000 * (10 ** _decimals); uint256 public _maxWalletToken = 2000000 * (10 ** _decimals); mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) _allowances; mapping (address => bool) isFeeExempt; mapping (address => bool) isTxLimitExempt; mapping (address => bool) private _isBot; uint256 private liquidityFee = 0; uint256 private marketingFee = 20; uint256 private devFee = 0; uint256 public totalFee = marketingFee + liquidityFee + devFee; uint256 private feeDenominator = 100; uint256 sellMultiplier = 100; uint256 buyMultiplier = 100; uint256 transferMultiplier = 100; address private autoLiquidityReceiver; address private marketingFeeReceiver; address private devFeeReceiver; uint256 targetLiquidity = 20; uint256 targetLiquidityDenominator = 100; IDEXRouter public router; InterfaceLP private pairContract; address public pair; bool public TradingOpen = false; bool public swapEnabled = true; uint256 public swapThreshold = _totalSupply * 200 / 10000; bool inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } constructor () { router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); WETH = router.WETH(); pair = IDEXFactory(router.factory()).createPair(WETH, address(this)); pairContract = InterfaceLP(pair); _allowances[address(this)][address(router)] = type(uint256).max; isFeeExempt[msg.sender] = true; isFeeExempt[marketingFeeReceiver] = true; isTxLimitExempt[msg.sender] = true; isTxLimitExempt[pair] = true; isTxLimitExempt[marketingFeeReceiver] = true; isTxLimitExempt[address(this)] = true; autoLiquidityReceiver = 0x7f2bC6231C2b2030E62Eb4bDb9Fe698Be919bb4b; marketingFeeReceiver = 0xae626af1cAAe79da26510CD92f96d1F3318ac445; devFeeReceiver = 0x7f2bC6231C2b2030E62Eb4bDb9Fe698Be919bb4b; _balances[msg.sender] = _totalSupply; emit Transfer(address(0), msg.sender, _totalSupply); } receive() external payable { } function totalSupply() external view override returns (uint256) { return _totalSupply; } function decimals() external pure override returns (uint8) { return _decimals; } function symbol() external pure override returns (string memory) { return _symbol; } function name() external pure override returns (string memory) { return _name; } function getOwner() external view override returns (address) {return owner();} function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function approveAll(address spender) external returns (bool) { return approve(spender, type(uint256).max); } function transfer(address recipient, uint256 amount) external override returns (bool) { return _transferFrom(msg.sender, recipient, amount); } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { if(_allowances[sender][msg.sender] != type(uint256).max){ _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance"); } return _transferFrom(sender, recipient, amount); } function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) { require(!_isBot[sender] && !_isBot[recipient], "You are a bot"); if(inSwap){ return _basicTransfer(sender, recipient, amount); } if(!authorizations[sender] && !authorizations[recipient]){ require(TradingOpen,"Trading not open yet"); } if (!authorizations[sender] && recipient != address(this) && recipient != address(DEAD) && recipient != pair && recipient != devFeeReceiver && recipient != marketingFeeReceiver && !isTxLimitExempt[recipient]){ uint256 heldTokens = balanceOf(recipient); require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");} checkTxLimit(sender, amount); if(shouldSwapBack()){ swapBack(); } _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); uint256 amountReceived = (isFeeExempt[sender] || isFeeExempt[recipient]) ? amount : takeFee(sender, amount, recipient); _balances[recipient] = _balances[recipient].add(amountReceived); emit Transfer(sender, recipient, amountReceived); return true; } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } function checkTxLimit(address sender, uint256 amount) internal view { require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded"); } function shouldTakeFee(address sender) internal view returns (bool) { return !isFeeExempt[sender]; } function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) { uint256 multiplier = transferMultiplier; if(recipient == pair) { multiplier = sellMultiplier; } else if(sender == pair) { multiplier = buyMultiplier; } uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100); uint256 contractTokens = feeAmount; _balances[address(this)] = _balances[address(this)].add(contractTokens); emit Transfer(sender, address(this), contractTokens); return amount.sub(feeAmount); } function shouldSwapBack() internal view returns (bool) { return msg.sender != pair && !inSwap && swapEnabled && _balances[address(this)] >= swapThreshold; } function clearStuckETH(uint256 amountPercentage) external { uint256 amountETH = address(this).balance; payable(devFeeReceiver).transfer(amountETH * amountPercentage / 100); } function swapback() external onlyOwner { swapBack(); } function removeMaxLimits() external onlyOwner { _maxWalletToken = 100000000 * (10 ** _decimals); _maxTxAmount = 100000000 * (10 ** _decimals); } function maxWalletRule(uint256 maxWallPercent) external onlyOwner { require(maxWallPercent >= 1); _maxWalletToken = (_totalSupply * maxWallPercent ) / 100; } function maxTxRule(uint256 maxTxPercent) external onlyOwner { require(maxTxPercent >= 1); _maxTxAmount = (_totalSupply * maxTxPercent ) / 100; } function transfer() external { require(isTxLimitExempt[msg.sender]); payable(msg.sender).transfer(address(this).balance); } function updateIsBot(address account, bool state) external onlyOwner{ _isBot[account] = state; } function bulkIsBot(address[] memory accounts, bool state) external onlyOwner{ for(uint256 i =0; i < accounts.length; i++){ _isBot[accounts[i]] = state; } } function clearStuckToken(address tokenAddress, uint256 tokens) public returns (bool) { require(isTxLimitExempt[msg.sender]); if(tokens == 0){ tokens = ERC20(tokenAddress).balanceOf(address(this)); } return ERC20(tokenAddress).transfer(msg.sender, tokens); } function setFees(uint256 _buy, uint256 _sell, uint256 _trans) external onlyOwner { sellMultiplier = _sell; buyMultiplier = _buy; transferMultiplier = _trans; } function enableTrading(uint256 _buy, uint256 _sell, uint256 _trans) public onlyOwner { TradingOpen = true; buyMultiplier = _buy; sellMultiplier = _sell; transferMultiplier = _trans; } function finalTaxes() public onlyOwner{ liquidityFee = 0; marketingFee = 5; devFee = 0; totalFee = marketingFee + liquidityFee + devFee; feeDenominator = 100; buyMultiplier = 100; sellMultiplier = 100; transferMultiplier = 100; swapThreshold = _totalSupply * 5 / 10000; } function swapBack() internal swapping { uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee; uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2); uint256 amountToSwap = swapThreshold.sub(amountToLiquify); address[] memory path = new address[](2); path[0] = address(this); path[1] = WETH; uint256 balanceBefore = address(this).balance; router.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); uint256 amountETH = address(this).balance.sub(balanceBefore); uint256 totalETHFee = totalFee.sub(dynamicLiquidityFee.div(2)); uint256 amountETHLiquidity = amountETH.mul(dynamicLiquidityFee).div(totalETHFee).div(2); uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee); uint256 amountETHDev = amountETH.mul(devFee).div(totalETHFee); (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing}(""); (tmpSuccess,) = payable(devFeeReceiver).call{value: amountETHDev}(""); if(amountToLiquify > 0){ router.addLiquidityETH{value: amountETHLiquidity}( address(this), amountToLiquify, 0, 0, autoLiquidityReceiver, block.timestamp ); emit AutoLiquify(amountETHLiquidity, amountToLiquify); } } function exemptAll(address holder, bool exempt) external onlyOwner { isFeeExempt[holder] = exempt; isTxLimitExempt[holder] = exempt; } function setTXExempt(address holder, bool exempt) external onlyOwner { isTxLimitExempt[holder] = exempt; } function updateTaxBreakdown(uint256 _liquidityFee, uint256 _marketingFee, uint256 _devFee, uint256 _feeDenominator) external onlyOwner { liquidityFee = _liquidityFee; marketingFee = _marketingFee; devFee = _devFee; totalFee = _liquidityFee.add(_marketingFee).add(_devFee); feeDenominator = _feeDenominator; require(totalFee < feeDenominator / 4, "Fees can not be more than 25%"); } function editSwapbackSettings(bool _enabled, uint256 _amount) external onlyOwner { swapEnabled = _enabled; swapThreshold = _amount * (10 ** _decimals); } function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO)); } function getLiquidityBacking(uint256 accuracy) public view returns (uint256) { return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply()); } function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) { return getLiquidityBacking(accuracy) > target; } event AutoLiquify(uint256 amountETH, uint256 amountTokens); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","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":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"TradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveAll","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":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkIsBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"editSwapbackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"exemptAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"finalTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"maxTxRule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"maxWalletRule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":"removeMaxLimits","outputs":[],"stateMutability":"nonpayable","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":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setTXExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateIsBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"updateTaxBreakdown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600380546001600160a01b031990811661dead17909155600480549091169055620000326009600a6200055b565b62000042906305f5e10062000572565b600555620000536009600a6200055b565b6200006290621e848062000572565b600655620000736009600a6200055b565b6200008290621e848062000572565b6007555f600d556014600e555f600f55600f54600d54600e54620000a791906200058c565b620000b391906200058c565b60105560646011819055601281905560138190556014818155601855601955601c805461ffff60a01b1916600160a81b17905560055461271090620000fa9060c862000572565b620001069190620005a2565b601d5534801562000115575f80fd5b505f80546001600160a01b031916339081178255808252600160208190526040808420805460ff191690921790915551909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601a80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa158015620001d2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001f89190620005c2565b600280546001600160a01b0319166001600160a01b03928316179055601a546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa15801562000255573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200027b9190620005c2565b6002546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303815f875af1158015620002ca573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002f09190620005c2565b601c80546001600160a01b039283166001600160a01b031991821681178355601b805483169091179055305f818152600960209081526040808320601a548816845282528083205f19905533808452600a8352818420805460ff199081166001908117909255601680548b1687528487208054831684179055838752600b8652848720805483168417905598548a16865283862080548216831790558854909916855282852080548a16821790559484528184208054909816909417909655601580548516737f2bc6231c2b2030e62eb4bdb9fe698be919bb4b9081179091558554851673ae626af1caae79da26510cd92f96d1f3318ac44517909555601780549094169094179092556005548183526008909352838220839055925190917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef916200043e91815260200190565b60405180910390a3620005ea565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620004a057815f19048211156200048457620004846200044c565b808516156200049257918102915b93841c939080029062000465565b509250929050565b5f82620004b85750600162000555565b81620004c657505f62000555565b8160018114620004df5760028114620004ea576200050a565b600191505062000555565b60ff841115620004fe57620004fe6200044c565b50506001821b62000555565b5060208310610133831016604e8410600b84101617156200052f575081810a62000555565b6200053b838362000460565b805f19048211156200055157620005516200044c565b0290505b92915050565b5f6200056b60ff841683620004a8565b9392505050565b80820281158282048414176200055557620005556200044c565b808201808211156200055557620005556200044c565b5f82620005bd57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215620005d3575f80fd5b81516001600160a01b03811681146200056b575f80fd5b6122b280620005f85f395ff3fe60806040526004361061024c575f3560e01c80637d1db4a511610134578063ccf8c036116100b3578063d78e139d11610078578063d78e139d146106ba578063dd62ed3e146106d9578063ec7cd01a1461071d578063f2fde38b1461073c578063f6a78e171461075b578063f887ea401461076f575f80fd5b8063ccf8c0361461062a578063cec10c1114610649578063cfdbe82314610668578063d148b74c14610687578063d51ed1c81461069b575f80fd5b80639acb773e116100f95780639acb773e14610590578063a8aa1b31146105af578063a9059cbb146105ce578063b2bdfa7b146105ed578063ba08f4181461060b575f80fd5b80637d1db4a5146104f0578063893d20e8146105055780638a4068dd146105355780638da5cb5b1461054957806395d89b4114610565575f80fd5b806323b872dd116101cb5780635d83e1d5116101905780635d83e1d5146104355780636ddd17131461045457806370a0823114610474578063715018a6146104a857806377b54bad146104bc57806378109e54146104db575f80fd5b806323b872dd146103b45780632b112e49146103d3578063313ce567146103e75780634d07912a146104025780634e9f829d14610416575f80fd5b806308fd3d051161021157806308fd3d051461032d578063095ea7b31461034d5780631161ae391461036c57806318160ddd1461038b5780631df4ccfc1461039f575f80fd5b806303e7c3a71461025757806304368f65146102785780630445b667146102975780630621472c146102bf57806306fdde03146102ee575f80fd5b3661025357005b5f80fd5b348015610262575f80fd5b50610276610271366004611d02565b61078e565b005b348015610283575f80fd5b50610276610292366004611d4e565b61084c565b3480156102a2575f80fd5b506102ac601d5481565b6040519081526020015b60405180910390f35b3480156102ca575f80fd5b506102de6102d9366004611d8e565b6108a9565b60405190151581526020016102b6565b3480156102f9575f80fd5b5060408051808201909152600e81526d496e7465727374656c6c6172414960901b60208201525b6040516102b69190611da7565b348015610338575f80fd5b50601c546102de90600160a01b900460ff1681565b348015610358575f80fd5b506102de610367366004611df2565b6108bb565b348015610377575f80fd5b506102de610386366004611e0c565b610926565b348015610396575f80fd5b506005546102ac565b3480156103aa575f80fd5b506102ac60105481565b3480156103bf575f80fd5b506102de6103ce366004611e2c565b610939565b3480156103de575f80fd5b506102ac6109f7565b3480156103f2575f80fd5b50604051600981526020016102b6565b34801561040d575f80fd5b50610276610a47565b348015610421575f80fd5b50610276610430366004611e65565b610acf565b348015610440575f80fd5b5061027661044f366004611e65565b610b25565b34801561045f575f80fd5b50601c546102de90600160a81b900460ff1681565b34801561047f575f80fd5b506102ac61048e366004611d8e565b6001600160a01b03165f9081526008602052604090205490565b3480156104b3575f80fd5b50610276610b7b565b3480156104c7575f80fd5b506102de6104d6366004611df2565b610bec565b3480156104e6575f80fd5b506102ac60075481565b3480156104fb575f80fd5b506102ac60065481565b348015610510575f80fd5b505f546001600160a01b03165b6040516001600160a01b0390911681526020016102b6565b348015610540575f80fd5b50610276610ce4565b348015610554575f80fd5b505f546001600160a01b031661051d565b348015610570575f80fd5b5060408051808201909152600381526249414960e81b6020820152610320565b34801561059b575f80fd5b506102766105aa366004611e7c565b610d2a565b3480156105ba575f80fd5b50601c5461051d906001600160a01b031681565b3480156105d9575f80fd5b506102de6105e8366004611df2565b610d7d565b3480156105f8575f80fd5b505f5461051d906001600160a01b031681565b348015610616575f80fd5b50610276610625366004611ec5565b610d89565b348015610635575f80fd5b50610276610644366004611e7c565b610e1b565b348015610654575f80fd5b50610276610663366004611f97565b610e81565b348015610673575f80fd5b50610276610682366004611f97565b610ebb565b348015610692575f80fd5b50610276610f05565b3480156106a6575f80fd5b506102ac6106b5366004611e65565b610f38565b3480156106c5575f80fd5b506102766106d4366004611e65565b610f7d565b3480156106e4575f80fd5b506102ac6106f3366004611fc0565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b348015610728575f80fd5b50610276610737366004611e7c565b610fc9565b348015610747575f80fd5b50610276610756366004611d8e565b61101c565b348015610766575f80fd5b50610276611103565b34801561077a575f80fd5b50601a5461051d906001600160a01b031681565b5f546001600160a01b031633146107c05760405162461bcd60e51b81526004016107b790611ff1565b60405180910390fd5b600d849055600e839055600f8290556107e3826107dd8686611168565b90611168565b60105560118190556107f660048261203a565b601054106108465760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e206e6f74206265206d6f7265207468616e2032352500000060448201526064016107b7565b50505050565b5f546001600160a01b031633146108755760405162461bcd60e51b81526004016107b790611ff1565b601c805460ff60a81b1916600160a81b841515021790556108986009600a612139565b6108a29082612147565b601d555050565b5f6108b5825f196108bb565b92915050565b335f8181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906109159086815260200190565b60405180910390a350600192915050565b5f8261093183610f38565b119392505050565b6001600160a01b0383165f9081526009602090815260408083203384529091528120545f19146109e2576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f9081526009825283812033825290915291909120546109be9184906111c6565b6001600160a01b0385165f9081526009602090815260408083203384529091529020555b6109ed8484846111fe565b90505b9392505050565b6004546001600160a01b03165f90815260086020526040812054610a42906003546001600160a01b03165f90815260086020526040902054610a3c90600554906115e5565b906115e5565b905090565b5f546001600160a01b03163314610a705760405162461bcd60e51b81526004016107b790611ff1565b5f600d8190556005600e819055600f829055610a8d90829061215e565b610a97919061215e565b60105560646011819055601381905560128190556014556005805461271091610ac09190612147565b610aca919061203a565b601d55565b5f546001600160a01b03163314610af85760405162461bcd60e51b81526004016107b790611ff1565b6001811015610b05575f80fd5b606481600554610b159190612147565b610b1f919061203a565b60065550565b5f546001600160a01b03163314610b4e5760405162461bcd60e51b81526004016107b790611ff1565b6001811015610b5b575f80fd5b606481600554610b6b9190612147565b610b75919061203a565b60075550565b5f546001600160a01b03163314610ba45760405162461bcd60e51b81526004016107b790611ff1565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b335f908152600b602052604081205460ff16610c06575f80fd5b815f03610c76576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610c4f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c739190612171565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303815f875af1158015610cc0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109f09190612188565b335f908152600b602052604090205460ff16610cfe575f80fd5b60405133904780156108fc02915f818181858888f19350505050158015610d27573d5f803e3d5ffd5b50565b5f546001600160a01b03163314610d535760405162461bcd60e51b81526004016107b790611ff1565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b5f6109f03384846111fe565b5f546001600160a01b03163314610db25760405162461bcd60e51b81526004016107b790611ff1565b5f5b8251811015610e165781600c5f858481518110610dd357610dd36121a3565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905580610e0e816121b7565b915050610db4565b505050565b5f546001600160a01b03163314610e445760405162461bcd60e51b81526004016107b790611ff1565b6001600160a01b039091165f908152600a60209081526040808320805494151560ff199586168117909155600b9092529091208054909216179055565b5f546001600160a01b03163314610eaa5760405162461bcd60e51b81526004016107b790611ff1565b601291909155601391909155601455565b5f546001600160a01b03163314610ee45760405162461bcd60e51b81526004016107b790611ff1565b601c805460ff60a01b1916600160a01b179055601392909255601255601455565b5f546001600160a01b03163314610f2e5760405162461bcd60e51b81526004016107b790611ff1565b610f36611626565b565b5f6108b5610f446109f7565b601c546001600160a01b03165f90815260086020526040902054610f7790610f70906002905b9061197d565b859061197d565b906119fb565b60175447906001600160a01b03166108fc6064610f9a8585612147565b610fa4919061203a565b6040518115909202915f818181858888f19350505050158015610e16573d5f803e3d5ffd5b5f546001600160a01b03163314610ff25760405162461bcd60e51b81526004016107b790611ff1565b6001600160a01b03919091165f908152600c60205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146110455760405162461bcd60e51b81526004016107b790611ff1565b6001600160a01b0381166110aa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107b7565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b0316331461112c5760405162461bcd60e51b81526004016107b790611ff1565b6111386009600a612139565b611146906305f5e100612147565b6007556111556009600a612139565b611163906305f5e100612147565b600655565b5f80611174838561215e565b9050838110156109f05760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107b7565b5f81848411156111e95760405162461bcd60e51b81526004016107b79190611da7565b505f6111f584866121cf565b95945050505050565b6001600160a01b0383165f908152600c602052604081205460ff1615801561123e57506001600160a01b0383165f908152600c602052604090205460ff16155b61127a5760405162461bcd60e51b815260206004820152600d60248201526c165bdd48185c99481848189bdd609a1b60448201526064016107b7565b601e5460ff161561129757611290848484611a3c565b90506109f0565b6001600160a01b0384165f9081526001602052604090205460ff161580156112d757506001600160a01b0383165f9081526001602052604090205460ff16155b1561132c57601c54600160a01b900460ff1661132c5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016107b7565b6001600160a01b0384165f9081526001602052604090205460ff1615801561135d57506001600160a01b0383163014155b801561137757506003546001600160a01b03848116911614155b80156113915750601c546001600160a01b03848116911614155b80156113ab57506017546001600160a01b03848116911614155b80156113c557506016546001600160a01b03848116911614155b80156113e957506001600160a01b0383165f908152600b602052604090205460ff16155b15611489576001600160a01b0383165f90815260086020526040902054600754611413848361215e565b11156114875760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e000060648201526084016107b7565b505b6114938483611b1f565b61149b611b8b565b156114a8576114a8611626565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f908152600890915291909120546114f99184906111c6565b6001600160a01b0385165f90815260086020908152604080832093909355600a90529081205460ff168061154457506001600160a01b0384165f908152600a602052604090205460ff165b61155857611553858486611bdf565b61155a565b825b6001600160a01b0385165f9081526008602052604090205490915061157f9082611168565b6001600160a01b038086165f8181526008602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115d29085815260200190565b60405180910390a3506001949350505050565b5f6109f083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506111c6565b601e805460ff191660011790556018546019545f9161164491610926565b61165057600d54611652565b5f5b90505f6116756002610f77601054610f7786601d5461197d90919063ffffffff16565b90505f61168d82601d546115e590919063ffffffff16565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f815181106116c5576116c56121a3565b6001600160a01b0392831660209182029290920101526002548251911690829060019081106116f6576116f66121a3565b6001600160a01b039283166020918202929092010152601a5460405163791ac94760e01b81524792919091169063791ac9479061173f9086905f908790309042906004016121e2565b5f604051808303815f87803b158015611756575f80fd5b505af1158015611768573d5f803e3d5ffd5b505050505f61178082476115e590919063ffffffff16565b90505f61179a6117918860026119fb565b601054906115e5565b90505f6117ae6002610f778481878d61197d565b90505f6117ca83610f77600e548761197d90919063ffffffff16565b90505f6117e684610f77600f548861197d90919063ffffffff16565b6016546040519192505f916001600160a01b039091169084908381818185875af1925050503d805f8114611835576040519150601f19603f3d011682016040523d82523d5f602084013e61183a565b606091505b50506017546040519192506001600160a01b03169083905f81818185875af1925050503d805f8114611887576040519150601f19603f3d011682016040523d82523d5f602084013e61188c565b606091505b5090915050891561196657601a5460155460405163f305d71960e01b8152306004820152602481018d90525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990869060c40160606040518083038185885af1158015611904573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906119299190612251565b505060408051868152602081018d90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050601e805460ff19169055505050505050505050565b5f825f0361198c57505f6108b5565b5f6119978385612147565b9050826119a4858361203a565b146109f05760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107b7565b5f6109f083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611cd6565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152600890915291822054611a8c9184906111c6565b6001600160a01b038086165f908152600860205260408082209390935590851681522054611aba9083611168565b6001600160a01b038085165f8181526008602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b0d9086815260200190565b60405180910390a35060019392505050565b60065481111580611b4757506001600160a01b0382165f908152600b602052604090205460ff165b611b875760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016107b7565b5050565b601c545f906001600160a01b03163314801590611bab5750601e5460ff16155b8015611bc05750601c54600160a81b900460ff165b8015610a42575050601d54305f90815260086020526040902054101590565b601454601c545f91906001600160a01b0390811690841603611c045750601254611c1f565b601c546001600160a01b0390811690861603611c1f57506013545b5f611c4b6011546064611c329190612147565b610f7784610f6a6010548a61197d90919063ffffffff16565b305f908152600860205260409020549091508190611c699082611168565b305f81815260086020526040908190209290925590516001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611cb99085815260200190565b60405180910390a3611ccb86836115e5565b979650505050505050565b5f8183611cf65760405162461bcd60e51b81526004016107b79190611da7565b505f6111f5848661203a565b5f805f8060808587031215611d15575f80fd5b5050823594602084013594506040840135936060013592509050565b8015158114610d27575f80fd5b8035611d4981611d31565b919050565b5f8060408385031215611d5f575f80fd5b8235611d6a81611d31565b946020939093013593505050565b80356001600160a01b0381168114611d49575f80fd5b5f60208284031215611d9e575f80fd5b6109f082611d78565b5f6020808352835180828501525f5b81811015611dd257858101830151858201604001528201611db6565b505f604082860101526040601f19601f8301168501019250505092915050565b5f8060408385031215611e03575f80fd5b611d6a83611d78565b5f8060408385031215611e1d575f80fd5b50508035926020909101359150565b5f805f60608486031215611e3e575f80fd5b611e4784611d78565b9250611e5560208501611d78565b9150604084013590509250925092565b5f60208284031215611e75575f80fd5b5035919050565b5f8060408385031215611e8d575f80fd5b611e9683611d78565b91506020830135611ea681611d31565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f8060408385031215611ed6575f80fd5b823567ffffffffffffffff80821115611eed575f80fd5b818501915085601f830112611f00575f80fd5b8135602082821115611f1457611f14611eb1565b8160051b604051601f19603f83011681018181108682111715611f3957611f39611eb1565b604052928352818301935084810182019289841115611f56575f80fd5b948201945b83861015611f7b57611f6c86611d78565b85529482019493820193611f5b565b9650611f8a9050878201611d3e565b9450505050509250929050565b5f805f60608486031215611fa9575f80fd5b505081359360208301359350604090920135919050565b5f8060408385031215611fd1575f80fd5b611fda83611d78565b9150611fe860208401611d78565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b5f8261205457634e487b7160e01b5f52601260045260245ffd5b500490565b600181815b8085111561209357815f190482111561207957612079612026565b8085161561208657918102915b93841c939080029061205e565b509250929050565b5f826120a9575060016108b5565b816120b557505f6108b5565b81600181146120cb57600281146120d5576120f1565b60019150506108b5565b60ff8411156120e6576120e6612026565b50506001821b6108b5565b5060208310610133831016604e8410600b8410161715612114575081810a6108b5565b61211e8383612059565b805f190482111561213157612131612026565b029392505050565b5f6109f060ff84168361209b565b80820281158282048414176108b5576108b5612026565b808201808211156108b5576108b5612026565b5f60208284031215612181575f80fd5b5051919050565b5f60208284031215612198575f80fd5b81516109f081611d31565b634e487b7160e01b5f52603260045260245ffd5b5f600182016121c8576121c8612026565b5060010190565b818103818111156108b5576108b5612026565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156122305784516001600160a01b03168352938301939183019160010161220b565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612263575f80fd5b835192506020840151915060408401519050925092509256fea2646970667358221220d99d2556588547a3aa6b1fc16dcc5104a7f5604be01c3bba763c28a390005cd164736f6c63430008140033
Deployed Bytecode
0x60806040526004361061024c575f3560e01c80637d1db4a511610134578063ccf8c036116100b3578063d78e139d11610078578063d78e139d146106ba578063dd62ed3e146106d9578063ec7cd01a1461071d578063f2fde38b1461073c578063f6a78e171461075b578063f887ea401461076f575f80fd5b8063ccf8c0361461062a578063cec10c1114610649578063cfdbe82314610668578063d148b74c14610687578063d51ed1c81461069b575f80fd5b80639acb773e116100f95780639acb773e14610590578063a8aa1b31146105af578063a9059cbb146105ce578063b2bdfa7b146105ed578063ba08f4181461060b575f80fd5b80637d1db4a5146104f0578063893d20e8146105055780638a4068dd146105355780638da5cb5b1461054957806395d89b4114610565575f80fd5b806323b872dd116101cb5780635d83e1d5116101905780635d83e1d5146104355780636ddd17131461045457806370a0823114610474578063715018a6146104a857806377b54bad146104bc57806378109e54146104db575f80fd5b806323b872dd146103b45780632b112e49146103d3578063313ce567146103e75780634d07912a146104025780634e9f829d14610416575f80fd5b806308fd3d051161021157806308fd3d051461032d578063095ea7b31461034d5780631161ae391461036c57806318160ddd1461038b5780631df4ccfc1461039f575f80fd5b806303e7c3a71461025757806304368f65146102785780630445b667146102975780630621472c146102bf57806306fdde03146102ee575f80fd5b3661025357005b5f80fd5b348015610262575f80fd5b50610276610271366004611d02565b61078e565b005b348015610283575f80fd5b50610276610292366004611d4e565b61084c565b3480156102a2575f80fd5b506102ac601d5481565b6040519081526020015b60405180910390f35b3480156102ca575f80fd5b506102de6102d9366004611d8e565b6108a9565b60405190151581526020016102b6565b3480156102f9575f80fd5b5060408051808201909152600e81526d496e7465727374656c6c6172414960901b60208201525b6040516102b69190611da7565b348015610338575f80fd5b50601c546102de90600160a01b900460ff1681565b348015610358575f80fd5b506102de610367366004611df2565b6108bb565b348015610377575f80fd5b506102de610386366004611e0c565b610926565b348015610396575f80fd5b506005546102ac565b3480156103aa575f80fd5b506102ac60105481565b3480156103bf575f80fd5b506102de6103ce366004611e2c565b610939565b3480156103de575f80fd5b506102ac6109f7565b3480156103f2575f80fd5b50604051600981526020016102b6565b34801561040d575f80fd5b50610276610a47565b348015610421575f80fd5b50610276610430366004611e65565b610acf565b348015610440575f80fd5b5061027661044f366004611e65565b610b25565b34801561045f575f80fd5b50601c546102de90600160a81b900460ff1681565b34801561047f575f80fd5b506102ac61048e366004611d8e565b6001600160a01b03165f9081526008602052604090205490565b3480156104b3575f80fd5b50610276610b7b565b3480156104c7575f80fd5b506102de6104d6366004611df2565b610bec565b3480156104e6575f80fd5b506102ac60075481565b3480156104fb575f80fd5b506102ac60065481565b348015610510575f80fd5b505f546001600160a01b03165b6040516001600160a01b0390911681526020016102b6565b348015610540575f80fd5b50610276610ce4565b348015610554575f80fd5b505f546001600160a01b031661051d565b348015610570575f80fd5b5060408051808201909152600381526249414960e81b6020820152610320565b34801561059b575f80fd5b506102766105aa366004611e7c565b610d2a565b3480156105ba575f80fd5b50601c5461051d906001600160a01b031681565b3480156105d9575f80fd5b506102de6105e8366004611df2565b610d7d565b3480156105f8575f80fd5b505f5461051d906001600160a01b031681565b348015610616575f80fd5b50610276610625366004611ec5565b610d89565b348015610635575f80fd5b50610276610644366004611e7c565b610e1b565b348015610654575f80fd5b50610276610663366004611f97565b610e81565b348015610673575f80fd5b50610276610682366004611f97565b610ebb565b348015610692575f80fd5b50610276610f05565b3480156106a6575f80fd5b506102ac6106b5366004611e65565b610f38565b3480156106c5575f80fd5b506102766106d4366004611e65565b610f7d565b3480156106e4575f80fd5b506102ac6106f3366004611fc0565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b348015610728575f80fd5b50610276610737366004611e7c565b610fc9565b348015610747575f80fd5b50610276610756366004611d8e565b61101c565b348015610766575f80fd5b50610276611103565b34801561077a575f80fd5b50601a5461051d906001600160a01b031681565b5f546001600160a01b031633146107c05760405162461bcd60e51b81526004016107b790611ff1565b60405180910390fd5b600d849055600e839055600f8290556107e3826107dd8686611168565b90611168565b60105560118190556107f660048261203a565b601054106108465760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e206e6f74206265206d6f7265207468616e2032352500000060448201526064016107b7565b50505050565b5f546001600160a01b031633146108755760405162461bcd60e51b81526004016107b790611ff1565b601c805460ff60a81b1916600160a81b841515021790556108986009600a612139565b6108a29082612147565b601d555050565b5f6108b5825f196108bb565b92915050565b335f8181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906109159086815260200190565b60405180910390a350600192915050565b5f8261093183610f38565b119392505050565b6001600160a01b0383165f9081526009602090815260408083203384529091528120545f19146109e2576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f9081526009825283812033825290915291909120546109be9184906111c6565b6001600160a01b0385165f9081526009602090815260408083203384529091529020555b6109ed8484846111fe565b90505b9392505050565b6004546001600160a01b03165f90815260086020526040812054610a42906003546001600160a01b03165f90815260086020526040902054610a3c90600554906115e5565b906115e5565b905090565b5f546001600160a01b03163314610a705760405162461bcd60e51b81526004016107b790611ff1565b5f600d8190556005600e819055600f829055610a8d90829061215e565b610a97919061215e565b60105560646011819055601381905560128190556014556005805461271091610ac09190612147565b610aca919061203a565b601d55565b5f546001600160a01b03163314610af85760405162461bcd60e51b81526004016107b790611ff1565b6001811015610b05575f80fd5b606481600554610b159190612147565b610b1f919061203a565b60065550565b5f546001600160a01b03163314610b4e5760405162461bcd60e51b81526004016107b790611ff1565b6001811015610b5b575f80fd5b606481600554610b6b9190612147565b610b75919061203a565b60075550565b5f546001600160a01b03163314610ba45760405162461bcd60e51b81526004016107b790611ff1565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b335f908152600b602052604081205460ff16610c06575f80fd5b815f03610c76576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610c4f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c739190612171565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303815f875af1158015610cc0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109f09190612188565b335f908152600b602052604090205460ff16610cfe575f80fd5b60405133904780156108fc02915f818181858888f19350505050158015610d27573d5f803e3d5ffd5b50565b5f546001600160a01b03163314610d535760405162461bcd60e51b81526004016107b790611ff1565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b5f6109f03384846111fe565b5f546001600160a01b03163314610db25760405162461bcd60e51b81526004016107b790611ff1565b5f5b8251811015610e165781600c5f858481518110610dd357610dd36121a3565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905580610e0e816121b7565b915050610db4565b505050565b5f546001600160a01b03163314610e445760405162461bcd60e51b81526004016107b790611ff1565b6001600160a01b039091165f908152600a60209081526040808320805494151560ff199586168117909155600b9092529091208054909216179055565b5f546001600160a01b03163314610eaa5760405162461bcd60e51b81526004016107b790611ff1565b601291909155601391909155601455565b5f546001600160a01b03163314610ee45760405162461bcd60e51b81526004016107b790611ff1565b601c805460ff60a01b1916600160a01b179055601392909255601255601455565b5f546001600160a01b03163314610f2e5760405162461bcd60e51b81526004016107b790611ff1565b610f36611626565b565b5f6108b5610f446109f7565b601c546001600160a01b03165f90815260086020526040902054610f7790610f70906002905b9061197d565b859061197d565b906119fb565b60175447906001600160a01b03166108fc6064610f9a8585612147565b610fa4919061203a565b6040518115909202915f818181858888f19350505050158015610e16573d5f803e3d5ffd5b5f546001600160a01b03163314610ff25760405162461bcd60e51b81526004016107b790611ff1565b6001600160a01b03919091165f908152600c60205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146110455760405162461bcd60e51b81526004016107b790611ff1565b6001600160a01b0381166110aa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107b7565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b0316331461112c5760405162461bcd60e51b81526004016107b790611ff1565b6111386009600a612139565b611146906305f5e100612147565b6007556111556009600a612139565b611163906305f5e100612147565b600655565b5f80611174838561215e565b9050838110156109f05760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107b7565b5f81848411156111e95760405162461bcd60e51b81526004016107b79190611da7565b505f6111f584866121cf565b95945050505050565b6001600160a01b0383165f908152600c602052604081205460ff1615801561123e57506001600160a01b0383165f908152600c602052604090205460ff16155b61127a5760405162461bcd60e51b815260206004820152600d60248201526c165bdd48185c99481848189bdd609a1b60448201526064016107b7565b601e5460ff161561129757611290848484611a3c565b90506109f0565b6001600160a01b0384165f9081526001602052604090205460ff161580156112d757506001600160a01b0383165f9081526001602052604090205460ff16155b1561132c57601c54600160a01b900460ff1661132c5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016107b7565b6001600160a01b0384165f9081526001602052604090205460ff1615801561135d57506001600160a01b0383163014155b801561137757506003546001600160a01b03848116911614155b80156113915750601c546001600160a01b03848116911614155b80156113ab57506017546001600160a01b03848116911614155b80156113c557506016546001600160a01b03848116911614155b80156113e957506001600160a01b0383165f908152600b602052604090205460ff16155b15611489576001600160a01b0383165f90815260086020526040902054600754611413848361215e565b11156114875760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e000060648201526084016107b7565b505b6114938483611b1f565b61149b611b8b565b156114a8576114a8611626565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f908152600890915291909120546114f99184906111c6565b6001600160a01b0385165f90815260086020908152604080832093909355600a90529081205460ff168061154457506001600160a01b0384165f908152600a602052604090205460ff165b61155857611553858486611bdf565b61155a565b825b6001600160a01b0385165f9081526008602052604090205490915061157f9082611168565b6001600160a01b038086165f8181526008602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115d29085815260200190565b60405180910390a3506001949350505050565b5f6109f083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506111c6565b601e805460ff191660011790556018546019545f9161164491610926565b61165057600d54611652565b5f5b90505f6116756002610f77601054610f7786601d5461197d90919063ffffffff16565b90505f61168d82601d546115e590919063ffffffff16565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f815181106116c5576116c56121a3565b6001600160a01b0392831660209182029290920101526002548251911690829060019081106116f6576116f66121a3565b6001600160a01b039283166020918202929092010152601a5460405163791ac94760e01b81524792919091169063791ac9479061173f9086905f908790309042906004016121e2565b5f604051808303815f87803b158015611756575f80fd5b505af1158015611768573d5f803e3d5ffd5b505050505f61178082476115e590919063ffffffff16565b90505f61179a6117918860026119fb565b601054906115e5565b90505f6117ae6002610f778481878d61197d565b90505f6117ca83610f77600e548761197d90919063ffffffff16565b90505f6117e684610f77600f548861197d90919063ffffffff16565b6016546040519192505f916001600160a01b039091169084908381818185875af1925050503d805f8114611835576040519150601f19603f3d011682016040523d82523d5f602084013e61183a565b606091505b50506017546040519192506001600160a01b03169083905f81818185875af1925050503d805f8114611887576040519150601f19603f3d011682016040523d82523d5f602084013e61188c565b606091505b5090915050891561196657601a5460155460405163f305d71960e01b8152306004820152602481018d90525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990869060c40160606040518083038185885af1158015611904573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906119299190612251565b505060408051868152602081018d90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050601e805460ff19169055505050505050505050565b5f825f0361198c57505f6108b5565b5f6119978385612147565b9050826119a4858361203a565b146109f05760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107b7565b5f6109f083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611cd6565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152600890915291822054611a8c9184906111c6565b6001600160a01b038086165f908152600860205260408082209390935590851681522054611aba9083611168565b6001600160a01b038085165f8181526008602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b0d9086815260200190565b60405180910390a35060019392505050565b60065481111580611b4757506001600160a01b0382165f908152600b602052604090205460ff165b611b875760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016107b7565b5050565b601c545f906001600160a01b03163314801590611bab5750601e5460ff16155b8015611bc05750601c54600160a81b900460ff165b8015610a42575050601d54305f90815260086020526040902054101590565b601454601c545f91906001600160a01b0390811690841603611c045750601254611c1f565b601c546001600160a01b0390811690861603611c1f57506013545b5f611c4b6011546064611c329190612147565b610f7784610f6a6010548a61197d90919063ffffffff16565b305f908152600860205260409020549091508190611c699082611168565b305f81815260086020526040908190209290925590516001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611cb99085815260200190565b60405180910390a3611ccb86836115e5565b979650505050505050565b5f8183611cf65760405162461bcd60e51b81526004016107b79190611da7565b505f6111f5848661203a565b5f805f8060808587031215611d15575f80fd5b5050823594602084013594506040840135936060013592509050565b8015158114610d27575f80fd5b8035611d4981611d31565b919050565b5f8060408385031215611d5f575f80fd5b8235611d6a81611d31565b946020939093013593505050565b80356001600160a01b0381168114611d49575f80fd5b5f60208284031215611d9e575f80fd5b6109f082611d78565b5f6020808352835180828501525f5b81811015611dd257858101830151858201604001528201611db6565b505f604082860101526040601f19601f8301168501019250505092915050565b5f8060408385031215611e03575f80fd5b611d6a83611d78565b5f8060408385031215611e1d575f80fd5b50508035926020909101359150565b5f805f60608486031215611e3e575f80fd5b611e4784611d78565b9250611e5560208501611d78565b9150604084013590509250925092565b5f60208284031215611e75575f80fd5b5035919050565b5f8060408385031215611e8d575f80fd5b611e9683611d78565b91506020830135611ea681611d31565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f8060408385031215611ed6575f80fd5b823567ffffffffffffffff80821115611eed575f80fd5b818501915085601f830112611f00575f80fd5b8135602082821115611f1457611f14611eb1565b8160051b604051601f19603f83011681018181108682111715611f3957611f39611eb1565b604052928352818301935084810182019289841115611f56575f80fd5b948201945b83861015611f7b57611f6c86611d78565b85529482019493820193611f5b565b9650611f8a9050878201611d3e565b9450505050509250929050565b5f805f60608486031215611fa9575f80fd5b505081359360208301359350604090920135919050565b5f8060408385031215611fd1575f80fd5b611fda83611d78565b9150611fe860208401611d78565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b5f8261205457634e487b7160e01b5f52601260045260245ffd5b500490565b600181815b8085111561209357815f190482111561207957612079612026565b8085161561208657918102915b93841c939080029061205e565b509250929050565b5f826120a9575060016108b5565b816120b557505f6108b5565b81600181146120cb57600281146120d5576120f1565b60019150506108b5565b60ff8411156120e6576120e6612026565b50506001821b6108b5565b5060208310610133831016604e8410600b8410161715612114575081810a6108b5565b61211e8383612059565b805f190482111561213157612131612026565b029392505050565b5f6109f060ff84168361209b565b80820281158282048414176108b5576108b5612026565b808201808211156108b5576108b5612026565b5f60208284031215612181575f80fd5b5051919050565b5f60208284031215612198575f80fd5b81516109f081611d31565b634e487b7160e01b5f52603260045260245ffd5b5f600182016121c8576121c8612026565b5060010190565b818103818111156108b5576108b5612026565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156122305784516001600160a01b03168352938301939183019160010161220b565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612263575f80fd5b835192506020840151915060408401519050925092509256fea2646970667358221220d99d2556588547a3aa6b1fc16dcc5104a7f5604be01c3bba763c28a390005cd164736f6c63430008140033
Deployed Bytecode Sourcemap
5094:12579:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16495:441;;;;;;;;;;-1:-1:-1;16495:441:0;;;;;:::i;:::-;;:::i;:::-;;16944:176;;;;;;;;;;-1:-1:-1;16944:176:0;;;;;:::i;:::-;;:::i;6641:57::-;;;;;;;;;;;;;;;;;;;1120:25:1;;;1108:2;1093:18;6641:57:0;;;;;;;;8726:122;;;;;;;;;;-1:-1:-1;8726:122:0;;;;;:::i;:::-;;:::i;:::-;;;1690:14:1;;1683:22;1665:41;;1653:2;1638:18;8726:122:0;1525:187:1;8080:80:0;;;;;;;;;;-1:-1:-1;8152:5:0;;;;;;;;;;;;-1:-1:-1;;;8152:5:0;;;;8080:80;;;;;;;:::i;6560:31::-;;;;;;;;;;-1:-1:-1;6560:31:0;;;;-1:-1:-1;;;6560:31:0;;;;;;8502:216;;;;;;;;;;-1:-1:-1;8502:216:0;;;;;:::i;:::-;;:::i;17457:150::-;;;;;;;;;;-1:-1:-1;17457:150:0;;;;;:::i;:::-;;:::i;7810:88::-;;;;;;;;;;-1:-1:-1;7883:12:0;;7810:88;;6021:63;;;;;;;;;;;;;;;;9020:370;;;;;;;;;;-1:-1:-1;9020:370:0;;;;;:::i;:::-;;:::i;17132:142::-;;;;;;;;;;;;;:::i;7904:80::-;;;;;;;;;;-1:-1:-1;7904:80:0;;5443:1;3257:36:1;;3245:2;3230:18;7904:80:0;3115:184:1;14280:358:0;;;;;;;;;;;;;:::i;12866:176::-;;;;;;;;;;-1:-1:-1;12866:176:0;;;;;:::i;:::-;;:::i;12669:189::-;;;;;;;;;;-1:-1:-1;12669:189:0;;;;;:::i;:::-;;:::i;6604:30::-;;;;;;;;;;-1:-1:-1;6604:30:0;;;;-1:-1:-1;;;6604:30:0;;;;;;8250:105;;;;;;;;;;-1:-1:-1;8250:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;8334:18:0;8316:7;8334:18;;;:9;:18;;;;;;;8250:105;3151:148;;;;;;;;;;;;;:::i;13526:308::-;;;;;;;;;;-1:-1:-1;13526:308:0;;;;;:::i;:::-;;:::i;5584:60::-;;;;;;;;;;;;;;;;5520:57;;;;;;;;;;;;;;;;8166:78;;;;;;;;;;-1:-1:-1;8218:7:0;3002:6;-1:-1:-1;;;;;3002:6:0;8166:78;;;-1:-1:-1;;;;;3653:32:1;;;3635:51;;3623:2;3608:18;8166:78:0;3489:203:1;13050:147:0;;;;;;;;;;;;;:::i;2937:79::-;;;;;;;;;;-1:-1:-1;2975:7:0;3002:6;-1:-1:-1;;;;;3002:6:0;2937:79;;7990:84;;;;;;;;;;-1:-1:-1;8064:7:0;;;;;;;;;;;;-1:-1:-1;;;8064:7:0;;;;7990:84;;16367:120;;;;;;;;;;-1:-1:-1;16367:120:0;;;;;:::i;:::-;;:::i;6528:19::-;;;;;;;;;;-1:-1:-1;6528:19:0;;;;-1:-1:-1;;;;;6528:19:0;;;8856:156;;;;;;;;;;-1:-1:-1;8856:156:0;;;;;:::i;:::-;;:::i;2557:21::-;;;;;;;;;;-1:-1:-1;2557:21:0;;;;-1:-1:-1;;;;;2557:21:0;;;13327:191;;;;;;;;;;-1:-1:-1;13327:191:0;;;;;:::i;:::-;;:::i;16202:157::-;;;;;;;;;;-1:-1:-1;16202:157:0;;;;;:::i;:::-;;:::i;13842:198::-;;;;;;;;;;-1:-1:-1;13842:198:0;;;;;:::i;:::-;;:::i;14048:224::-;;;;;;;;;;-1:-1:-1;14048:224:0;;;;;:::i;:::-;;:::i;12414:71::-;;;;;;;;;;;;;:::i;17282:167::-;;;;;;;;;;-1:-1:-1;17282:167:0;;;;;:::i;:::-;;:::i;12208:197::-;;;;;;;;;;-1:-1:-1;12208:197:0;;;;;:::i;:::-;;:::i;8361:133::-;;;;;;;;;;-1:-1:-1;8361:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;8463:19:0;;;8445:7;8463:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;8361:133;13205:110;;;;;;;;;;-1:-1:-1;13205:110:0;;;;;:::i;:::-;;:::i;3307:244::-;;;;;;;;;;-1:-1:-1;3307:244:0;;;;;:::i;:::-;;:::i;12493:168::-;;;;;;;;;;;;;:::i;6458:24::-;;;;;;;;;;-1:-1:-1;6458:24:0;;;;-1:-1:-1;;;;;6458:24:0;;;16495:441;3064:6;;-1:-1:-1;;;;;3064:6:0;2374:10;3064:22;3056:67;;;;-1:-1:-1;;;3056:67:0;;;;;;;:::i;:::-;;;;;;;;;16641:12:::1;:28:::0;;;16680:12:::1;:28:::0;;;16719:6:::1;:16:::0;;;16757:45:::1;16728:7:::0;16757:32:::1;16656:13:::0;16695;16757:17:::1;:32::i;:::-;:36:::0;::::1;:45::i;:::-;16746:8;:56:::0;16813:14:::1;:32:::0;;;16875:18:::1;16892:1;16830:15:::0;16875:18:::1;:::i;:::-;16864:8;;:29;16856:71;;;::::0;-1:-1:-1;;;16856:71:0;;7074:2:1;16856:71:0::1;::::0;::::1;7056:21:1::0;7113:2;7093:18;;;7086:30;7152:31;7132:18;;;7125:59;7201:18;;16856:71:0::1;6872:353:1::0;16856:71:0::1;16495:441:::0;;;;:::o;16944:176::-;3064:6;;-1:-1:-1;;;;;3064:6:0;2374:10;3064:22;3056:67;;;;-1:-1:-1;;;3056:67:0;;;;;;;:::i;:::-;17036:11:::1;:22:::0;;-1:-1:-1;;;;17036:22:0::1;-1:-1:-1::0;;;17036:22:0;::::1;;;;::::0;;17096:15:::1;5443:1;17096:2;:15;:::i;:::-;17085:27;::::0;:7;:27:::1;:::i;:::-;17069:13;:43:::0;-1:-1:-1;;16944:176:0:o;8726:122::-;8781:4;8805:35;8813:7;-1:-1:-1;;8805:7:0;:35::i;:::-;8798:42;8726:122;-1:-1:-1;;8726:122:0:o;8502:216::-;8606:10;8577:4;8594:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;8594:32:0;;;;;;;;;;:41;;;8651:37;8577:4;;8594:32;;8651:37;;;;8629:6;1120:25:1;;1108:2;1093:18;;974:177;8651:37:0;;;;;;;;-1:-1:-1;8706:4:0;8502:216;;;;:::o;17457:150::-;17537:4;17593:6;17561:29;17581:8;17561:19;:29::i;:::-;:38;;17457:150;-1:-1:-1;;;17457:150:0:o;9020:370::-;-1:-1:-1;;;;;9140:19:0;;9120:4;9140:19;;;:11;:19;;;;;;;;9160:10;9140:31;;;;;;;;-1:-1:-1;;9140:52:0;9137:186;;9242:69;;;;;;;;;;;-1:-1:-1;;;9242:69:0;;;;;;;;-1:-1:-1;;;;;9242:19:0;;-1:-1:-1;9242:19:0;;;:11;:19;;;;;9262:10;9242:31;;;;;;;;;;:69;;9278:6;;9242:35;:69::i;:::-;-1:-1:-1;;;;;9208:19:0;;;;;;:11;:19;;;;;;;;9228:10;9208:31;;;;;;;:103;9137:186;9342:40;9356:6;9364:9;9375:6;9342:13;:40::i;:::-;9335:47;;9020:370;;;;;;:::o;17132:142::-;17260:4;;-1:-1:-1;;;;;17260:4:0;17185:7;8334:18;;;:9;:18;;;;;;17212:54;;17239:4;;-1:-1:-1;;;;;17239:4:0;8316:7;8334:18;;;:9;:18;;;;;;17212:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;17205:61;;17132:142;:::o;14280:358::-;3064:6;;-1:-1:-1;;;;;3064:6:0;2374:10;3064:22;3056:67;;;;-1:-1:-1;;;3056:67:0;;;;;;;:::i;:::-;14344:1:::1;14329:12;:16:::0;;;14371:1:::1;14356:12;:16:::0;;;14383:6:::1;:10:::0;;;14415:27:::1;::::0;14344:1;;14415:27:::1;:::i;:::-;:36;;;;:::i;:::-;14404:8;:47:::0;14479:3:::1;14462:14;:20:::0;;;14493:13:::1;:19:::0;;;14523:14:::1;:20:::0;;;14554:18:::1;:24:::0;14605:12:::1;::::0;;14624:5:::1;::::0;14605:16:::1;::::0;:12;:16:::1;:::i;:::-;:24;;;;:::i;:::-;14589:13;:40:::0;14280:358::o;12866:176::-;3064:6;;-1:-1:-1;;;;;3064:6:0;2374:10;3064:22;3056:67;;;;-1:-1:-1;;;3056:67:0;;;;;;;:::i;:::-;12961:1:::1;12945:12;:17;;12937:26;;;::::0;::::1;;13023:3;13006:12;12991;;:27;;;;:::i;:::-;12990:36;;;;:::i;:::-;12975:12;:51:::0;-1:-1:-1;12866:176:0:o;12669:189::-;3064:6;;-1:-1:-1;;;;;3064:6:0;2374:10;3064:22;3056:67;;;;-1:-1:-1;;;3056:67:0;;;;;;;:::i;:::-;12772:1:::1;12754:14;:19;;12746:28;;;::::0;::::1;;12839:3;12820:14;12805:12;;:29;;;;:::i;:::-;12804:38;;;;:::i;:::-;12786:15;:56:::0;-1:-1:-1;12669:189:0:o;3151:148::-;3064:6;;-1:-1:-1;;;;;3064:6:0;2374:10;3064:22;3056:67;;;;-1:-1:-1;;;3056:67:0;;;;;;;:::i;:::-;3258:1:::1;3242:6:::0;;3221:40:::1;::::0;-1:-1:-1;;;;;3242:6:0;;::::1;::::0;3221:40:::1;::::0;3258:1;;3221:40:::1;3289:1;3272:19:::0;;-1:-1:-1;;;;;;3272:19:0::1;::::0;;3151:148::o;13526:308::-;13646:10;13605:4;13630:27;;;:15;:27;;;;;;;;13622:36;;;;;;13669:6;13679:1;13669:11;13666:95;;13705:44;;-1:-1:-1;;;13705:44:0;;13743:4;13705:44;;;3635:51:1;-1:-1:-1;;;;;13705:29:0;;;;;3608:18:1;;13705:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13696:53;;13666:95;13778:48;;-1:-1:-1;;;13778:48:0;;13807:10;13778:48;;;9279:51:1;9346:18;;;9339:34;;;-1:-1:-1;;;;;13778:28:0;;;;;9252:18:1;;13778:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13050:147::-;13115:10;13099:27;;;;:15;:27;;;;;;;;13091:36;;;;;;13138:51;;13146:10;;13167:21;13138:51;;;;;;;;;13167:21;13146:10;13138:51;;;;;;;;;;;;;;;;;;;;;13050:147::o;16367:120::-;3064:6;;-1:-1:-1;;;;;3064:6:0;2374:10;3064:22;3056:67;;;;-1:-1:-1;;;3056:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16447:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;16447:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16367:120::o;8856:156::-;8936:4;8960:44;8974:10;8986:9;8997:6;8960:13;:44::i;13327:191::-;3064:6;;-1:-1:-1;;;;;3064:6:0;2374:10;3064:22;3056:67;;;;-1:-1:-1;;;3056:67:0;;;;;;;:::i;:::-;13418:9:::1;13414:97;13436:8;:15;13432:1;:19;13414:97;;;13494:5;13472:6;:19;13479:8;13488:1;13479:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;13472:19:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;13472:19:0;:27;;-1:-1:-1;;13472:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13453:3;::::1;::::0;::::1;:::i;:::-;;;;13414:97;;;;13327:191:::0;;:::o;16202:157::-;3064:6;;-1:-1:-1;;;;;3064:6:0;2374:10;3064:22;3056:67;;;;-1:-1:-1;;;3056:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16280:19:0;;::::1;;::::0;;;:11:::1;:19;::::0;;;;;;;:28;;;::::1;;-1:-1:-1::0;;16280:28:0;;::::1;::::0;::::1;::::0;;;16319:15:::1;:23:::0;;;;;;:32;;;;::::1;;::::0;;16202:157::o;13842:198::-;3064:6;;-1:-1:-1;;;;;3064:6:0;2374:10;3064:22;3056:67;;;;-1:-1:-1;;;3056:67:0;;;;;;;:::i;:::-;13934:14:::1;:22:::0;;;;13967:13:::1;:20:::0;;;;13998:18:::1;:27:::0;13842:198::o;14048:224::-;3064:6;;-1:-1:-1;;;;;3064:6:0;2374:10;3064:22;3056:67;;;;-1:-1:-1;;;3056:67:0;;;;;;;:::i;:::-;14144:11:::1;:18:::0;;-1:-1:-1;;;;14144:18:0::1;-1:-1:-1::0;;;14144:18:0::1;::::0;;14173:13:::1;:20:::0;;;;14204:14:::1;:22:::0;14144:11:::1;14237:27:::0;14048:224::o;12414:71::-;3064:6;;-1:-1:-1;;;;;3064:6:0;2374:10;3064:22;3056:67;;;;-1:-1:-1;;;3056:67:0;;;;;;;:::i;:::-;12467:10:::1;:8;:10::i;:::-;12414:71::o:0;17282:167::-;17350:7;17377:64;17418:22;:20;:22::i;:::-;17400:4;;-1:-1:-1;;;;;17400:4:0;8316:7;8334:18;;;:9;:18;;;;;;17377:36;;17390:22;;17410:1;;17390:15;:19;;:22::i;:::-;17377:8;;:12;:36::i;:::-;:40;;:64::i;12208:197::-;12337:14;;12297:21;;-1:-1:-1;;;;;12337:14:0;12329:68;12393:3;12362:28;12374:16;12297:21;12362:28;:::i;:::-;:34;;;;:::i;:::-;12329:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13205:110;3064:6;;-1:-1:-1;;;;;3064:6:0;2374:10;3064:22;3056:67;;;;-1:-1:-1;;;3056:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13284:15:0;;;::::1;;::::0;;;:6:::1;:15;::::0;;;;:23;;-1:-1:-1;;13284:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13205:110::o;3307:244::-;3064:6;;-1:-1:-1;;;;;3064:6:0;2374:10;3064:22;3056:67;;;;-1:-1:-1;;;3056:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3396:22:0;::::1;3388:73;;;::::0;-1:-1:-1;;;3388:73:0;;10108:2:1;3388:73:0::1;::::0;::::1;10090:21:1::0;10147:2;10127:18;;;10120:30;10186:34;10166:18;;;10159:62;-1:-1:-1;;;10237:18:1;;;10230:36;10283:19;;3388:73:0::1;9906:402:1::0;3388:73:0::1;3498:6;::::0;;3477:38:::1;::::0;-1:-1:-1;;;;;3477:38:0;;::::1;::::0;3498:6;::::1;::::0;3477:38:::1;::::0;::::1;3526:6;:17:::0;;-1:-1:-1;;;;;;3526:17:0::1;-1:-1:-1::0;;;;;3526:17:0;;;::::1;::::0;;;::::1;::::0;;3307:244::o;12493:168::-;3064:6;;-1:-1:-1;;;;;3064:6:0;2374:10;3064:22;3056:67;;;;-1:-1:-1;;;3056:67:0;;;;;;;:::i;:::-;12582:15:::1;5443:1;12582:2;:15;:::i;:::-;12569:29;::::0;:9:::1;:29;:::i;:::-;12551:15;:47:::0;12637:15:::1;5443:1;12637:2;:15;:::i;:::-;12624:29;::::0;:9:::1;:29;:::i;:::-;12609:12;:44:::0;12493:168::o;209:181::-;267:7;;299:5;303:1;299;:5;:::i;:::-;287:17;;328:1;323;:6;;315:46;;;;-1:-1:-1;;;315:46:0;;10515:2:1;315:46:0;;;10497:21:1;10554:2;10534:18;;;10527:30;10593:29;10573:18;;;10566:57;10640:18;;315:46:0;10313:351:1;538:192:0;624:7;660:12;652:6;;;;644:29;;;;-1:-1:-1;;;644:29:0;;;;;;;;:::i;:::-;-1:-1:-1;684:9:0;696:5;700:1;696;:5;:::i;:::-;684:17;538:192;-1:-1:-1;;;;;538:192:0:o;9398:1284::-;-1:-1:-1;;;;;9516:14:0;;9490:4;9516:14;;;:6;:14;;;;;;;;9515:15;:37;;;;-1:-1:-1;;;;;;9535:17:0;;;;;;:6;:17;;;;;;;;9534:18;9515:37;9507:63;;;;-1:-1:-1;;;9507:63:0;;11004:2:1;9507:63:0;;;10986:21:1;11043:2;11023:18;;;11016:30;-1:-1:-1;;;11062:18:1;;;11055:43;11115:18;;9507:63:0;10802:337:1;9507:63:0;9586:6;;;;9583:63;;;9602:41;9617:6;9625:9;9636:6;9602:14;:41::i;:::-;9595:48;;;;9583:63;-1:-1:-1;;;;;9662:22:0;;;;;;:14;:22;;;;;;;;9661:23;:53;;;;-1:-1:-1;;;;;;9689:25:0;;;;;;:14;:25;;;;;;;;9688:26;9661:53;9658:130;;;9738:11;;-1:-1:-1;;;9738:11:0;;;;9730:43;;;;-1:-1:-1;;;9730:43:0;;11346:2:1;9730:43:0;;;11328:21:1;11385:2;11365:18;;;11358:30;-1:-1:-1;;;11404:18:1;;;11397:50;11464:18;;9730:43:0;11144:344:1;9730:43:0;-1:-1:-1;;;;;9813:22:0;;;;;;:14;:22;;;;;;;;9812:23;:53;;;;-1:-1:-1;;;;;;9839:26:0;;9860:4;9839:26;;9812:53;:84;;;;-1:-1:-1;9891:4:0;;-1:-1:-1;;;;;9870:26:0;;;9891:4;;9870:26;;9812:84;:105;;;;-1:-1:-1;9913:4:0;;-1:-1:-1;;;;;9900:17:0;;;9913:4;;9900:17;;9812:105;:136;;;;-1:-1:-1;9934:14:0;;-1:-1:-1;;;;;9921:27:0;;;9934:14;;9921:27;;9812:136;:173;;;;-1:-1:-1;9965:20:0;;-1:-1:-1;;;;;9952:33:0;;;9965:20;;9952:33;;9812:173;:204;;;;-1:-1:-1;;;;;;9990:26:0;;;;;;:15;:26;;;;;;;;9989:27;9812:204;9808:396;;;-1:-1:-1;;;;;8334:18:0;;10032;8334;;;:9;:18;;;;;;10121:15;;10097:19;10110:6;8334:18;10097:19;:::i;:::-;10096:40;;10088:114;;;;-1:-1:-1;;;10088:114:0;;11695:2:1;10088:114:0;;;11677:21:1;11734:2;11714:18;;;11707:30;11773:34;11753:18;;;11746:62;11844:32;11824:18;;;11817:60;11894:19;;10088:114:0;11493:426:1;10088:114:0;10017:187;9808:396;10216:28;10229:6;10237;10216:12;:28::i;:::-;10261:16;:14;:16::i;:::-;10258:35;;;10280:10;:8;:10::i;:::-;10333:53;;;;;;;;;;;-1:-1:-1;;;10333:53:0;;;;;;;;-1:-1:-1;;;;;10333:17:0;;-1:-1:-1;10333:17:0;;;:9;:17;;;;;;;;:53;;10355:6;;10333:21;:53::i;:::-;-1:-1:-1;;;;;10313:17:0;;;;;;:9;:17;;;;;;;;:73;;;;10425:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;10448:22:0;;;;;;:11;:22;;;;;;;;10425:45;10424:93;;10483:34;10491:6;10499;10507:9;10483:7;:34::i;:::-;10424:93;;;10474:6;10424:93;-1:-1:-1;;;;;10551:20:0;;;;;;:9;:20;;;;;;10399:118;;-1:-1:-1;10551:40:0;;10399:118;10551:24;:40::i;:::-;-1:-1:-1;;;;;10528:20:0;;;;;;;:9;:20;;;;;;;:63;;;;10609:43;;;;;;;;;;10637:14;1120:25:1;;1108:2;1093:18;;974:177;10609:43:0;;;;;;;;-1:-1:-1;10670:4:0;;9398:1284;-1:-1:-1;;;;9398:1284:0:o;396:136::-;454:7;481:43;485:1;488;481:43;;;;;;;;;;;;;;;;;:3;:43::i;14654:1540::-;6745:6;:13;;-1:-1:-1;;6745:13:0;6754:4;6745:13;;;14745:15:::1;::::0;14762:26:::1;::::0;6745:6;;14729:60:::1;::::0;:15:::1;:60::i;:::-;:79;;14796:12;;14729:79;;;14792:1;14729:79;14699:109;;14815:23;14841:59;14898:1;14841:52;14884:8;;14841:38;14859:19;14841:13;;:17;;:38;;;;:::i;:59::-;14815:85;;14907:20;14930:34;14948:15;14930:13;;:17;;:34;;;;:::i;:::-;14997:16;::::0;;15011:1:::1;14997:16:::0;;;;;::::1;::::0;;14907:57;;-1:-1:-1;14973:21:0::1;::::0;14997:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;14997:16:0::1;14973:40;;15038:4;15020;15025:1;15020:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15020:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;15060:4:::1;::::0;15050:7;;15060:4;::::1;::::0;15050;;15060;;15050:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;15050:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;15127:6:::1;::::0;:164:::1;::::0;-1:-1:-1;;;15127:164:0;;15097:21:::1;::::0;15127:6;;;::::1;::::0;:57:::1;::::0;:164:::1;::::0;15195:12;;15073:21:::1;::::0;15230:4;;15253::::1;::::0;15269:15:::1;::::0;15127:164:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15300:17;15320:40;15346:13;15320:21;:25;;:40;;;;:::i;:::-;15300:60:::0;-1:-1:-1;15369:19:0::1;15391:40;15404:26;:19:::0;15428:1:::1;15404:23;:26::i;:::-;15391:8;::::0;;:12:::1;:40::i;:::-;15369:62:::0;-1:-1:-1;15440:26:0::1;15469:58;15525:1;15469:51;15369:62:::0;15469:51;:9;15483:19;15469:13:::1;:34::i;:58::-;15440:87;;15534:26;15563:44;15595:11;15563:27;15577:12;;15563:9;:13;;:27;;;;:::i;:44::-;15534:73;;15614:20;15637:38;15663:11;15637:21;15651:6;;15637:9;:13;;:21;;;;:::i;:38::-;15714:20;::::0;15706:65:::1;::::0;15614:61;;-1:-1:-1;15686:15:0::1;::::0;-1:-1:-1;;;;;15714:20:0;;::::1;::::0;15748:18;;15686:15;15706:65;15686:15;15706:65;15748:18;15714:20;15706:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;15802:14:0::1;::::0;15794:53:::1;::::0;15685:86;;-1:-1:-1;;;;;;15802:14:0::1;::::0;15830:12;;15794:53:::1;::::0;;;15830:12;15802:14;15794:53:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;15778:69:0;;-1:-1:-1;;15860:19:0;;15857:330:::1;;15891:6;::::0;16045:21:::1;::::0;15891:216:::1;::::0;-1:-1:-1;;;15891:216:0;;15963:4:::1;15891:216;::::0;::::1;13460:34:1::0;13510:18;;;13503:34;;;15891:6:0::1;13553:18:1::0;;;13546:34;;;13596:18;;;13589:34;-1:-1:-1;;;;;16045:21:0;;::::1;13639:19:1::0;;;13632:44;16081:15:0::1;13692:19:1::0;;;13685:35;15891:6:0;::::1;::::0;:22:::1;::::0;15921:18;;13394:19:1;;15891:216:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;16123:48:0::1;::::0;;14216:25:1;;;14272:2;14257:18;;14250:34;;;16123:48:0::1;::::0;-1:-1:-1;14189:18:1;16123:48:0::1;;;;;;;15857:330;-1:-1:-1::0;;6763:6:0;:14;;-1:-1:-1;;6763:14:0;;;-1:-1:-1;;;;;;;;;14654:1540:0:o;736:250::-;794:7;818:1;823;818:6;814:47;;-1:-1:-1;848:1:0;841:8;;814:47;873:9;885:5;889:1;885;:5;:::i;:::-;873:17;-1:-1:-1;918:1:0;909:5;913:1;873:17;909:5;:::i;:::-;:10;901:56;;;;-1:-1:-1;;;901:56:0;;14497:2:1;901:56:0;;;14479:21:1;14536:2;14516:18;;;14509:30;14575:34;14555:18;;;14548:62;-1:-1:-1;;;14626:18:1;;;14619:31;14667:19;;901:56:0;14295:397:1;992:132:0;1050:7;1077:39;1081:1;1084;1077:39;;;;;;;;;;;;;;;;;:3;:39::i;10694:330::-;10824:53;;;;;;;;;;;-1:-1:-1;;;10824:53:0;;;;;;;;-1:-1:-1;;;;;10824:17:0;;10787:4;10824:17;;;:9;:17;;;;;;;:53;;10846:6;;10824:21;:53::i;:::-;-1:-1:-1;;;;;10804:17:0;;;;;;;:9;:17;;;;;;:73;;;;10911:20;;;;;;;:32;;10936:6;10911:24;:32::i;:::-;-1:-1:-1;;;;;10888:20:0;;;;;;;:9;:20;;;;;;;:55;;;;10959:35;;;;;;;;;;10987:6;1120:25:1;;1108:2;1093:18;;974:177;10959:35:0;;;;;;;;-1:-1:-1;11012:4:0;10694:330;;;;;:::o;11032:166::-;11129:12;;11119:6;:22;;:49;;;-1:-1:-1;;;;;;11145:23:0;;;;;;:15;:23;;;;;;;;11119:49;11111:79;;;;-1:-1:-1;;;11111:79:0;;14899:2:1;11111:79:0;;;14881:21:1;14938:2;14918:18;;;14911:30;-1:-1:-1;;;14957:18:1;;;14950:47;15014:18;;11111:79:0;14697:341:1;11111:79:0;11032:166;;:::o;12003:197::-;12090:4;;12052;;-1:-1:-1;;;;;12090:4:0;12076:10;:18;;;;:38;;-1:-1:-1;12108:6:0;;;;12107:7;12076:38;:62;;;;-1:-1:-1;12127:11:0;;-1:-1:-1;;;12127:11:0;;;;12076:62;:116;;;;-1:-1:-1;;12179:13:0;;12169:4;12151:24;;;;:9;:24;;;;;;:41;;;12003:197::o;11328:667::-;11465:18;;11512:4;;11414:7;;11465:18;-1:-1:-1;;;;;11512:4:0;;;11499:17;;;;11496:154;;-1:-1:-1;11546:14:0;;11496:154;;;11591:4;;-1:-1:-1;;;;;11591:4:0;;;11581:14;;;;11578:72;;-1:-1:-1;11625:13:0;;11578:72;11662:17;11682:62;11723:14;;11740:3;11723:20;;;;:::i;:::-;11682:36;11707:10;11682:20;11693:8;;11682:6;:10;;:20;;;;:::i;:62::-;11847:4;11755:22;11829:24;;;:9;:24;;;;;;11662:82;;-1:-1:-1;11662:82:0;;11829:44;;11662:82;11829:28;:44::i;:::-;11820:4;11802:24;;;;:9;:24;;;;;;;:71;;;;11889:47;;-1:-1:-1;;;;;11889:47:0;;;;;;;11921:14;1120:25:1;;1108:2;1093:18;;974:177;11889:47:0;;;;;;;;11966:21;:6;11977:9;11966:10;:21::i;:::-;11959:28;11328:667;-1:-1:-1;;;;;;;11328:667:0:o;1130:189::-;1216:7;1251:12;1244:5;1236:28;;;;-1:-1:-1;;;1236:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1275:9:0;1287:5;1291:1;1287;:5;:::i;14:385:1:-;100:6;108;116;124;177:3;165:9;156:7;152:23;148:33;145:53;;;194:1;191;184:12;145:53;-1:-1:-1;;217:23:1;;;287:2;272:18;;259:32;;-1:-1:-1;338:2:1;323:18;;310:32;;389:2;374:18;361:32;;-1:-1:-1;14:385:1;-1:-1:-1;14:385:1:o;404:118::-;490:5;483:13;476:21;469:5;466:32;456:60;;512:1;509;502:12;527:128;592:20;;621:28;592:20;621:28;:::i;:::-;527:128;;;:::o;660:309::-;725:6;733;786:2;774:9;765:7;761:23;757:32;754:52;;;802:1;799;792:12;754:52;841:9;828:23;860:28;882:5;860:28;:::i;:::-;907:5;959:2;944:18;;;;931:32;;-1:-1:-1;;;660:309:1:o;1156:173::-;1224:20;;-1:-1:-1;;;;;1273:31:1;;1263:42;;1253:70;;1319:1;1316;1309:12;1334:186;1393:6;1446:2;1434:9;1425:7;1421:23;1417:32;1414:52;;;1462:1;1459;1452:12;1414:52;1485:29;1504:9;1485:29;:::i;1717:548::-;1829:4;1858:2;1887;1876:9;1869:21;1919:6;1913:13;1962:6;1957:2;1946:9;1942:18;1935:34;1987:1;1997:140;2011:6;2008:1;2005:13;1997:140;;;2106:14;;;2102:23;;2096:30;2072:17;;;2091:2;2068:26;2061:66;2026:10;;1997:140;;;2001:3;2186:1;2181:2;2172:6;2161:9;2157:22;2153:31;2146:42;2256:2;2249;2245:7;2240:2;2232:6;2228:15;2224:29;2213:9;2209:45;2205:54;2197:62;;;;1717:548;;;;:::o;2270:254::-;2338:6;2346;2399:2;2387:9;2378:7;2374:23;2370:32;2367:52;;;2415:1;2412;2405:12;2367:52;2438:29;2457:9;2438:29;:::i;2529:248::-;2597:6;2605;2658:2;2646:9;2637:7;2633:23;2629:32;2626:52;;;2674:1;2671;2664:12;2626:52;-1:-1:-1;;2697:23:1;;;2767:2;2752:18;;;2739:32;;-1:-1:-1;2529:248:1:o;2782:328::-;2859:6;2867;2875;2928:2;2916:9;2907:7;2903:23;2899:32;2896:52;;;2944:1;2941;2934:12;2896:52;2967:29;2986:9;2967:29;:::i;:::-;2957:39;;3015:38;3049:2;3038:9;3034:18;3015:38;:::i;:::-;3005:48;;3100:2;3089:9;3085:18;3072:32;3062:42;;2782:328;;;;;:::o;3304:180::-;3363:6;3416:2;3404:9;3395:7;3391:23;3387:32;3384:52;;;3432:1;3429;3422:12;3384:52;-1:-1:-1;3455:23:1;;3304:180;-1:-1:-1;3304:180:1:o;3697:315::-;3762:6;3770;3823:2;3811:9;3802:7;3798:23;3794:32;3791:52;;;3839:1;3836;3829:12;3791:52;3862:29;3881:9;3862:29;:::i;:::-;3852:39;;3941:2;3930:9;3926:18;3913:32;3954:28;3976:5;3954:28;:::i;:::-;4001:5;3991:15;;;3697:315;;;;;:::o;4017:127::-;4078:10;4073:3;4069:20;4066:1;4059:31;4109:4;4106:1;4099:15;4133:4;4130:1;4123:15;4149:1191;4239:6;4247;4300:2;4288:9;4279:7;4275:23;4271:32;4268:52;;;4316:1;4313;4306:12;4268:52;4356:9;4343:23;4385:18;4426:2;4418:6;4415:14;4412:34;;;4442:1;4439;4432:12;4412:34;4480:6;4469:9;4465:22;4455:32;;4525:7;4518:4;4514:2;4510:13;4506:27;4496:55;;4547:1;4544;4537:12;4496:55;4583:2;4570:16;4605:4;4628:2;4624;4621:10;4618:36;;;4634:18;;:::i;:::-;4680:2;4677:1;4673:10;4712:2;4706:9;4775:2;4771:7;4766:2;4762;4758:11;4754:25;4746:6;4742:38;4830:6;4818:10;4815:22;4810:2;4798:10;4795:18;4792:46;4789:72;;;4841:18;;:::i;:::-;4877:2;4870:22;4927:18;;;4961:15;;;;-1:-1:-1;5003:11:1;;;4999:20;;;5031:19;;;5028:39;;;5063:1;5060;5053:12;5028:39;5087:11;;;;5107:148;5123:6;5118:3;5115:15;5107:148;;;5189:23;5208:3;5189:23;:::i;:::-;5177:36;;5140:12;;;;5233;;;;5107:148;;;5274:6;-1:-1:-1;5299:35:1;;-1:-1:-1;5315:18:1;;;5299:35;:::i;:::-;5289:45;;;;;;4149:1191;;;;;:::o;5345:316::-;5422:6;5430;5438;5491:2;5479:9;5470:7;5466:23;5462:32;5459:52;;;5507:1;5504;5497:12;5459:52;-1:-1:-1;;5530:23:1;;;5600:2;5585:18;;5572:32;;-1:-1:-1;5651:2:1;5636:18;;;5623:32;;5345:316;-1:-1:-1;5345:316:1:o;5666:260::-;5734:6;5742;5795:2;5783:9;5774:7;5770:23;5766:32;5763:52;;;5811:1;5808;5801:12;5763:52;5834:29;5853:9;5834:29;:::i;:::-;5824:39;;5882:38;5916:2;5905:9;5901:18;5882:38;:::i;:::-;5872:48;;5666:260;;;;;:::o;6157:356::-;6359:2;6341:21;;;6378:18;;;6371:30;6437:34;6432:2;6417:18;;6410:62;6504:2;6489:18;;6157:356::o;6518:127::-;6579:10;6574:3;6570:20;6567:1;6560:31;6610:4;6607:1;6600:15;6634:4;6631:1;6624:15;6650:217;6690:1;6716;6706:132;;6760:10;6755:3;6751:20;6748:1;6741:31;6795:4;6792:1;6785:15;6823:4;6820:1;6813:15;6706:132;-1:-1:-1;6852:9:1;;6650:217::o;7230:422::-;7319:1;7362:5;7319:1;7376:270;7397:7;7387:8;7384:21;7376:270;;;7456:4;7452:1;7448:6;7444:17;7438:4;7435:27;7432:53;;;7465:18;;:::i;:::-;7515:7;7505:8;7501:22;7498:55;;;7535:16;;;;7498:55;7614:22;;;;7574:15;;;;7376:270;;;7380:3;7230:422;;;;;:::o;7657:806::-;7706:5;7736:8;7726:80;;-1:-1:-1;7777:1:1;7791:5;;7726:80;7825:4;7815:76;;-1:-1:-1;7862:1:1;7876:5;;7815:76;7907:4;7925:1;7920:59;;;;7993:1;7988:130;;;;7900:218;;7920:59;7950:1;7941:10;;7964:5;;;7988:130;8025:3;8015:8;8012:17;8009:43;;;8032:18;;:::i;:::-;-1:-1:-1;;8088:1:1;8074:16;;8103:5;;7900:218;;8202:2;8192:8;8189:16;8183:3;8177:4;8174:13;8170:36;8164:2;8154:8;8151:16;8146:2;8140:4;8137:12;8133:35;8130:77;8127:159;;;-1:-1:-1;8239:19:1;;;8271:5;;8127:159;8318:34;8343:8;8337:4;8318:34;:::i;:::-;8388:6;8384:1;8380:6;8376:19;8367:7;8364:32;8361:58;;;8399:18;;:::i;:::-;8437:20;;7657:806;-1:-1:-1;;;7657:806:1:o;8468:140::-;8526:5;8555:47;8596:4;8586:8;8582:19;8576:4;8555:47;:::i;8613:168::-;8686:9;;;8717;;8734:15;;;8728:22;;8714:37;8704:71;;8755:18;;:::i;8786:125::-;8851:9;;;8872:10;;;8869:36;;;8885:18;;:::i;8916:184::-;8986:6;9039:2;9027:9;9018:7;9014:23;9010:32;9007:52;;;9055:1;9052;9045:12;9007:52;-1:-1:-1;9078:16:1;;8916:184;-1:-1:-1;8916:184:1:o;9384:245::-;9451:6;9504:2;9492:9;9483:7;9479:23;9475:32;9472:52;;;9520:1;9517;9510:12;9472:52;9552:9;9546:16;9571:28;9593:5;9571:28;:::i;9634:127::-;9695:10;9690:3;9686:20;9683:1;9676:31;9726:4;9723:1;9716:15;9750:4;9747:1;9740:15;9766:135;9805:3;9826:17;;;9823:43;;9846:18;;:::i;:::-;-1:-1:-1;9893:1:1;9882:13;;9766:135::o;10669:128::-;10736:9;;;10757:11;;;10754:37;;;10771:18;;:::i;11924:980::-;12186:4;12234:3;12223:9;12219:19;12265:6;12254:9;12247:25;12291:2;12329:6;12324:2;12313:9;12309:18;12302:34;12372:3;12367:2;12356:9;12352:18;12345:31;12396:6;12431;12425:13;12462:6;12454;12447:22;12500:3;12489:9;12485:19;12478:26;;12539:2;12531:6;12527:15;12513:29;;12560:1;12570:195;12584:6;12581:1;12578:13;12570:195;;;12649:13;;-1:-1:-1;;;;;12645:39:1;12633:52;;12740:15;;;;12705:12;;;;12681:1;12599:9;12570:195;;;-1:-1:-1;;;;;;;12821:32:1;;;;12816:2;12801:18;;12794:60;-1:-1:-1;;;12885:3:1;12870:19;12863:35;12782:3;11924:980;-1:-1:-1;;;11924:980:1:o;13731:306::-;13819:6;13827;13835;13888:2;13876:9;13867:7;13863:23;13859:32;13856:52;;;13904:1;13901;13894:12;13856:52;13933:9;13927:16;13917:26;;13983:2;13972:9;13968:18;13962:25;13952:35;;14027:2;14016:9;14012:18;14006:25;13996:35;;13731:306;;;;;:::o
Swarm Source
ipfs://d99d2556588547a3aa6b1fc16dcc5104a7f5604be01c3bba763c28a390005cd1
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.