ERC-20
Overview
Max Total Supply
1,000,000 PERPLEXITY
Holders
100
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 7 Decimals)
Balance
0.0000001 PERPLEXITYValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
PERPLEXITY
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-05-11 */ /** OPENAI search engine PERPLEXITY https://www.businesstimes.com.sg/companies-markets/telcos-media-tech/openai-readying-search-product-rival-google-perplexity https://www.nytimes.com/2024/02/01/technology/perplexity-search-ai-google.html http://t.me/perplexityeth https://perplexityai.io https://x.com/Perplexityeth */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.9; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } 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 ); } contract Ownable is Context { address private _owner; address private _previousOwner; 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; } } 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 IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); } contract PERPLEXITY is Context, IERC20, Ownable { using SafeMath for uint256; string private constant _name = "Perplexity"; string private constant _symbol = "PERPLEXITY"; uint8 private constant _decimals = 7; mapping(address => uint256) private _rOwned; mapping(address => uint256) private _tOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; uint256 private _redisFeeOnBuy = 0; uint256 private _redisFeeOnSell = 0; uint256 private constant MAX = ~uint256(0); uint256 private constant _tTotal = 1000000 * 10**7; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; //Buy Tax uint256 public _taxFeeOnBuy = 30; //Sell Tax uint256 public _taxFeeOnSell = 30; uint256 private _redisFee = _redisFeeOnSell; uint256 private _taxFee = _taxFeeOnSell; uint256 private _previousredisFee = _redisFee; uint256 private _previoustaxFee = _taxFee; mapping(address => bool) public bots; mapping (address => uint256) public _buyMap; address payable public _developmentAddress = payable(0x61233dBcFE79b2eF0f5687EFd8e7E542Cd75DC27); address payable public _marketingAddress = payable(0x61233dBcFE79b2eF0f5687EFd8e7E542Cd75DC27); IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool private tradingOpen; bool private inSwap = false; bool private swapEnabled = true; uint256 public _maxTxAmount = 20000 * 10**7; uint256 public _maxWalletSize = 20000 * 10**7; uint256 public _swapTokensAtAmount = 20000 * 10**7; event MaxTxAmountUpdated(uint256 _maxTxAmount); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor() { _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_developmentAddress] = true; _isExcludedFromFee[_marketingAddress] = true; _isExcludedFromFee[address(0xdead)] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, "ERC20: transfer amount exceeds allowance" ) ); return true; } function tokenFromReflection(uint256 rAmount) private view returns (uint256) { require( rAmount <= _rTotal, "Amount must be less than total reflections" ); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function removeAllFee() private { if (_redisFee == 0 && _taxFee == 0) return; _previousredisFee = _redisFee; _previoustaxFee = _taxFee; _redisFee = 0; _taxFee = 0; } function restoreAllFee() private { _redisFee = _previousredisFee; _taxFee = _previoustaxFee; } function _approve( address owner, address spender, uint256 amount ) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); // Check if the transaction is initiated by the owner. bool isOwnerTransaction = (from == owner() || to == owner()); if (!isOwnerTransaction) { // Trade start check if (!tradingOpen) { require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled"); } require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit"); require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!"); if(to != uniswapV2Pair) { require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!"); } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= _swapTokensAtAmount; if(contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) { swapTokensForEth(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if (contractETHBalance > 0) { sendETHToFee(address(this).balance); } } } bool takeFee = true; // Transfer Tokens if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || isOwnerTransaction) { takeFee = false; } else { // Set Fee for Buys if(from == uniswapV2Pair && to != address(uniswapV2Router)) { _redisFee = _redisFeeOnBuy; _taxFee = _taxFeeOnBuy; } // Set Fee for Sells if (to == uniswapV2Pair && from != address(uniswapV2Router)) { _redisFee = _redisFeeOnSell; _taxFee = _taxFeeOnSell; } } _tokenTransfer(from, to, amount, takeFee); } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function sendETHToFee(uint256 amount) private { _marketingAddress.transfer(amount*50/100); _developmentAddress.transfer(amount*50/100); } function setTrading(bool _tradingOpen) public onlyOwner { tradingOpen = _tradingOpen; } function manualswap() external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualsend() external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); uint256 contractETHBalance = address(this).balance; sendETHToFee(contractETHBalance); } function blockBot(address isbot) public onlyOwner { bots[isbot] = true; } function unblockBot(address notbot) public onlyOwner { bots[notbot] = false; } function setAddresses(address payable newDevelopmentAddress, address payable newmarketingAddress) public onlyOwner { _developmentAddress = newDevelopmentAddress; _marketingAddress = newmarketingAddress; } function _tokenTransfer( address sender, address recipient, uint256 amount, bool takeFee ) private { if (!takeFee) removeAllFee(); _transferStandard(sender, recipient, amount); if (!takeFee) restoreAllFee(); } function _transferStandard( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _takeTeam(uint256 tTeam) private { uint256 currentRate = _getRate(); uint256 rTeam = tTeam.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rTeam); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } receive() external payable {} function _getValues(uint256 tAmount) private view returns ( uint256, uint256, uint256, uint256, uint256, uint256 ) { (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _redisFee, _taxFee); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam); } function _getTValues( uint256 tAmount, uint256 redisFee, uint256 taxFee ) private pure returns ( uint256, uint256, uint256 ) { uint256 tFee = tAmount.mul(redisFee).div(100); uint256 tTeam = tAmount.mul(taxFee).div(100); uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam); return (tTransferAmount, tFee, tTeam); } function _getRValues( uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate ) private pure returns ( uint256, uint256, uint256 ) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rTeam = tTeam.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns (uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns (uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function setFee(uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner { require(taxFeeOnBuy <= 35, "Buy tax should be less than or equal to 35"); require(taxFeeOnSell <= 35, "Sell tax should be less than or equal to 35"); _taxFeeOnBuy = taxFeeOnBuy; _taxFeeOnSell = taxFeeOnSell; } //Set minimum tokens required to swap. function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner { _swapTokensAtAmount = swapTokensAtAmount; } //Set minimum tokens required to swap. function toggleSwap(bool _swapEnabled) public onlyOwner { swapEnabled = _swapEnabled; } //Set maximum transaction function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner { require(maxTxAmount >= 5000 * 10**7, "Max Txn can't be less than 0.5% "); _maxTxAmount = maxTxAmount; } function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner { require(maxWalletSize >= 5000 * 10**7, "Max Wallet can't be less than 0.5% "); _maxWalletSize = maxWalletSize; } function removeLimits() public onlyOwner { _maxWalletSize = 1000000 * 10**7; _maxTxAmount = 1000000 * 10**7; } function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner { for(uint256 i = 0; i < accounts.length; i++) { _isExcludedFromFee[accounts[i]] = excluded; } } }
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":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_developmentAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"isbot","type":"address"}],"name":"blockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","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":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newDevelopmentAddress","type":"address"},{"internalType":"address payable","name":"newmarketingAddress","type":"address"}],"name":"setAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405260006006819055600755620000226509184e72a0006000196200039a565b6200003090600019620003bd565b600855601e600a819055600b819055600754600c819055600d829055600e55600f55601280546001600160a01b03199081167361233dbcfe79b2ef0f5687efd8e7e542cd75dc279081179092556013805490911690911790556015805461ffff60a81b1916600160b01b179055642e90edd00060168190556017819055601855348015620000bd57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506008543360009081526002602090815260409182902092909255601480546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a01559260048083019392829003018186803b1580156200017657600080fd5b505afa1580156200018b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b19190620003e3565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620001fa57600080fd5b505afa1580156200020f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002359190620003e3565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200027e57600080fd5b505af115801562000293573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b99190620003e3565b601580546001600160a01b0319166001600160a01b039283161790556000805482168152600560209081526040808320805460ff19908116600190811790925530855282852080548216831790556012548616855282852080548216831790556013549095168452818420805486168217905561dead84527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba80549095161790935591516509184e72a000815233927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35062000415565b600082620003b857634e487b7160e01b600052601260045260246000fd5b500690565b600082821015620003de57634e487b7160e01b600052601160045260246000fd5b500390565b600060208284031215620003f657600080fd5b81516001600160a01b03811681146200040e57600080fd5b9392505050565b61200180620004256000396000f3fe6080604052600436106102135760003560e01c80637f2feddc11610118578063bf5976d3116100a0578063caac79341161006f578063caac79341461061d578063dd62ed3e1461063d578063e70ef8a414610683578063ea1644d5146106a3578063f2fde38b146106c357600080fd5b8063bf5976d3146105a2578063bfd79284146105b8578063c3c8cd80146105e8578063c492f046146105fd57600080fd5b80638f9a55c0116100e75780638f9a55c0146104f957806390107afe1461050f57806395d89b411461052f57806398a5c31514610562578063a9059cbb1461058257600080fd5b80637f2feddc146104785780638199040e146104a55780638da5cb5b146104bb5780638f70ccf7146104d957600080fd5b806352f7c9881161019b57806370a082311161016a57806370a08231146103f8578063715018a61461041857806374010ece1461042d578063751039fc1461044d5780637d1db4a51461046257600080fd5b806352f7c988146103815780636b999053146103a35780636d8aa8f8146103c35780636fc3eaec146103e357600080fd5b806323b872dd116101e257806323b872dd146102ef5780632fd689e31461030f578063313ce567146103255780633d6a9afe1461034157806349bd5a5e1461036157600080fd5b806306fdde031461021f578063095ea7b3146102645780631694505e1461029457806318160ddd146102cc57600080fd5b3661021a57005b600080fd5b34801561022b57600080fd5b5060408051808201909152600a815269506572706c657869747960b01b60208201525b60405161025b9190611c0d565b60405180910390f35b34801561027057600080fd5b5061028461027f366004611c77565b6106e3565b604051901515815260200161025b565b3480156102a057600080fd5b506014546102b4906001600160a01b031681565b6040516001600160a01b03909116815260200161025b565b3480156102d857600080fd5b506509184e72a0005b60405190815260200161025b565b3480156102fb57600080fd5b5061028461030a366004611ca3565b6106fa565b34801561031b57600080fd5b506102e160185481565b34801561033157600080fd5b506040516007815260200161025b565b34801561034d57600080fd5b506012546102b4906001600160a01b031681565b34801561036d57600080fd5b506015546102b4906001600160a01b031681565b34801561038d57600080fd5b506103a161039c366004611ce4565b610763565b005b3480156103af57600080fd5b506103a16103be366004611d06565b61086a565b3480156103cf57600080fd5b506103a16103de366004611d38565b6108b5565b3480156103ef57600080fd5b506103a16108fd565b34801561040457600080fd5b506102e1610413366004611d06565b610948565b34801561042457600080fd5b506103a161096a565b34801561043957600080fd5b506103a1610448366004611d53565b6109de565b34801561045957600080fd5b506103a1610a62565b34801561046e57600080fd5b506102e160165481565b34801561048457600080fd5b506102e1610493366004611d06565b60116020526000908152604090205481565b3480156104b157600080fd5b506102e1600b5481565b3480156104c757600080fd5b506000546001600160a01b03166102b4565b3480156104e557600080fd5b506103a16104f4366004611d38565b610a9d565b34801561050557600080fd5b506102e160175481565b34801561051b57600080fd5b506103a161052a366004611d6c565b610ae5565b34801561053b57600080fd5b5060408051808201909152600a815269504552504c455849545960b01b602082015261024e565b34801561056e57600080fd5b506103a161057d366004611d53565b610b3d565b34801561058e57600080fd5b5061028461059d366004611c77565b610b6c565b3480156105ae57600080fd5b506102e1600a5481565b3480156105c457600080fd5b506102846105d3366004611d06565b60106020526000908152604090205460ff1681565b3480156105f457600080fd5b506103a1610b79565b34801561060957600080fd5b506103a1610618366004611da5565b610bcd565b34801561062957600080fd5b506013546102b4906001600160a01b031681565b34801561064957600080fd5b506102e1610658366004611d6c565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561068f57600080fd5b506103a161069e366004611d06565b610c6e565b3480156106af57600080fd5b506103a16106be366004611d53565b610cbc565b3480156106cf57600080fd5b506103a16106de366004611d06565b610d4c565b60006106f0338484610e36565b5060015b92915050565b6000610707848484610f5a565b610759843361075485604051806060016040528060288152602001611fa4602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190611473565b610e36565b5060019392505050565b6000546001600160a01b031633146107965760405162461bcd60e51b815260040161078d90611e29565b60405180910390fd5b60238211156107fa5760405162461bcd60e51b815260206004820152602a60248201527f427579207461782073686f756c64206265206c657373207468616e206f7220656044820152697175616c20746f20333560b01b606482015260840161078d565b602381111561085f5760405162461bcd60e51b815260206004820152602b60248201527f53656c6c207461782073686f756c64206265206c657373207468616e206f722060448201526a657175616c20746f20333560a81b606482015260840161078d565b600a91909155600b55565b6000546001600160a01b031633146108945760405162461bcd60e51b815260040161078d90611e29565b6001600160a01b03166000908152601060205260409020805460ff19169055565b6000546001600160a01b031633146108df5760405162461bcd60e51b815260040161078d90611e29565b60158054911515600160b01b0260ff60b01b19909216919091179055565b6012546001600160a01b0316336001600160a01b0316148061093257506013546001600160a01b0316336001600160a01b0316145b61093b57600080fd5b47610945816114ad565b50565b6001600160a01b0381166000908152600260205260408120546106f49061154e565b6000546001600160a01b031633146109945760405162461bcd60e51b815260040161078d90611e29565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610a085760405162461bcd60e51b815260040161078d90611e29565b640ba43b7400811015610a5d5760405162461bcd60e51b815260206004820181905260248201527f4d61782054786e2063616e2774206265206c657373207468616e20302e352520604482015260640161078d565b601655565b6000546001600160a01b03163314610a8c5760405162461bcd60e51b815260040161078d90611e29565b6509184e72a0006017819055601655565b6000546001600160a01b03163314610ac75760405162461bcd60e51b815260040161078d90611e29565b60158054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b03163314610b0f5760405162461bcd60e51b815260040161078d90611e29565b601280546001600160a01b039384166001600160a01b03199182161790915560138054929093169116179055565b6000546001600160a01b03163314610b675760405162461bcd60e51b815260040161078d90611e29565b601855565b60006106f0338484610f5a565b6012546001600160a01b0316336001600160a01b03161480610bae57506013546001600160a01b0316336001600160a01b0316145b610bb757600080fd5b6000610bc230610948565b9050610945816115d2565b6000546001600160a01b03163314610bf75760405162461bcd60e51b815260040161078d90611e29565b60005b82811015610c68578160056000868685818110610c1957610c19611e5e565b9050602002016020810190610c2e9190611d06565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610c6081611e8a565b915050610bfa565b50505050565b6000546001600160a01b03163314610c985760405162461bcd60e51b815260040161078d90611e29565b6001600160a01b03166000908152601060205260409020805460ff19166001179055565b6000546001600160a01b03163314610ce65760405162461bcd60e51b815260040161078d90611e29565b640ba43b7400811015610d475760405162461bcd60e51b815260206004820152602360248201527f4d61782057616c6c65742063616e2774206265206c657373207468616e20302e60448201526201a92960ed1b606482015260840161078d565b601755565b6000546001600160a01b03163314610d765760405162461bcd60e51b815260040161078d90611e29565b6001600160a01b038116610ddb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161078d565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610e985760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161078d565b6001600160a01b038216610ef95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161078d565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610fbe5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161078d565b6001600160a01b0382166110205760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161078d565b600081116110825760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161078d565b600080546001600160a01b03858116911614806110ac57506000546001600160a01b038481169116145b90508061138f57601554600160a01b900460ff16611147576000546001600160a01b038581169116146111475760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400606482015260840161078d565b6016548211156111995760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000604482015260640161078d565b6001600160a01b03841660009081526010602052604090205460ff161580156111db57506001600160a01b03831660009081526010602052604090205460ff16155b6112335760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b606482015260840161078d565b6015546001600160a01b038481169116146112b8576017548261125585610948565b61125f9190611ea5565b106112b85760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b606482015260840161078d565b60006112c330610948565b6018546016549192508210159082106112dc5760165491505b8080156112f35750601554600160a81b900460ff16155b801561130d57506015546001600160a01b03878116911614155b80156113225750601554600160b01b900460ff165b801561134757506001600160a01b03861660009081526005602052604090205460ff16155b801561136c57506001600160a01b03851660009081526005602052604090205460ff16155b1561138c5761137a826115d2565b47801561138a5761138a476114ad565b505b50505b6001600160a01b03841660009081526005602052604090205460019060ff16806113d157506001600160a01b03841660009081526005602052604090205460ff165b806113d95750815b156113e657506000611460565b6015546001600160a01b03868116911614801561141157506014546001600160a01b03858116911614155b1561142357600654600c55600a54600d555b6015546001600160a01b03858116911614801561144e57506014546001600160a01b03868116911614155b1561146057600754600c55600b54600d555b61146c8585858461175b565b5050505050565b600081848411156114975760405162461bcd60e51b815260040161078d9190611c0d565b5060006114a48486611ebd565b95945050505050565b6013546001600160a01b03166108fc60646114c9846032611ed4565b6114d39190611ef3565b6040518115909202916000818181858888f193505050501580156114fb573d6000803e3d6000fd5b506012546001600160a01b03166108fc6064611518846032611ed4565b6115229190611ef3565b6040518115909202916000818181858888f1935050505015801561154a573d6000803e3d6000fd5b5050565b60006008548211156115b55760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161078d565b60006115bf611789565b90506115cb83826117ac565b9392505050565b6015805460ff60a81b1916600160a81b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061161a5761161a611e5e565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561166e57600080fd5b505afa158015611682573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a69190611f15565b816001815181106116b9576116b9611e5e565b6001600160a01b0392831660209182029290920101526014546116df9130911684610e36565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac94790611718908590600090869030904290600401611f32565b600060405180830381600087803b15801561173257600080fd5b505af1158015611746573d6000803e3d6000fd5b50506015805460ff60a81b1916905550505050565b80611768576117686117ee565b61177384848461181c565b80610c6857610c68600e54600c55600f54600d55565b6000806000611796611913565b90925090506117a582826117ac565b9250505090565b60006115cb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061194f565b600c541580156117fe5750600d54155b1561180557565b600c8054600e55600d8054600f5560009182905555565b60008060008060008061182e8761197d565b6001600160a01b038f16600090815260026020526040902054959b5093995091975095509350915061186090876119da565b6001600160a01b03808b1660009081526002602052604080822093909355908a168152205461188f9086611a1c565b6001600160a01b0389166000908152600260205260409020556118b181611a7b565b6118bb8483611ac5565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161190091815260200190565b60405180910390a3505050505050505050565b60085460009081906509184e72a00061192c82826117ac565b821015611946575050600854926509184e72a00092509050565b90939092509050565b600081836119705760405162461bcd60e51b815260040161078d9190611c0d565b5060006114a48486611ef3565b600080600080600080600080600061199a8a600c54600d54611ae9565b92509250925060006119aa611789565b905060008060006119bd8e878787611b3e565b919e509c509a509598509396509194505050505091939550919395565b60006115cb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611473565b600080611a298385611ea5565b9050838110156115cb5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161078d565b6000611a85611789565b90506000611a938383611b8e565b30600090815260026020526040902054909150611ab09082611a1c565b30600090815260026020526040902055505050565b600854611ad290836119da565b600855600954611ae29082611a1c565b6009555050565b6000808080611b036064611afd8989611b8e565b906117ac565b90506000611b166064611afd8a89611b8e565b90506000611b2e82611b288b866119da565b906119da565b9992985090965090945050505050565b6000808080611b4d8886611b8e565b90506000611b5b8887611b8e565b90506000611b698888611b8e565b90506000611b7b82611b2886866119da565b939b939a50919850919650505050505050565b600082611b9d575060006106f4565b6000611ba98385611ed4565b905082611bb68583611ef3565b146115cb5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161078d565b600060208083528351808285015260005b81811015611c3a57858101830151858201604001528201611c1e565b81811115611c4c576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461094557600080fd5b60008060408385031215611c8a57600080fd5b8235611c9581611c62565b946020939093013593505050565b600080600060608486031215611cb857600080fd5b8335611cc381611c62565b92506020840135611cd381611c62565b929592945050506040919091013590565b60008060408385031215611cf757600080fd5b50508035926020909101359150565b600060208284031215611d1857600080fd5b81356115cb81611c62565b80358015158114611d3357600080fd5b919050565b600060208284031215611d4a57600080fd5b6115cb82611d23565b600060208284031215611d6557600080fd5b5035919050565b60008060408385031215611d7f57600080fd5b8235611d8a81611c62565b91506020830135611d9a81611c62565b809150509250929050565b600080600060408486031215611dba57600080fd5b833567ffffffffffffffff80821115611dd257600080fd5b818601915086601f830112611de657600080fd5b813581811115611df557600080fd5b8760208260051b8501011115611e0a57600080fd5b602092830195509350611e209186019050611d23565b90509250925092565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415611e9e57611e9e611e74565b5060010190565b60008219821115611eb857611eb8611e74565b500190565b600082821015611ecf57611ecf611e74565b500390565b6000816000190483118215151615611eee57611eee611e74565b500290565b600082611f1057634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611f2757600080fd5b81516115cb81611c62565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611f825784516001600160a01b031683529383019391830191600101611f5d565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ddfed72b8b2b41080b58f3f4381ca2f248fadcfa73d4891ba7a689f9459d258e64736f6c63430008090033
Deployed Bytecode
0x6080604052600436106102135760003560e01c80637f2feddc11610118578063bf5976d3116100a0578063caac79341161006f578063caac79341461061d578063dd62ed3e1461063d578063e70ef8a414610683578063ea1644d5146106a3578063f2fde38b146106c357600080fd5b8063bf5976d3146105a2578063bfd79284146105b8578063c3c8cd80146105e8578063c492f046146105fd57600080fd5b80638f9a55c0116100e75780638f9a55c0146104f957806390107afe1461050f57806395d89b411461052f57806398a5c31514610562578063a9059cbb1461058257600080fd5b80637f2feddc146104785780638199040e146104a55780638da5cb5b146104bb5780638f70ccf7146104d957600080fd5b806352f7c9881161019b57806370a082311161016a57806370a08231146103f8578063715018a61461041857806374010ece1461042d578063751039fc1461044d5780637d1db4a51461046257600080fd5b806352f7c988146103815780636b999053146103a35780636d8aa8f8146103c35780636fc3eaec146103e357600080fd5b806323b872dd116101e257806323b872dd146102ef5780632fd689e31461030f578063313ce567146103255780633d6a9afe1461034157806349bd5a5e1461036157600080fd5b806306fdde031461021f578063095ea7b3146102645780631694505e1461029457806318160ddd146102cc57600080fd5b3661021a57005b600080fd5b34801561022b57600080fd5b5060408051808201909152600a815269506572706c657869747960b01b60208201525b60405161025b9190611c0d565b60405180910390f35b34801561027057600080fd5b5061028461027f366004611c77565b6106e3565b604051901515815260200161025b565b3480156102a057600080fd5b506014546102b4906001600160a01b031681565b6040516001600160a01b03909116815260200161025b565b3480156102d857600080fd5b506509184e72a0005b60405190815260200161025b565b3480156102fb57600080fd5b5061028461030a366004611ca3565b6106fa565b34801561031b57600080fd5b506102e160185481565b34801561033157600080fd5b506040516007815260200161025b565b34801561034d57600080fd5b506012546102b4906001600160a01b031681565b34801561036d57600080fd5b506015546102b4906001600160a01b031681565b34801561038d57600080fd5b506103a161039c366004611ce4565b610763565b005b3480156103af57600080fd5b506103a16103be366004611d06565b61086a565b3480156103cf57600080fd5b506103a16103de366004611d38565b6108b5565b3480156103ef57600080fd5b506103a16108fd565b34801561040457600080fd5b506102e1610413366004611d06565b610948565b34801561042457600080fd5b506103a161096a565b34801561043957600080fd5b506103a1610448366004611d53565b6109de565b34801561045957600080fd5b506103a1610a62565b34801561046e57600080fd5b506102e160165481565b34801561048457600080fd5b506102e1610493366004611d06565b60116020526000908152604090205481565b3480156104b157600080fd5b506102e1600b5481565b3480156104c757600080fd5b506000546001600160a01b03166102b4565b3480156104e557600080fd5b506103a16104f4366004611d38565b610a9d565b34801561050557600080fd5b506102e160175481565b34801561051b57600080fd5b506103a161052a366004611d6c565b610ae5565b34801561053b57600080fd5b5060408051808201909152600a815269504552504c455849545960b01b602082015261024e565b34801561056e57600080fd5b506103a161057d366004611d53565b610b3d565b34801561058e57600080fd5b5061028461059d366004611c77565b610b6c565b3480156105ae57600080fd5b506102e1600a5481565b3480156105c457600080fd5b506102846105d3366004611d06565b60106020526000908152604090205460ff1681565b3480156105f457600080fd5b506103a1610b79565b34801561060957600080fd5b506103a1610618366004611da5565b610bcd565b34801561062957600080fd5b506013546102b4906001600160a01b031681565b34801561064957600080fd5b506102e1610658366004611d6c565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561068f57600080fd5b506103a161069e366004611d06565b610c6e565b3480156106af57600080fd5b506103a16106be366004611d53565b610cbc565b3480156106cf57600080fd5b506103a16106de366004611d06565b610d4c565b60006106f0338484610e36565b5060015b92915050565b6000610707848484610f5a565b610759843361075485604051806060016040528060288152602001611fa4602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190611473565b610e36565b5060019392505050565b6000546001600160a01b031633146107965760405162461bcd60e51b815260040161078d90611e29565b60405180910390fd5b60238211156107fa5760405162461bcd60e51b815260206004820152602a60248201527f427579207461782073686f756c64206265206c657373207468616e206f7220656044820152697175616c20746f20333560b01b606482015260840161078d565b602381111561085f5760405162461bcd60e51b815260206004820152602b60248201527f53656c6c207461782073686f756c64206265206c657373207468616e206f722060448201526a657175616c20746f20333560a81b606482015260840161078d565b600a91909155600b55565b6000546001600160a01b031633146108945760405162461bcd60e51b815260040161078d90611e29565b6001600160a01b03166000908152601060205260409020805460ff19169055565b6000546001600160a01b031633146108df5760405162461bcd60e51b815260040161078d90611e29565b60158054911515600160b01b0260ff60b01b19909216919091179055565b6012546001600160a01b0316336001600160a01b0316148061093257506013546001600160a01b0316336001600160a01b0316145b61093b57600080fd5b47610945816114ad565b50565b6001600160a01b0381166000908152600260205260408120546106f49061154e565b6000546001600160a01b031633146109945760405162461bcd60e51b815260040161078d90611e29565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610a085760405162461bcd60e51b815260040161078d90611e29565b640ba43b7400811015610a5d5760405162461bcd60e51b815260206004820181905260248201527f4d61782054786e2063616e2774206265206c657373207468616e20302e352520604482015260640161078d565b601655565b6000546001600160a01b03163314610a8c5760405162461bcd60e51b815260040161078d90611e29565b6509184e72a0006017819055601655565b6000546001600160a01b03163314610ac75760405162461bcd60e51b815260040161078d90611e29565b60158054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b03163314610b0f5760405162461bcd60e51b815260040161078d90611e29565b601280546001600160a01b039384166001600160a01b03199182161790915560138054929093169116179055565b6000546001600160a01b03163314610b675760405162461bcd60e51b815260040161078d90611e29565b601855565b60006106f0338484610f5a565b6012546001600160a01b0316336001600160a01b03161480610bae57506013546001600160a01b0316336001600160a01b0316145b610bb757600080fd5b6000610bc230610948565b9050610945816115d2565b6000546001600160a01b03163314610bf75760405162461bcd60e51b815260040161078d90611e29565b60005b82811015610c68578160056000868685818110610c1957610c19611e5e565b9050602002016020810190610c2e9190611d06565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610c6081611e8a565b915050610bfa565b50505050565b6000546001600160a01b03163314610c985760405162461bcd60e51b815260040161078d90611e29565b6001600160a01b03166000908152601060205260409020805460ff19166001179055565b6000546001600160a01b03163314610ce65760405162461bcd60e51b815260040161078d90611e29565b640ba43b7400811015610d475760405162461bcd60e51b815260206004820152602360248201527f4d61782057616c6c65742063616e2774206265206c657373207468616e20302e60448201526201a92960ed1b606482015260840161078d565b601755565b6000546001600160a01b03163314610d765760405162461bcd60e51b815260040161078d90611e29565b6001600160a01b038116610ddb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161078d565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610e985760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161078d565b6001600160a01b038216610ef95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161078d565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610fbe5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161078d565b6001600160a01b0382166110205760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161078d565b600081116110825760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161078d565b600080546001600160a01b03858116911614806110ac57506000546001600160a01b038481169116145b90508061138f57601554600160a01b900460ff16611147576000546001600160a01b038581169116146111475760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400606482015260840161078d565b6016548211156111995760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000604482015260640161078d565b6001600160a01b03841660009081526010602052604090205460ff161580156111db57506001600160a01b03831660009081526010602052604090205460ff16155b6112335760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b606482015260840161078d565b6015546001600160a01b038481169116146112b8576017548261125585610948565b61125f9190611ea5565b106112b85760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b606482015260840161078d565b60006112c330610948565b6018546016549192508210159082106112dc5760165491505b8080156112f35750601554600160a81b900460ff16155b801561130d57506015546001600160a01b03878116911614155b80156113225750601554600160b01b900460ff165b801561134757506001600160a01b03861660009081526005602052604090205460ff16155b801561136c57506001600160a01b03851660009081526005602052604090205460ff16155b1561138c5761137a826115d2565b47801561138a5761138a476114ad565b505b50505b6001600160a01b03841660009081526005602052604090205460019060ff16806113d157506001600160a01b03841660009081526005602052604090205460ff165b806113d95750815b156113e657506000611460565b6015546001600160a01b03868116911614801561141157506014546001600160a01b03858116911614155b1561142357600654600c55600a54600d555b6015546001600160a01b03858116911614801561144e57506014546001600160a01b03868116911614155b1561146057600754600c55600b54600d555b61146c8585858461175b565b5050505050565b600081848411156114975760405162461bcd60e51b815260040161078d9190611c0d565b5060006114a48486611ebd565b95945050505050565b6013546001600160a01b03166108fc60646114c9846032611ed4565b6114d39190611ef3565b6040518115909202916000818181858888f193505050501580156114fb573d6000803e3d6000fd5b506012546001600160a01b03166108fc6064611518846032611ed4565b6115229190611ef3565b6040518115909202916000818181858888f1935050505015801561154a573d6000803e3d6000fd5b5050565b60006008548211156115b55760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161078d565b60006115bf611789565b90506115cb83826117ac565b9392505050565b6015805460ff60a81b1916600160a81b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061161a5761161a611e5e565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561166e57600080fd5b505afa158015611682573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a69190611f15565b816001815181106116b9576116b9611e5e565b6001600160a01b0392831660209182029290920101526014546116df9130911684610e36565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac94790611718908590600090869030904290600401611f32565b600060405180830381600087803b15801561173257600080fd5b505af1158015611746573d6000803e3d6000fd5b50506015805460ff60a81b1916905550505050565b80611768576117686117ee565b61177384848461181c565b80610c6857610c68600e54600c55600f54600d55565b6000806000611796611913565b90925090506117a582826117ac565b9250505090565b60006115cb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061194f565b600c541580156117fe5750600d54155b1561180557565b600c8054600e55600d8054600f5560009182905555565b60008060008060008061182e8761197d565b6001600160a01b038f16600090815260026020526040902054959b5093995091975095509350915061186090876119da565b6001600160a01b03808b1660009081526002602052604080822093909355908a168152205461188f9086611a1c565b6001600160a01b0389166000908152600260205260409020556118b181611a7b565b6118bb8483611ac5565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161190091815260200190565b60405180910390a3505050505050505050565b60085460009081906509184e72a00061192c82826117ac565b821015611946575050600854926509184e72a00092509050565b90939092509050565b600081836119705760405162461bcd60e51b815260040161078d9190611c0d565b5060006114a48486611ef3565b600080600080600080600080600061199a8a600c54600d54611ae9565b92509250925060006119aa611789565b905060008060006119bd8e878787611b3e565b919e509c509a509598509396509194505050505091939550919395565b60006115cb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611473565b600080611a298385611ea5565b9050838110156115cb5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161078d565b6000611a85611789565b90506000611a938383611b8e565b30600090815260026020526040902054909150611ab09082611a1c565b30600090815260026020526040902055505050565b600854611ad290836119da565b600855600954611ae29082611a1c565b6009555050565b6000808080611b036064611afd8989611b8e565b906117ac565b90506000611b166064611afd8a89611b8e565b90506000611b2e82611b288b866119da565b906119da565b9992985090965090945050505050565b6000808080611b4d8886611b8e565b90506000611b5b8887611b8e565b90506000611b698888611b8e565b90506000611b7b82611b2886866119da565b939b939a50919850919650505050505050565b600082611b9d575060006106f4565b6000611ba98385611ed4565b905082611bb68583611ef3565b146115cb5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161078d565b600060208083528351808285015260005b81811015611c3a57858101830151858201604001528201611c1e565b81811115611c4c576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461094557600080fd5b60008060408385031215611c8a57600080fd5b8235611c9581611c62565b946020939093013593505050565b600080600060608486031215611cb857600080fd5b8335611cc381611c62565b92506020840135611cd381611c62565b929592945050506040919091013590565b60008060408385031215611cf757600080fd5b50508035926020909101359150565b600060208284031215611d1857600080fd5b81356115cb81611c62565b80358015158114611d3357600080fd5b919050565b600060208284031215611d4a57600080fd5b6115cb82611d23565b600060208284031215611d6557600080fd5b5035919050565b60008060408385031215611d7f57600080fd5b8235611d8a81611c62565b91506020830135611d9a81611c62565b809150509250929050565b600080600060408486031215611dba57600080fd5b833567ffffffffffffffff80821115611dd257600080fd5b818601915086601f830112611de657600080fd5b813581811115611df557600080fd5b8760208260051b8501011115611e0a57600080fd5b602092830195509350611e209186019050611d23565b90509250925092565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415611e9e57611e9e611e74565b5060010190565b60008219821115611eb857611eb8611e74565b500190565b600082821015611ecf57611ecf611e74565b500390565b6000816000190483118215151615611eee57611eee611e74565b500290565b600082611f1057634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611f2757600080fd5b81516115cb81611c62565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611f825784516001600160a01b031683529383019391830191600101611f5d565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ddfed72b8b2b41080b58f3f4381ca2f248fadcfa73d4891ba7a689f9459d258e64736f6c63430008090033
Deployed Bytecode Sourcemap
4412:14221:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6969:83;;;;;;;;;;-1:-1:-1;7039:5:0;;;;;;;;;;;;-1:-1:-1;;;7039:5:0;;;;6969:83;;;;;;;:::i;:::-;;;;;;;;7894:193;;;;;;;;;;-1:-1:-1;7894:193:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;7894:193:0;1072:187:1;5772:41:0;;;;;;;;;;-1:-1:-1;5772:41:0;;;;-1:-1:-1;;;;;5772:41:0;;;;;;-1:-1:-1;;;;;1454:32:1;;;1436:51;;1424:2;1409:18;5772:41:0;1264:229:1;7246:95:0;;;;;;;;;;-1:-1:-1;5052:15:0;7246:95;;;1644:25:1;;;1632:2;1617:18;7246:95:0;1498:177:1;8095:446:0;;;;;;;;;;-1:-1:-1;8095:446:0;;;;;:::i;:::-;;:::i;6066:50::-;;;;;;;;;;;;;;;;7155:83;;;;;;;;;;-1:-1:-1;7155:83:0;;4643:1;2283:36:1;;2271:2;2256:18;7155:83:0;2141:184:1;5565:96:0;;;;;;;;;;-1:-1:-1;5565:96:0;;;;-1:-1:-1;;;;;5565:96:0;;;5820:28;;;;;;;;;;-1:-1:-1;5820:28:0;;;;-1:-1:-1;;;;;5820:28:0;;;17130:328;;;;;;;;;;-1:-1:-1;17130:328:0;;;;;:::i;:::-;;:::i;:::-;;13397:92;;;;;;;;;;-1:-1:-1;13397:92:0;;;;;:::i;:::-;;:::i;17701:101::-;;;;;;;;;;-1:-1:-1;17701:101:0;;;;;:::i;:::-;;:::i;13059:235::-;;;;;;;;;;;;;:::i;7349:138::-;;;;;;;;;;-1:-1:-1;7349:138:0;;;;;:::i;:::-;;:::i;1899:148::-;;;;;;;;;;;;;:::i;17841:191::-;;;;;;;;;;-1:-1:-1;17841:191:0;;;;;:::i;:::-;;:::i;18251:135::-;;;;;;;;;;;;;:::i;5962:45::-;;;;;;;;;;;;;;;;5515:43;;;;;;;;;;-1:-1:-1;5515:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;5235:33;;;;;;;;;;;;;;;;1685:79;;;;;;;;;;-1:-1:-1;1723:7:0;1750:6;-1:-1:-1;;;;;1750:6:0;1685:79;;12706:101;;;;;;;;;;-1:-1:-1;12706:101:0;;;;;:::i;:::-;;:::i;6014:45::-;;;;;;;;;;;;;;;;13497:227;;;;;;;;;;-1:-1:-1;13497:227:0;;;;;:::i;:::-;;:::i;7060:87::-;;;;;;;;;;-1:-1:-1;7132:7:0;;;;;;;;;;;;-1:-1:-1;;;7132:7:0;;;;7060:87;;17510:139;;;;;;;;;;-1:-1:-1;17510:139:0;;;;;:::i;:::-;;:::i;7495:199::-;;;;;;;;;;-1:-1:-1;7495:199:0;;;;;:::i;:::-;;:::i;5180:32::-;;;;;;;;;;;;;;;;5477:36;;;;;;;;;;-1:-1:-1;5477:36:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12815:236;;;;;;;;;;;;;:::i;18394:234::-;;;;;;;;;;-1:-1:-1;18394:234:0;;;;;:::i;:::-;;:::i;5669:94::-;;;;;;;;;;-1:-1:-1;5669:94:0;;;;-1:-1:-1;;;;;5669:94:0;;;7702:184;;;;;;;;;;-1:-1:-1;7702:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7851:18:0;;;7819:7;7851:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7702:184;13302:87;;;;;;;;;;-1:-1:-1;13302:87:0;;;;;:::i;:::-;;:::i;18040:203::-;;;;;;;;;;-1:-1:-1;18040:203:0;;;;;:::i;:::-;;:::i;2055:244::-;;;;;;;;;;-1:-1:-1;2055:244:0;;;;;:::i;:::-;;:::i;7894:193::-;7996:4;8018:39;524:10;8041:7;8050:6;8018:8;:39::i;:::-;-1:-1:-1;8075:4:0;7894:193;;;;;:::o;8095:446::-;8227:4;8244:36;8254:6;8262:9;8273:6;8244:9;:36::i;:::-;8291:220;8314:6;524:10;8362:138;8418:6;8362:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8362:19:0;;;;;;:11;:19;;;;;;;;524:10;8362:33;;;;;;;;;;:37;:138::i;:::-;8291:8;:220::i;:::-;-1:-1:-1;8529:4:0;8095:446;;;;;:::o;17130:328::-;1812:6;;-1:-1:-1;;;;;1812:6:0;524:10;1812:22;1804:67;;;;-1:-1:-1;;;1804:67:0;;;;;;;:::i;:::-;;;;;;;;;17240:2:::1;17225:11;:17;;17217:72;;;::::0;-1:-1:-1;;;17217:72:0;;5861:2:1;17217:72:0::1;::::0;::::1;5843:21:1::0;5900:2;5880:18;;;5873:30;5939:34;5919:18;;;5912:62;-1:-1:-1;;;5990:18:1;;;5983:40;6040:19;;17217:72:0::1;5659:406:1::0;17217:72:0::1;17324:2;17308:12;:18;;17300:74;;;::::0;-1:-1:-1;;;17300:74:0;;6272:2:1;17300:74:0::1;::::0;::::1;6254:21:1::0;6311:2;6291:18;;;6284:30;6350:34;6330:18;;;6323:62;-1:-1:-1;;;6401:18:1;;;6394:41;6452:19;;17300:74:0::1;6070:407:1::0;17300:74:0::1;17385:12;:26:::0;;;;17422:13:::1;:28:::0;17130:328::o;13397:92::-;1812:6;;-1:-1:-1;;;;;1812:6:0;524:10;1812:22;1804:67;;;;-1:-1:-1;;;1804:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13461:12:0::1;13476:5;13461:12:::0;;;:4:::1;:12;::::0;;;;:20;;-1:-1:-1;;13461:20:0::1;::::0;;13397:92::o;17701:101::-;1812:6;;-1:-1:-1;;;;;1812:6:0;524:10;1812:22;1804:67;;;;-1:-1:-1;;;1804:67:0;;;;;;;:::i;:::-;17768:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;17768:26:0::1;-1:-1:-1::0;;;;17768:26:0;;::::1;::::0;;;::::1;::::0;;17701:101::o;13059:235::-;13125:19;;-1:-1:-1;;;;;13125:19:0;524:10;-1:-1:-1;;;;;13109:35:0;;:72;;;-1:-1:-1;13164:17:0;;-1:-1:-1;;;;;13164:17:0;524:10;-1:-1:-1;;;;;13148:33:0;;13109:72;13101:81;;;;;;13222:21;13254:32;13222:21;13254:12;:32::i;:::-;13090:204;13059:235::o;7349:138::-;-1:-1:-1;;;;;7462:16:0;;7415:7;7462:16;;;:7;:16;;;;;;7442:37;;:19;:37::i;1899:148::-;1812:6;;-1:-1:-1;;;;;1812:6:0;524:10;1812:22;1804:67;;;;-1:-1:-1;;;1804:67:0;;;;;;;:::i;:::-;2006:1:::1;1990:6:::0;;1969:40:::1;::::0;-1:-1:-1;;;;;1990:6:0;;::::1;::::0;1969:40:::1;::::0;2006:1;;1969:40:::1;2037:1;2020:19:::0;;-1:-1:-1;;;;;;2020:19:0::1;::::0;;1899:148::o;17841:191::-;1812:6;;-1:-1:-1;;;;;1812:6:0;524:10;1812:22;1804:67;;;;-1:-1:-1;;;1804:67:0;;;;;;;:::i;:::-;17938:12:::1;17923:11;:27;;17915:72;;;::::0;-1:-1:-1;;;17915:72:0;;6684:2:1;17915:72:0::1;::::0;::::1;6666:21:1::0;;;6703:18;;;6696:30;6762:34;6742:18;;;6735:62;6814:18;;17915:72:0::1;6482:356:1::0;17915:72:0::1;17998:12;:26:::0;17841:191::o;18251:135::-;1812:6;;-1:-1:-1;;;;;1812:6:0;524:10;1812:22;1804:67;;;;-1:-1:-1;;;1804:67:0;;;;;;;:::i;:::-;18320:15:::1;18303:14;:32:::0;;;18346:12:::1;:32:::0;18251:135::o;12706:101::-;1812:6;;-1:-1:-1;;;;;1812:6:0;524:10;1812:22;1804:67;;;;-1:-1:-1;;;1804:67:0;;;;;;;:::i;:::-;12773:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;12773:26:0::1;-1:-1:-1::0;;;;12773:26:0;;::::1;::::0;;;::::1;::::0;;12706:101::o;13497:227::-;1812:6;;-1:-1:-1;;;;;1812:6:0;524:10;1812:22;1804:67;;;;-1:-1:-1;;;1804:67:0;;;;;;;:::i;:::-;13623:19:::1;:43:::0;;-1:-1:-1;;;;;13623:43:0;;::::1;-1:-1:-1::0;;;;;;13623:43:0;;::::1;;::::0;;;13677:17:::1;:39:::0;;;;;::::1;::::0;::::1;;::::0;;13497:227::o;17510:139::-;1812:6;;-1:-1:-1;;;;;1812:6:0;524:10;1812:22;1804:67;;;;-1:-1:-1;;;1804:67:0;;;;;;;:::i;:::-;17601:19:::1;:40:::0;17510:139::o;7495:199::-;7600:4;7622:42;524:10;7646:9;7657:6;7622:9;:42::i;12815:236::-;12881:19;;-1:-1:-1;;;;;12881:19:0;524:10;-1:-1:-1;;;;;12865:35:0;;:72;;;-1:-1:-1;12920:17:0;;-1:-1:-1;;;;;12920:17:0;524:10;-1:-1:-1;;;;;12904:33:0;;12865:72;12857:81;;;;;;12949:23;12975:24;12993:4;12975:9;:24::i;:::-;12949:50;;13010:33;13027:15;13010:16;:33::i;18394:234::-;1812:6;;-1:-1:-1;;;;;1812:6:0;524:10;1812:22;1804:67;;;;-1:-1:-1;;;1804:67:0;;;;;;;:::i;:::-;18511:9:::1;18507:114;18526:19:::0;;::::1;18507:114;;;18601:8;18567:18;:31;18586:8;;18595:1;18586:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18567:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;18567:31:0;:42;;-1:-1:-1;;18567:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18547:3;::::1;::::0;::::1;:::i;:::-;;;;18507:114;;;;18394:234:::0;;;:::o;13302:87::-;1812:6;;-1:-1:-1;;;;;1812:6:0;524:10;1812:22;1804:67;;;;-1:-1:-1;;;1804:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13363:11:0::1;;::::0;;;:4:::1;:11;::::0;;;;:18;;-1:-1:-1;;13363:18:0::1;13377:4;13363:18;::::0;;13302:87::o;18040:203::-;1812:6;;-1:-1:-1;;;;;1812:6:0;524:10;1812:22;1804:67;;;;-1:-1:-1;;;1804:67:0;;;;;;;:::i;:::-;18142:12:::1;18125:13;:29;;18117:77;;;::::0;-1:-1:-1;;;18117:77:0;;7449:2:1;18117:77:0::1;::::0;::::1;7431:21:1::0;7488:2;7468:18;;;7461:30;7527:34;7507:18;;;7500:62;-1:-1:-1;;;7578:18:1;;;7571:33;7621:19;;18117:77:0::1;7247:399:1::0;18117:77:0::1;18205:14;:30:::0;18040:203::o;2055:244::-;1812:6;;-1:-1:-1;;;;;1812:6:0;524:10;1812:22;1804:67;;;;-1:-1:-1;;;1804:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2144:22:0;::::1;2136:73;;;::::0;-1:-1:-1;;;2136:73:0;;7853:2:1;2136:73:0::1;::::0;::::1;7835:21:1::0;7892:2;7872:18;;;7865:30;7931:34;7911:18;;;7904:62;-1:-1:-1;;;7982:18:1;;;7975:36;8028:19;;2136:73:0::1;7651:402:1::0;2136:73:0::1;2246:6;::::0;;2225:38:::1;::::0;-1:-1:-1;;;;;2225:38:0;;::::1;::::0;2246:6;::::1;::::0;2225:38:::1;::::0;::::1;2274:6;:17:::0;;-1:-1:-1;;;;;;2274:17:0::1;-1:-1:-1::0;;;;;2274:17:0;;;::::1;::::0;;;::::1;::::0;;2055:244::o;9232:369::-;-1:-1:-1;;;;;9359:19:0;;9351:68;;;;-1:-1:-1;;;9351:68:0;;8260:2:1;9351:68:0;;;8242:21:1;8299:2;8279:18;;;8272:30;8338:34;8318:18;;;8311:62;-1:-1:-1;;;8389:18:1;;;8382:34;8433:19;;9351:68:0;8058:400:1;9351:68:0;-1:-1:-1;;;;;9438:21:0;;9430:68;;;;-1:-1:-1;;;9430:68:0;;8665:2:1;9430:68:0;;;8647:21:1;8704:2;8684:18;;;8677:30;8743:34;8723:18;;;8716:62;-1:-1:-1;;;8794:18:1;;;8787:32;8836:19;;9430:68:0;8463:398:1;9430:68:0;-1:-1:-1;;;;;9509:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9561:32;;1644:25:1;;;9561:32:0;;1617:18:1;9561:32:0;;;;;;;9232:369;;;:::o;9609:2428::-;-1:-1:-1;;;;;9731:18:0;;9723:68;;;;-1:-1:-1;;;9723:68:0;;9068:2:1;9723:68:0;;;9050:21:1;9107:2;9087:18;;;9080:30;9146:34;9126:18;;;9119:62;-1:-1:-1;;;9197:18:1;;;9190:35;9242:19;;9723:68:0;8866:401:1;9723:68:0;-1:-1:-1;;;;;9810:16:0;;9802:64;;;;-1:-1:-1;;;9802:64:0;;9474:2:1;9802:64:0;;;9456:21:1;9513:2;9493:18;;;9486:30;9552:34;9532:18;;;9525:62;-1:-1:-1;;;9603:18:1;;;9596:33;9646:19;;9802:64:0;9272:399:1;9802:64:0;9894:1;9885:6;:10;9877:64;;;;-1:-1:-1;;;9877:64:0;;9878:2:1;9877:64:0;;;9860:21:1;9917:2;9897:18;;;9890:30;9956:34;9936:18;;;9929:62;-1:-1:-1;;;10007:18:1;;;10000:39;10056:19;;9877:64:0;9676:405:1;9877:64:0;10018:23;1750:6;;-1:-1:-1;;;;;10045:15:0;;;1750:6;;10045:15;;:32;;-1:-1:-1;1723:7:0;1750:6;-1:-1:-1;;;;;10064:13:0;;;1750:6;;10064:13;10045:32;10018:60;;10096:18;10091:1247;;10172:11;;-1:-1:-1;;;10172:11:0;;;;10167:144;;1723:7;1750:6;-1:-1:-1;;;;;10212:15:0;;;1750:6;;10212:15;10204:91;;;;-1:-1:-1;;;10204:91:0;;10288:2:1;10204:91:0;;;10270:21:1;10327:2;10307:18;;;10300:30;10366:34;10346:18;;;10339:62;10437:33;10417:18;;;10410:61;10488:19;;10204:91:0;10086:427:1;10204:91:0;10345:12;;10335:6;:22;;10327:63;;;;-1:-1:-1;;;10327:63:0;;10720:2:1;10327:63:0;;;10702:21:1;10759:2;10739:18;;;10732:30;10798;10778:18;;;10771:58;10846:18;;10327:63:0;10518:352:1;10327:63:0;-1:-1:-1;;;;;10414:10:0;;;;;;:4;:10;;;;;;;;10413:11;:24;;;;-1:-1:-1;;;;;;10429:8:0;;;;;;:4;:8;;;;;;;;10428:9;10413:24;10405:72;;;;-1:-1:-1;;;10405:72:0;;11077:2:1;10405:72:0;;;11059:21:1;11116:2;11096:18;;;11089:30;11155:34;11135:18;;;11128:62;-1:-1:-1;;;11206:18:1;;;11199:33;11249:19;;10405:72:0;10875:399:1;10405:72:0;10503:13;;-1:-1:-1;;;;;10497:19:0;;;10503:13;;10497:19;10494:146;;10570:14;;10561:6;10545:13;10555:2;10545:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10537:87;;;;-1:-1:-1;;;10537:87:0;;11614:2:1;10537:87:0;;;11596:21:1;11653:2;11633:18;;;11626:30;11692:34;11672:18;;;11665:62;-1:-1:-1;;;11743:18:1;;;11736:33;11786:19;;10537:87:0;11412:399:1;10537:87:0;10656:28;10687:24;10705:4;10687:9;:24::i;:::-;10765:19;;10828:12;;10656:55;;-1:-1:-1;10741:43:0;;;;10804:36;;10801:124;;10897:12;;10874:35;;10801:124;10945:7;:18;;;;-1:-1:-1;10957:6:0;;-1:-1:-1;;;10957:6:0;;;;10956:7;10945:18;:43;;;;-1:-1:-1;10975:13:0;;-1:-1:-1;;;;;10967:21:0;;;10975:13;;10967:21;;10945:43;:58;;;;-1:-1:-1;10992:11:0;;-1:-1:-1;;;10992:11:0;;;;10945:58;:87;;;;-1:-1:-1;;;;;;11008:24:0;;;;;;:18;:24;;;;;;;;11007:25;10945:87;:114;;;;-1:-1:-1;;;;;;11037:22:0;;;;;;:18;:22;;;;;;;;11036:23;10945:114;10941:386;;;11080:38;11097:20;11080:16;:38::i;:::-;11166:21;11210:22;;11206:106;;11257:35;11270:21;11257:12;:35::i;:::-;11061:266;10941:386;10116:1222;;10091:1247;-1:-1:-1;;;;;11415:24:0;;11350:12;11415:24;;;:18;:24;;;;;;11365:4;;11415:24;;;:50;;-1:-1:-1;;;;;;11443:22:0;;;;;;:18;:22;;;;;;;;11415:50;11414:74;;;;11470:18;11414:74;11410:566;;;-1:-1:-1;11515:5:0;11410:566;;;11599:13;;-1:-1:-1;;;;;11591:21:0;;;11599:13;;11591:21;:55;;;;-1:-1:-1;11630:15:0;;-1:-1:-1;;;;;11616:30:0;;;11630:15;;11616:30;;11591:55;11588:162;;;11679:14;;11667:9;:26;11722:12;;11712:7;:22;11588:162;11810:13;;-1:-1:-1;;;;;11804:19:0;;;11810:13;;11804:19;:55;;;;-1:-1:-1;11843:15:0;;-1:-1:-1;;;;;11827:32:0;;;11843:15;;11827:32;;11804:55;11800:165;;;11892:15;;11880:9;:27;11936:13;;11926:7;:23;11800:165;11988:41;12003:4;12009:2;12013:6;12021:7;11988:14;:41::i;:::-;9712:2325;;9609:2428;;;:::o;2663:224::-;2783:7;2819:12;2811:6;;;;2803:29;;;;-1:-1:-1;;;2803:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2843:9:0;2855:5;2859:1;2855;:5;:::i;:::-;2843:17;2663:224;-1:-1:-1;;;;;2663:224:0:o;12538:160::-;12595:17;;-1:-1:-1;;;;;12595:17:0;:41;12632:3;12622:9;:6;12629:2;12622:9;:::i;:::-;:13;;;;:::i;:::-;12595:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12647:19:0;;-1:-1:-1;;;;;12647:19:0;:43;12686:3;12676:9;:6;12683:2;12676:9;:::i;:::-;:13;;;;:::i;:::-;12647:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12538:160;:::o;8549:323::-;8644:7;8702;;8691;:18;;8669:110;;;;-1:-1:-1;;;8669:110:0;;12543:2:1;8669:110:0;;;12525:21:1;12582:2;12562:18;;;12555:30;12621:34;12601:18;;;12594:62;-1:-1:-1;;;12672:18:1;;;12665:40;12722:19;;8669:110:0;12341:406:1;8669:110:0;8790:19;8812:10;:8;:10::i;:::-;8790:32;-1:-1:-1;8840:24:0;:7;8790:32;8840:11;:24::i;:::-;8833:31;8549:323;-1:-1:-1;;;8549:323:0:o;12047:483::-;6210:6;:13;;-1:-1:-1;;;;6210:13:0;-1:-1:-1;;;6210:13:0;;;12149:16:::1;::::0;;12163:1:::1;12149:16:::0;;;;;::::1;::::0;;-1:-1:-1;;12149:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;12149:16:0::1;12125:40;;12194:4;12176;12181:1;12176:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12176:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;12220:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;12220:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;12176:7;;12220:22;;;;;:15;:22;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12210:4;12215:1;12210:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12210:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;12285:15:::1;::::0;12253:62:::1;::::0;12270:4:::1;::::0;12285:15:::1;12303:11:::0;12253:8:::1;:62::i;:::-;12326:15;::::0;:196:::1;::::0;-1:-1:-1;;;12326:196:0;;-1:-1:-1;;;;;12326:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;12407:11;;12326:15:::1;::::0;12449:4;;12476::::1;::::0;12496:15:::1;::::0;12326:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6246:6:0;:14;;-1:-1:-1;;;;6246:14:0;;;-1:-1:-1;;;;12047:483:0:o;13732:282::-;13888:7;13883:28;;13897:14;:12;:14::i;:::-;13922:44;13940:6;13948:9;13959:6;13922:17;:44::i;:::-;13982:7;13977:29;;13991:15;9163:17;;9151:9;:29;9201:15;;9191:7;:25;9107:117;16693:164;16735:7;16756:15;16773;16792:19;:17;:19::i;:::-;16755:56;;-1:-1:-1;16755:56:0;-1:-1:-1;16829:20:0;16755:56;;16829:11;:20::i;:::-;16822:27;;;;16693:164;:::o;3149:132::-;3207:7;3234:39;3238:1;3241;3234:39;;;;;;;;;;;;;;;;;:3;:39::i;8880:219::-;8927:9;;:14;:30;;;;-1:-1:-1;8945:7:0;;:12;8927:30;8923:43;;;8880:219::o;8923:43::-;8998:9;;;8978:17;:29;9036:7;;;9018:15;:25;-1:-1:-1;9056:13:0;;;;9080:11;8880:219::o;14022:610::-;14169:15;14199:23;14237:12;14264:23;14302:12;14329:13;14356:19;14367:7;14356:10;:19::i;:::-;-1:-1:-1;;;;;14404:15:0;;;;;;:7;:15;;;;;;14154:221;;-1:-1:-1;14154:221:0;;-1:-1:-1;14154:221:0;;-1:-1:-1;14154:221:0;-1:-1:-1;14154:221:0;-1:-1:-1;14154:221:0;-1:-1:-1;14404:28:0;;14154:221;14404:19;:28::i;:::-;-1:-1:-1;;;;;14386:15:0;;;;;;;:7;:15;;;;;;:46;;;;14464:18;;;;;;;:39;;14487:15;14464:22;:39::i;:::-;-1:-1:-1;;;;;14443:18:0;;;;;;:7;:18;;;;;:60;14514:16;14524:5;14514:9;:16::i;:::-;14541:23;14553:4;14559;14541:11;:23::i;:::-;14597:9;-1:-1:-1;;;;;14580:44:0;14589:6;-1:-1:-1;;;;;14580:44:0;;14608:15;14580:44;;;;1644:25:1;;1632:2;1617:18;;1498:177;14580:44:0;;;;;;;;14143:489;;;;;;14022:610;;;:::o;16865:257::-;16963:7;;16916;;;;5052:15;17031:20;16963:7;5052:15;17031:11;:20::i;:::-;17021:7;:30;17017:61;;;-1:-1:-1;;17061:7:0;;;5052:15;;-1:-1:-1;16865:257:0;-1:-1:-1;16865:257:0:o;17017:61::-;17097:7;;17106;;-1:-1:-1;16865:257:0;-1:-1:-1;16865:257:0:o;3289:223::-;3409:7;3444:12;3437:5;3429:28;;;;-1:-1:-1;;;3429:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3468:9:0;3480:5;3484:1;3480;:5;:::i;15051:615::-;15151:7;15173;15195;15217;15239;15261;15297:23;15322:12;15336:13;15366:40;15378:7;15387:9;;15398:7;;15366:11;:40::i;:::-;15296:110;;;;;;15417:19;15439:10;:8;:10::i;:::-;15417:32;;15461:15;15478:23;15503:12;15532:46;15544:7;15553:4;15559:5;15566:11;15532;:46::i;:::-;15460:118;;-1:-1:-1;15460:118:0;-1:-1:-1;15460:118:0;-1:-1:-1;15629:15:0;;-1:-1:-1;15646:4:0;;-1:-1:-1;15652:5:0;;-1:-1:-1;;;;;15051:615:0;;;;;;;:::o;2519:136::-;2577:7;2604:43;2608:1;2611;2604:43;;;;;;;;;;;;;;;;;:3;:43::i;2332:179::-;2390:7;;2422:5;2426:1;2422;:5;:::i;:::-;2410:17;;2451:1;2446;:6;;2438:46;;;;-1:-1:-1;;;2438:46:0;;14327:2:1;2438:46:0;;;14309:21:1;14366:2;14346:18;;;14339:30;14405:29;14385:18;;;14378:57;14452:18;;2438:46:0;14125:351:1;14640:211:0;14693:19;14715:10;:8;:10::i;:::-;14693:32;-1:-1:-1;14736:13:0;14752:22;:5;14693:32;14752:9;:22::i;:::-;14826:4;14810:22;;;;:7;:22;;;;;;14736:38;;-1:-1:-1;14810:33:0;;14736:38;14810:26;:33::i;:::-;14801:4;14785:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;14640:211:0:o;14859:147::-;14937:7;;:17;;14949:4;14937:11;:17::i;:::-;14927:7;:27;14978:10;;:20;;14993:4;14978:14;:20::i;:::-;14965:10;:33;-1:-1:-1;;14859:147:0:o;15674:469::-;15843:7;;;;15937:30;15963:3;15937:21;:7;15949:8;15937:11;:21::i;:::-;:25;;:30::i;:::-;15922:45;-1:-1:-1;15978:13:0;15994:28;16018:3;15994:19;:7;16006:6;15994:11;:19::i;:28::-;15978:44;-1:-1:-1;16033:23:0;16059:28;15978:44;16059:17;:7;16071:4;16059:11;:17::i;:::-;:21;;:28::i;:::-;16033:54;16123:4;;-1:-1:-1;16129:5:0;;-1:-1:-1;15674:469:0;;-1:-1:-1;;;;;15674:469:0:o;16151:534::-;16345:7;;;;16442:24;:7;16454:11;16442;:24::i;:::-;16424:42;-1:-1:-1;16477:12:0;16492:21;:4;16501:11;16492:8;:21::i;:::-;16477:36;-1:-1:-1;16524:13:0;16540:22;:5;16550:11;16540:9;:22::i;:::-;16524:38;-1:-1:-1;16573:23:0;16599:28;16524:38;16599:17;:7;16611:4;16599:11;:17::i;:28::-;16646:7;;;;-1:-1:-1;16672:4:0;;-1:-1:-1;16151:534:0;;-1:-1:-1;;;;;;;16151:534:0:o;2895:246::-;2953:7;2977:6;2973:47;;-1:-1:-1;3007:1:0;3000:8;;2973:47;3030:9;3042:5;3046:1;3042;:5;:::i;:::-;3030:17;-1:-1:-1;3075:1:0;3066:5;3070:1;3030:17;3066:5;:::i;:::-;:10;3058:56;;;;-1:-1:-1;;;3058:56:0;;14683:2:1;3058:56:0;;;14665:21:1;14722:2;14702:18;;;14695:30;14761:34;14741:18;;;14734:62;-1:-1:-1;;;14812:18:1;;;14805:31;14853:19;;3058:56:0;14481:397:1;14:597;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:315;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1680:456::-;1757:6;1765;1773;1826:2;1814:9;1805:7;1801:23;1797:32;1794:52;;;1842:1;1839;1832:12;1794:52;1881:9;1868:23;1900:31;1925:5;1900:31;:::i;:::-;1950:5;-1:-1:-1;2007:2:1;1992:18;;1979:32;2020:33;1979:32;2020:33;:::i;:::-;1680:456;;2072:7;;-1:-1:-1;;;2126:2:1;2111:18;;;;2098:32;;1680:456::o;2762:248::-;2830:6;2838;2891:2;2879:9;2870:7;2866:23;2862:32;2859:52;;;2907:1;2904;2897:12;2859:52;-1:-1:-1;;2930:23:1;;;3000:2;2985:18;;;2972:32;;-1:-1:-1;2762:248:1:o;3015:247::-;3074:6;3127:2;3115:9;3106:7;3102:23;3098:32;3095:52;;;3143:1;3140;3133:12;3095:52;3182:9;3169:23;3201:31;3226:5;3201:31;:::i;3267:160::-;3332:20;;3388:13;;3381:21;3371:32;;3361:60;;3417:1;3414;3407:12;3361:60;3267:160;;;:::o;3432:180::-;3488:6;3541:2;3529:9;3520:7;3516:23;3512:32;3509:52;;;3557:1;3554;3547:12;3509:52;3580:26;3596:9;3580:26;:::i;3617:180::-;3676:6;3729:2;3717:9;3708:7;3704:23;3700:32;3697:52;;;3745:1;3742;3735:12;3697:52;-1:-1:-1;3768:23:1;;3617:180;-1:-1:-1;3617:180:1:o;3802:404::-;3886:6;3894;3947:2;3935:9;3926:7;3922:23;3918:32;3915:52;;;3963:1;3960;3953:12;3915:52;4002:9;3989:23;4021:31;4046:5;4021:31;:::i;:::-;4071:5;-1:-1:-1;4128:2:1;4113:18;;4100:32;4141:33;4100:32;4141:33;:::i;:::-;4193:7;4183:17;;;3802:404;;;;;:::o;4211:689::-;4303:6;4311;4319;4372:2;4360:9;4351:7;4347:23;4343:32;4340:52;;;4388:1;4385;4378:12;4340:52;4428:9;4415:23;4457:18;4498:2;4490:6;4487:14;4484:34;;;4514:1;4511;4504:12;4484:34;4552:6;4541:9;4537:22;4527:32;;4597:7;4590:4;4586:2;4582:13;4578:27;4568:55;;4619:1;4616;4609:12;4568:55;4659:2;4646:16;4685:2;4677:6;4674:14;4671:34;;;4701:1;4698;4691:12;4671:34;4756:7;4749:4;4739:6;4736:1;4732:14;4728:2;4724:23;4720:34;4717:47;4714:67;;;4777:1;4774;4767:12;4714:67;4808:4;4800:13;;;;-1:-1:-1;4832:6:1;-1:-1:-1;4857:37:1;;4873:20;;;-1:-1:-1;4857:37:1;:::i;:::-;4847:47;;4211:689;;;;;:::o;5298:356::-;5500:2;5482:21;;;5519:18;;;5512:30;5578:34;5573:2;5558:18;;5551:62;5645:2;5630:18;;5298:356::o;6843:127::-;6904:10;6899:3;6895:20;6892:1;6885:31;6935:4;6932:1;6925:15;6959:4;6956:1;6949:15;6975:127;7036:10;7031:3;7027:20;7024:1;7017:31;7067:4;7064:1;7057:15;7091:4;7088:1;7081:15;7107:135;7146:3;-1:-1:-1;;7167:17:1;;7164:43;;;7187:18;;:::i;:::-;-1:-1:-1;7234:1:1;7223:13;;7107:135::o;11279:128::-;11319:3;11350:1;11346:6;11343:1;11340:13;11337:39;;;11356:18;;:::i;:::-;-1:-1:-1;11392:9:1;;11279:128::o;11816:125::-;11856:4;11884:1;11881;11878:8;11875:34;;;11889:18;;:::i;:::-;-1:-1:-1;11926:9:1;;11816:125::o;11946:168::-;11986:7;12052:1;12048;12044:6;12040:14;12037:1;12034:21;12029:1;12022:9;12015:17;12011:45;12008:71;;;12059:18;;:::i;:::-;-1:-1:-1;12099:9:1;;11946:168::o;12119:217::-;12159:1;12185;12175:132;;12229:10;12224:3;12220:20;12217:1;12210:31;12264:4;12261:1;12254:15;12292:4;12289:1;12282:15;12175:132;-1:-1:-1;12321:9:1;;12119:217::o;12884:251::-;12954:6;13007:2;12995:9;12986:7;12982:23;12978:32;12975:52;;;13023:1;13020;13013:12;12975:52;13055:9;13049:16;13074:31;13099:5;13074:31;:::i;13140:980::-;13402:4;13450:3;13439:9;13435:19;13481:6;13470:9;13463:25;13507:2;13545:6;13540:2;13529:9;13525:18;13518:34;13588:3;13583:2;13572:9;13568:18;13561:31;13612:6;13647;13641:13;13678:6;13670;13663:22;13716:3;13705:9;13701:19;13694:26;;13755:2;13747:6;13743:15;13729:29;;13776:1;13786:195;13800:6;13797:1;13794:13;13786:195;;;13865:13;;-1:-1:-1;;;;;13861:39:1;13849:52;;13956:15;;;;13921:12;;;;13897:1;13815:9;13786:195;;;-1:-1:-1;;;;;;;14037:32:1;;;;14032:2;14017:18;;14010:60;-1:-1:-1;;;14101:3:1;14086:19;14079:35;13998:3;13140:980;-1:-1:-1;;;13140:980:1:o
Swarm Source
ipfs://ddfed72b8b2b41080b58f3f4381ca2f248fadcfa73d4891ba7a689f9459d258e
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.