ERC-20
Overview
Max Total Supply
100,000,000 SPEC
Holders
232
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0xb3F55c5E...158CBE2BA The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
SPEC
Compiler Version
v0.8.24+commit.e11b9ed9
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-05-31 */ /* _____ ____ ____________ / ___// __ \/ ____/ ____/ \__ \/ /_/ / __/ / / ___/ / ____/ /___/ /___ /____/_/ /_____/\____/ _____ __ __ ____ ___ ____ / ___/____ ___ _______ __/ /___ _/ /____ / __ \/ | / __ \ \__ \/ __ \/ _ \/ ___/ / / / / __ `/ __/ _ \ / / / / /| |/ / / / ___/ / /_/ / __/ /__/ /_/ / / /_/ / /_/ __/ / /_/ / ___ / /_/ / /____/ .___/\___/\___/\__,_/_/\__,_/\__/\___/ /_____/_/ |_\____/ MULTIPLE STREAMS OF PASSIVE INCOME FROM CRYPTO? WELCOME TO SPECULATE DAO TG: https://t.me/speculatedao Website: https://SpeculateDAO.com Medium: https://medium.com/@teamspeculate Docs: https://speculate.gitbook.io/introduction/ Twitter: https://x.com/SpeculateDAO */ // SPDX-License-Identifier: MIT pragma solidity 0.8.24; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function transferOwnership(address newOwner) public onlyOwner { _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal { require( newOwner != address(0), "Ownable: new owner is the zero address" ); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer( address recipient, uint256 amount ) external returns (bool); function allowance( address owner, address spender ) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } interface IUniswapV2Factory { function createPair( address tokenA, address tokenB ) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); } contract SPEC is Context, IERC20, Ownable { // Storage mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; // Constants uint256 private constant MAX_TAX_RATE = 5; uint8 private constant DECIMALS = 18; uint256 private constant TOTAL_SUPPLY = 100_000_000 * 10 ** DECIMALS; uint256 private constant TAX_DELIMITER = 100; uint256 private constant MIN_TAX_SWAP_THRESHOLD = (TOTAL_SUPPLY * 1) / 10000; // 0.01% uint256 private constant MAX_TAX_SWAP = (TOTAL_SUPPLY * 100) / 10000; // 1% string private constant NAME = unicode"Speculate"; string private constant SYMBOL = unicode"SPEC"; // Wallets address payable public marketingWallet; address payable public daoWallet; address private uniswapV2Pair; // Variables uint256 public marketingShare = 40; // Percentage of tax allocated to marketing wallet uint256 public daoShare = 60; // Percentage of tax allocated to DAO wallet uint256 public buyTax = MAX_TAX_RATE; // Buy tax rate as a percentage uint256 public sellTax = MAX_TAX_RATE; // Sell tax rate as a percentage uint256 public taxSwapThreshold = (TOTAL_SUPPLY * 5) / 10000; // Threshold to trigger token swap to ETH (0.05%) bool public tradingOpen; // State variables bool private inSwap = false; // Prevents re-entrancy during token swap // Interfaces IUniswapV2Router02 private uniswapV2Router; // Modifiers modifier lockTheSwap() { inSwap = true; _; inSwap = false; } // Events event TradingOpen(); event TaxChanged(uint256 buyTax, uint256 sellTax); event RouterUpdated(address indexed newRouter, address indexed oldRouter); constructor(address _marketingWallet, address _daoWallet) { marketingWallet = payable(_marketingWallet); daoWallet = payable(_daoWallet); _balances[owner()] = TOTAL_SUPPLY; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[marketingWallet] = true; _isExcludedFromFee[daoWallet] = true; emit Transfer(address(0), owner(), TOTAL_SUPPLY); } 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 TOTAL_SUPPLY; } function balanceOf(address account) public view override returns (uint256) { return _balances[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); uint256 currentAllowance = _allowances[sender][_msgSender()]; if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "Transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } } return true; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "Approve from the zero address"); require(spender != address(0), "Approve to the zero address"); if (_allowances[owner][spender] != amount) { _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } } function _transfer(address from, address to, uint256 amount) private { require(from != address(0), "Transfer from the zero address"); require(amount > 0, "Amount must be more than zero"); uint256 taxAmount = 0; // Apply tax if neither sender nor recipient is excluded from fee if (!_isExcludedFromFee[from] && !_isExcludedFromFee[to]) { // Buy transaction if (from == uniswapV2Pair && to != address(uniswapV2Router)) { taxAmount = amount * buyTax / TAX_DELIMITER; // Sell transaction } else if (to == uniswapV2Pair) { taxAmount = amount * sellTax / TAX_DELIMITER; uint256 contractTokenBalance = balanceOf(address(this)); // Swap tokens for ETH if threshold is met if (!inSwap && contractTokenBalance > taxSwapThreshold) { uint256 amountToSwap = (amount < contractTokenBalance && amount < MAX_TAX_SWAP) ? amount : (contractTokenBalance < MAX_TAX_SWAP) ? contractTokenBalance : MAX_TAX_SWAP; swapTokensForEth(amountToSwap); sendETHToFee(address(this).balance); } } } if (taxAmount > 0) { _balances[address(this)] += taxAmount; emit Transfer(from, address(this), taxAmount); } _balances[from] -= amount; _balances[to] += (amount - taxAmount); emit Transfer(from, to, amount - taxAmount); } // Swap tokens for ETH function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } // Distribute ETH to marketing and DAO wallets function sendETHToFee(uint256 amount) private { bool success; uint256 _marketingPart = amount * marketingShare / TAX_DELIMITER; if (_marketingPart > 0) { (success, ) = marketingWallet.call{value: _marketingPart}(""); require(success, "Failed to send ETH"); } uint256 _daoPart = amount - _marketingPart; if (_daoPart > 0){ (success, ) = daoWallet.call{value: _daoPart}(""); require(success, "Failed to send ETH"); } } // Update DAO wallet address function setDaoWallet(address _daoWallet) external onlyOwner { daoWallet = payable(_daoWallet); } // Update marketing wallet address function setMarketingWallet(address _marketingWallet) external onlyOwner { marketingWallet = payable(_marketingWallet); } // Set tax distribution shares function setShareRatios(uint256 _marketingShare, uint256 _daoShare) external onlyOwner { require(_marketingShare + _daoShare == TAX_DELIMITER, "Shares must add up to 100"); marketingShare = _marketingShare; daoShare = _daoShare; } // Set buy and sell tax rates function setTax(uint256 _buyTax, uint256 _sellTax) external onlyOwner { require(_buyTax <= MAX_TAX_RATE && _sellTax <= MAX_TAX_RATE, "Tax cannot be more than 5%"); buyTax = _buyTax; sellTax = _sellTax; emit TaxChanged(_buyTax, _sellTax); } // Exclude or include account from fees function excludeFromFee(address account, bool value) external onlyOwner { _isExcludedFromFee[account] = value; } // Set threshold for token swap to ETH function setTaxSwapThreshold(uint256 threshold) external onlyOwner { require(threshold > MIN_TAX_SWAP_THRESHOLD, "Threshold cannot be less than 0.01%"); require(threshold < MAX_TAX_SWAP, "Threshold cannot be more than 1%"); taxSwapThreshold = threshold; } // Rescue ETH from contract function rescueETH() external onlyOwner { payable(owner()).transfer(address(this).balance); } // Rescue ERC20 tokens from contract function rescueToken(address tokenAddress) external onlyOwner { require(tokenAddress != address(this), "Cannot rescue contract's own tokens"); IERC20 token = IERC20(tokenAddress); uint256 tokenBalance = token.balanceOf(address(this)); require(tokenBalance > 0, "No tokens to rescue"); bool success = token.transfer(owner(), tokenBalance); require(success, "ERC20 rescue failed"); } // Open trading and add liquidity to Uniswap function openTrading() external onlyOwner { require(!tradingOpen, "Trading is already open"); uniswapV2Router = IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); _approve(address(this), address(uniswapV2Router), type(uint256).max); uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair( address(this), uniswapV2Router.WETH() ); uniswapV2Router.addLiquidityETH{value: address(this).balance}( address(this), balanceOf(address(this)), 0, 0, owner(), block.timestamp ); IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max); tradingOpen = true; emit TradingOpen(); } // Update the Uniswap router address function setRouterAddress(address newRouter) external onlyOwner { require(newRouter != address(0), "Router address cannot be zero address"); address oldRouter = address(uniswapV2Router); uniswapV2Router = IUniswapV2Router02(newRouter); emit RouterUpdated(newRouter, oldRouter); } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_daoWallet","type":"address"}],"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":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":"newRouter","type":"address"},{"indexed":true,"internalType":"address","name":"oldRouter","type":"address"}],"name":"RouterUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"buyTax","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellTax","type":"uint256"}],"name":"TaxChanged","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingOpen","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":"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":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"daoShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"daoWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"rescueToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_daoWallet","type":"address"}],"name":"setDaoWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setRouterAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingShare","type":"uint256"},{"internalType":"uint256","name":"_daoShare","type":"uint256"}],"name":"setShareRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyTax","type":"uint256"},{"internalType":"uint256","name":"_sellTax","type":"uint256"}],"name":"setTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"threshold","type":"uint256"}],"name":"setTaxSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526028600755603c60085560056009556005600a556127106012600a6200002b919062000365565b6200003b906305f5e1006200037c565b620000489060056200037c565b62000054919062000396565b600b55600c805461ff00191690553480156200006e575f80fd5b50604051620022c1380380620022c18339810160408190526200009191620003d2565b5f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600480546001600160a01b038085166001600160a01b03199283161790925560058054928416929091169190911790556200010f6012600a62000365565b6200011f906305f5e1006200037c565b60015f620001345f546001600160a01b031690565b6001600160a01b03166001600160a01b031681526020019081526020015f2081905550600160035f6200016c6200024860201b60201c565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff199687161790553081526003909352818320805485166001908117909155600454821684528284208054861682179055600554909116835291208054909216179055620001e65f546001600160a01b031690565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200021f6012600a62000365565b6200022f906305f5e1006200037c565b60405190815260200160405180910390a3505062000408565b5f546001600160a01b031690565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620002aa57815f19048211156200028e576200028e62000256565b808516156200029c57918102915b93841c93908002906200026f565b509250929050565b5f82620002c2575060016200035f565b81620002d057505f6200035f565b8160018114620002e95760028114620002f45762000314565b60019150506200035f565b60ff84111562000308576200030862000256565b50506001821b6200035f565b5060208310610133831016604e8410600b841016171562000339575081810a6200035f565b6200034583836200026a565b805f19048211156200035b576200035b62000256565b0290505b92915050565b5f6200037560ff841683620002b2565b9392505050565b80820281158282048414176200035f576200035f62000256565b5f82620003b157634e487b7160e01b5f52601260045260245ffd5b500490565b80516001600160a01b0381168114620003cd575f80fd5b919050565b5f8060408385031215620003e4575f80fd5b620003ef83620003b6565b9150620003ff60208401620003b6565b90509250929050565b611eab80620004165f395ff3fe6080604052600436106101c8575f3560e01c8063698a5897116100f2578063a9059cbb11610092578063de2aa57d11610062578063de2aa57d14610537578063df8408fe14610556578063f2fde38b14610575578063ffb54a9914610594575f80fd5b8063a9059cbb146104ab578063c9567bf9146104ca578063cc1776d3146104de578063dd62ed3e146104f3575f80fd5b806375f0a874116100cd57806375f0a8741461042f57806388d19f1b1461044e5780638da5cb5b1461046357806395d89b411461047f575f80fd5b8063698a5897146103b057806370a08231146103e7578063715018a61461041b575f80fd5b806341cb87fc116101685780635d098b38116101385780635d098b381461033e5780635e7b655c1461035d57806364997e0114610372578063667f652614610391575f80fd5b806341cb87fc146102cc5780634460d3cf146102eb57806347d632001461030a5780634f7041a514610329575f80fd5b806318160ddd116101a357806318160ddd1461026857806320800a001461027c57806323b872dd14610292578063313ce567146102b1575f80fd5b806306fdde03146101d357806309218ee714610216578063095ea7b314610239575f80fd5b366101cf57005b5f80fd5b3480156101de575f80fd5b5060408051808201909152600981526853706563756c61746560b81b60208201525b60405161020d9190611a54565b60405180910390f35b348015610221575f80fd5b5061022b60075481565b60405190815260200161020d565b348015610244575f80fd5b50610258610253366004611ab4565b6105ad565b604051901515815260200161020d565b348015610273575f80fd5b5061022b6105c3565b348015610287575f80fd5b506102906105e3565b005b34801561029d575f80fd5b506102586102ac366004611ade565b61064f565b3480156102bc575f80fd5b506040516012815260200161020d565b3480156102d7575f80fd5b506102906102e6366004611b1c565b6106f8565b3480156102f6575f80fd5b50610290610305366004611b1c565b6107e1565b348015610315575f80fd5b50610290610324366004611b3e565b6109f9565b348015610334575f80fd5b5061022b60095481565b348015610349575f80fd5b50610290610358366004611b1c565b610a86565b348015610368575f80fd5b5061022b600b5481565b34801561037d575f80fd5b5061029061038c366004611b1c565b610ad1565b34801561039c575f80fd5b506102906103ab366004611b3e565b610b1c565b3480156103bb575f80fd5b506005546103cf906001600160a01b031681565b6040516001600160a01b03909116815260200161020d565b3480156103f2575f80fd5b5061022b610401366004611b1c565b6001600160a01b03165f9081526001602052604090205490565b348015610426575f80fd5b50610290610bea565b34801561043a575f80fd5b506004546103cf906001600160a01b031681565b348015610459575f80fd5b5061022b60085481565b34801561046e575f80fd5b505f546001600160a01b03166103cf565b34801561048a575f80fd5b506040805180820190915260048152635350454360e01b6020820152610200565b3480156104b6575f80fd5b506102586104c5366004611ab4565b610c5b565b3480156104d5575f80fd5b50610290610c67565b3480156104e9575f80fd5b5061022b600a5481565b3480156104fe575f80fd5b5061022b61050d366004611b5e565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610542575f80fd5b50610290610551366004611b95565b611035565b348015610561575f80fd5b50610290610570366004611bb9565b61116f565b348015610580575f80fd5b5061029061058f366004611b1c565b6111c2565b34801561059f575f80fd5b50600c546102589060ff1681565b5f6105b93384846111f4565b5060015b92915050565b5f6105d06012600a611cd9565b6105de906305f5e100611ce7565b905090565b5f546001600160a01b031633146106155760405162461bcd60e51b815260040161060c90611cfe565b60405180910390fd5b5f80546040516001600160a01b03909116914780156108fc02929091818181858888f1935050505015801561064c573d5f803e3d5ffd5b50565b5f61065b84848461132c565b6001600160a01b0384165f9081526002602090815260408083203384529091529020545f1981146106ed57828110156106e05760405162461bcd60e51b815260206004820152602160248201527f5472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636044820152606560f81b606482015260840161060c565b6106ed85338584036111f4565b506001949350505050565b5f546001600160a01b031633146107215760405162461bcd60e51b815260040161060c90611cfe565b6001600160a01b0381166107855760405162461bcd60e51b815260206004820152602560248201527f526f7574657220616464726573732063616e6e6f74206265207a65726f206164604482015264647265737360d81b606482015260840161060c565b600c80546001600160a01b038381166201000081810262010000600160b01b03198516179094556040519390920416918291907f02dc5c233404867c793b749c6d644beb2277536d18a7e7974d3f238e4c6f1684905f90a35050565b5f546001600160a01b0316331461080a5760405162461bcd60e51b815260040161060c90611cfe565b306001600160a01b0382160361086e5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742072657363756520636f6e74726163742773206f776e20746f6b604482015262656e7360e81b606482015260840161060c565b6040516370a0823160e01b815230600482015281905f906001600160a01b038316906370a0823190602401602060405180830381865afa1580156108b4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108d89190611d33565b90505f811161091f5760405162461bcd60e51b81526020600482015260136024820152724e6f20746f6b656e7320746f2072657363756560681b604482015260640161060c565b5f826001600160a01b031663a9059cbb6109405f546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018590526044016020604051808303815f875af115801561098a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ae9190611d4a565b9050806109f35760405162461bcd60e51b8152602060048201526013602482015272115490cc8c081c995cd8dd594819985a5b1959606a1b604482015260640161060c565b50505050565b5f546001600160a01b03163314610a225760405162461bcd60e51b815260040161060c90611cfe565b6064610a2e8284611d65565b14610a7b5760405162461bcd60e51b815260206004820152601960248201527f536861726573206d7573742061646420757020746f2031303000000000000000604482015260640161060c565b600791909155600855565b5f546001600160a01b03163314610aaf5760405162461bcd60e51b815260040161060c90611cfe565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314610afa5760405162461bcd60e51b815260040161060c90611cfe565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314610b455760405162461bcd60e51b815260040161060c90611cfe565b60058211158015610b57575060058111155b610ba35760405162461bcd60e51b815260206004820152601a60248201527f5461782063616e6e6f74206265206d6f7265207468616e203525000000000000604482015260640161060c565b6009829055600a81905560408051838152602081018390527f4ac0d6b0d694ec6c120242feaca94cfb6fbfe646756cd7026301e3a5984f0450910160405180910390a15050565b5f546001600160a01b03163314610c135760405162461bcd60e51b815260040161060c90611cfe565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f6105b933848461132c565b5f546001600160a01b03163314610c905760405162461bcd60e51b815260040161060c90611cfe565b600c5460ff1615610ce35760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161060c565b600c805462010000600160b01b031916757a250d5630b4cf539739df2c5dacb4c659f2488d00001790819055610d2c9030906001600160a01b0362010000909104165f196111f4565b600c60029054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d7d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610da19190611d78565b6001600160a01b031663c9c6539630600c60029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e01573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e259190611d78565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610e6f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e939190611d78565b600680546001600160a01b039283166001600160a01b0319909116179055600c546201000090041663f305d7194730610ee0816001600160a01b03165f9081526001602052604090205490565b5f80610ef35f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610f59573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610f7e9190611d93565b5050600654600c5460405163095ea7b360e01b81526001600160a01b0362010000909204821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610fd9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ffd9190611d4a565b50600c805460ff191660011790556040517f08fd3d05bd9c1e39a2044b0a4e2fed4621113adaeeae8fc57e9f4a06777ecf07905f90a1565b5f546001600160a01b0316331461105e5760405162461bcd60e51b815260040161060c90611cfe565b61271061106d6012600a611cd9565b61107b906305f5e100611ce7565b611086906001611ce7565b6110909190611dbe565b81116110ea5760405162461bcd60e51b815260206004820152602360248201527f5468726573686f6c642063616e6e6f74206265206c657373207468616e20302e60448201526230312560e81b606482015260840161060c565b6127106110f96012600a611cd9565b611107906305f5e100611ce7565b611112906064611ce7565b61111c9190611dbe565b811061116a5760405162461bcd60e51b815260206004820181905260248201527f5468726573686f6c642063616e6e6f74206265206d6f7265207468616e203125604482015260640161060c565b600b55565b5f546001600160a01b031633146111985760405162461bcd60e51b815260040161060c90611cfe565b6001600160a01b03919091165f908152600360205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146111eb5760405162461bcd60e51b815260040161060c90611cfe565b61064c816116be565b6001600160a01b03831661124a5760405162461bcd60e51b815260206004820152601d60248201527f417070726f76652066726f6d20746865207a65726f2061646472657373000000604482015260640161060c565b6001600160a01b0382166112a05760405162461bcd60e51b815260206004820152601b60248201527f417070726f766520746f20746865207a65726f20616464726573730000000000604482015260640161060c565b6001600160a01b038084165f908152600260209081526040808320938616835292905220548114611327576001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b505050565b6001600160a01b0383166113825760405162461bcd60e51b815260206004820152601e60248201527f5472616e736665722066726f6d20746865207a65726f20616464726573730000604482015260640161060c565b5f81116113d15760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d757374206265206d6f7265207468616e207a65726f000000604482015260640161060c565b6001600160a01b0383165f9081526003602052604081205460ff1615801561141157506001600160a01b0383165f9081526003602052604090205460ff16155b156115a1576006546001600160a01b0385811691161480156114475750600c546001600160a01b03848116620100009092041614155b1561146d5760646009548361145c9190611ce7565b6114669190611dbe565b90506115a1565b6006546001600160a01b03908116908416036115a1576064600a54836114939190611ce7565b61149d9190611dbe565b305f90815260016020526040902054600c5491925090610100900460ff161580156114c95750600b5481115b1561159f575f818410801561150e57506127106114e86012600a611cd9565b6114f6906305f5e100611ce7565b611501906064611ce7565b61150b9190611dbe565b84105b611587576127106115216012600a611cd9565b61152f906305f5e100611ce7565b61153a906064611ce7565b6115449190611dbe565b8210611581576127106115596012600a611cd9565b611567906305f5e100611ce7565b611572906064611ce7565b61157c9190611dbe565b611589565b81611589565b835b90506115948161177c565b61159d476118ef565b505b505b801561160b57305f90815260016020526040812080548392906115c5908490611d65565b909155505060405181815230906001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6001600160a01b0384165f9081526001602052604081208054849290611632908490611ddd565b9091555061164290508183611ddd565b6001600160a01b0384165f9081526001602052604081208054909190611669908490611d65565b90915550506001600160a01b038084169085167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6116a78486611ddd565b60405190815260200160405180910390a350505050565b6001600160a01b0381166117235760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161060c565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b600c805461ff0019166101001790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106117be576117be611df0565b60200260200101906001600160a01b031690816001600160a01b031681525050600c60029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561182f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118539190611d78565b8160018151811061186657611866611df0565b6001600160a01b039283166020918202929092010152600c5460405163791ac94760e01b8152620100009091049091169063791ac947906118b39085905f90869030904290600401611e04565b5f604051808303815f87803b1580156118ca575f80fd5b505af11580156118dc573d5f803e3d5ffd5b5050600c805461ff001916905550505050565b5f806064600754846119019190611ce7565b61190b9190611dbe565b905080156119aa576004546040516001600160a01b039091169082905f81818185875af1925050503d805f811461195d576040519150601f19603f3d011682016040523d82523d5f602084013e611962565b606091505b505080925050816119aa5760405162461bcd60e51b815260206004820152601260248201527108cc2d2d8cac840e8de40e6cadcc8408aa8960731b604482015260640161060c565b5f6119b58285611ddd565b905080156109f3576005546040516001600160a01b039091169082905f81818185875af1925050503d805f8114611a07576040519150601f19603f3d011682016040523d82523d5f602084013e611a0c565b606091505b505080935050826109f35760405162461bcd60e51b815260206004820152601260248201527108cc2d2d8cac840e8de40e6cadcc8408aa8960731b604482015260640161060c565b5f602080835283518060208501525f5b81811015611a8057858101830151858201604001528201611a64565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461064c575f80fd5b5f8060408385031215611ac5575f80fd5b8235611ad081611aa0565b946020939093013593505050565b5f805f60608486031215611af0575f80fd5b8335611afb81611aa0565b92506020840135611b0b81611aa0565b929592945050506040919091013590565b5f60208284031215611b2c575f80fd5b8135611b3781611aa0565b9392505050565b5f8060408385031215611b4f575f80fd5b50508035926020909101359150565b5f8060408385031215611b6f575f80fd5b8235611b7a81611aa0565b91506020830135611b8a81611aa0565b809150509250929050565b5f60208284031215611ba5575f80fd5b5035919050565b801515811461064c575f80fd5b5f8060408385031215611bca575f80fd5b8235611bd581611aa0565b91506020830135611b8a81611bac565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611c3357815f1904821115611c1957611c19611be5565b80851615611c2657918102915b93841c9390800290611bfe565b509250929050565b5f82611c49575060016105bd565b81611c5557505f6105bd565b8160018114611c6b5760028114611c7557611c91565b60019150506105bd565b60ff841115611c8657611c86611be5565b50506001821b6105bd565b5060208310610133831016604e8410600b8410161715611cb4575081810a6105bd565b611cbe8383611bf9565b805f1904821115611cd157611cd1611be5565b029392505050565b5f611b3760ff841683611c3b565b80820281158282048414176105bd576105bd611be5565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611d43575f80fd5b5051919050565b5f60208284031215611d5a575f80fd5b8151611b3781611bac565b808201808211156105bd576105bd611be5565b5f60208284031215611d88575f80fd5b8151611b3781611aa0565b5f805f60608486031215611da5575f80fd5b8351925060208401519150604084015190509250925092565b5f82611dd857634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156105bd576105bd611be5565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611e545784516001600160a01b031683529383019391830191600101611e2f565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212204d9f4d2da69909d6c9d0d785b8155c135ab772414ae459b0d9703c0ef8a0490c64736f6c63430008180033000000000000000000000000a94f2d31ea9931ae235dbe79b7667bbc1ef5236b000000000000000000000000192db7d02eaeed183d3638e6f185627ba9ffb1ab
Deployed Bytecode
0x6080604052600436106101c8575f3560e01c8063698a5897116100f2578063a9059cbb11610092578063de2aa57d11610062578063de2aa57d14610537578063df8408fe14610556578063f2fde38b14610575578063ffb54a9914610594575f80fd5b8063a9059cbb146104ab578063c9567bf9146104ca578063cc1776d3146104de578063dd62ed3e146104f3575f80fd5b806375f0a874116100cd57806375f0a8741461042f57806388d19f1b1461044e5780638da5cb5b1461046357806395d89b411461047f575f80fd5b8063698a5897146103b057806370a08231146103e7578063715018a61461041b575f80fd5b806341cb87fc116101685780635d098b38116101385780635d098b381461033e5780635e7b655c1461035d57806364997e0114610372578063667f652614610391575f80fd5b806341cb87fc146102cc5780634460d3cf146102eb57806347d632001461030a5780634f7041a514610329575f80fd5b806318160ddd116101a357806318160ddd1461026857806320800a001461027c57806323b872dd14610292578063313ce567146102b1575f80fd5b806306fdde03146101d357806309218ee714610216578063095ea7b314610239575f80fd5b366101cf57005b5f80fd5b3480156101de575f80fd5b5060408051808201909152600981526853706563756c61746560b81b60208201525b60405161020d9190611a54565b60405180910390f35b348015610221575f80fd5b5061022b60075481565b60405190815260200161020d565b348015610244575f80fd5b50610258610253366004611ab4565b6105ad565b604051901515815260200161020d565b348015610273575f80fd5b5061022b6105c3565b348015610287575f80fd5b506102906105e3565b005b34801561029d575f80fd5b506102586102ac366004611ade565b61064f565b3480156102bc575f80fd5b506040516012815260200161020d565b3480156102d7575f80fd5b506102906102e6366004611b1c565b6106f8565b3480156102f6575f80fd5b50610290610305366004611b1c565b6107e1565b348015610315575f80fd5b50610290610324366004611b3e565b6109f9565b348015610334575f80fd5b5061022b60095481565b348015610349575f80fd5b50610290610358366004611b1c565b610a86565b348015610368575f80fd5b5061022b600b5481565b34801561037d575f80fd5b5061029061038c366004611b1c565b610ad1565b34801561039c575f80fd5b506102906103ab366004611b3e565b610b1c565b3480156103bb575f80fd5b506005546103cf906001600160a01b031681565b6040516001600160a01b03909116815260200161020d565b3480156103f2575f80fd5b5061022b610401366004611b1c565b6001600160a01b03165f9081526001602052604090205490565b348015610426575f80fd5b50610290610bea565b34801561043a575f80fd5b506004546103cf906001600160a01b031681565b348015610459575f80fd5b5061022b60085481565b34801561046e575f80fd5b505f546001600160a01b03166103cf565b34801561048a575f80fd5b506040805180820190915260048152635350454360e01b6020820152610200565b3480156104b6575f80fd5b506102586104c5366004611ab4565b610c5b565b3480156104d5575f80fd5b50610290610c67565b3480156104e9575f80fd5b5061022b600a5481565b3480156104fe575f80fd5b5061022b61050d366004611b5e565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610542575f80fd5b50610290610551366004611b95565b611035565b348015610561575f80fd5b50610290610570366004611bb9565b61116f565b348015610580575f80fd5b5061029061058f366004611b1c565b6111c2565b34801561059f575f80fd5b50600c546102589060ff1681565b5f6105b93384846111f4565b5060015b92915050565b5f6105d06012600a611cd9565b6105de906305f5e100611ce7565b905090565b5f546001600160a01b031633146106155760405162461bcd60e51b815260040161060c90611cfe565b60405180910390fd5b5f80546040516001600160a01b03909116914780156108fc02929091818181858888f1935050505015801561064c573d5f803e3d5ffd5b50565b5f61065b84848461132c565b6001600160a01b0384165f9081526002602090815260408083203384529091529020545f1981146106ed57828110156106e05760405162461bcd60e51b815260206004820152602160248201527f5472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636044820152606560f81b606482015260840161060c565b6106ed85338584036111f4565b506001949350505050565b5f546001600160a01b031633146107215760405162461bcd60e51b815260040161060c90611cfe565b6001600160a01b0381166107855760405162461bcd60e51b815260206004820152602560248201527f526f7574657220616464726573732063616e6e6f74206265207a65726f206164604482015264647265737360d81b606482015260840161060c565b600c80546001600160a01b038381166201000081810262010000600160b01b03198516179094556040519390920416918291907f02dc5c233404867c793b749c6d644beb2277536d18a7e7974d3f238e4c6f1684905f90a35050565b5f546001600160a01b0316331461080a5760405162461bcd60e51b815260040161060c90611cfe565b306001600160a01b0382160361086e5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742072657363756520636f6e74726163742773206f776e20746f6b604482015262656e7360e81b606482015260840161060c565b6040516370a0823160e01b815230600482015281905f906001600160a01b038316906370a0823190602401602060405180830381865afa1580156108b4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108d89190611d33565b90505f811161091f5760405162461bcd60e51b81526020600482015260136024820152724e6f20746f6b656e7320746f2072657363756560681b604482015260640161060c565b5f826001600160a01b031663a9059cbb6109405f546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018590526044016020604051808303815f875af115801561098a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ae9190611d4a565b9050806109f35760405162461bcd60e51b8152602060048201526013602482015272115490cc8c081c995cd8dd594819985a5b1959606a1b604482015260640161060c565b50505050565b5f546001600160a01b03163314610a225760405162461bcd60e51b815260040161060c90611cfe565b6064610a2e8284611d65565b14610a7b5760405162461bcd60e51b815260206004820152601960248201527f536861726573206d7573742061646420757020746f2031303000000000000000604482015260640161060c565b600791909155600855565b5f546001600160a01b03163314610aaf5760405162461bcd60e51b815260040161060c90611cfe565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314610afa5760405162461bcd60e51b815260040161060c90611cfe565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314610b455760405162461bcd60e51b815260040161060c90611cfe565b60058211158015610b57575060058111155b610ba35760405162461bcd60e51b815260206004820152601a60248201527f5461782063616e6e6f74206265206d6f7265207468616e203525000000000000604482015260640161060c565b6009829055600a81905560408051838152602081018390527f4ac0d6b0d694ec6c120242feaca94cfb6fbfe646756cd7026301e3a5984f0450910160405180910390a15050565b5f546001600160a01b03163314610c135760405162461bcd60e51b815260040161060c90611cfe565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f6105b933848461132c565b5f546001600160a01b03163314610c905760405162461bcd60e51b815260040161060c90611cfe565b600c5460ff1615610ce35760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161060c565b600c805462010000600160b01b031916757a250d5630b4cf539739df2c5dacb4c659f2488d00001790819055610d2c9030906001600160a01b0362010000909104165f196111f4565b600c60029054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d7d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610da19190611d78565b6001600160a01b031663c9c6539630600c60029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e01573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e259190611d78565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610e6f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e939190611d78565b600680546001600160a01b039283166001600160a01b0319909116179055600c546201000090041663f305d7194730610ee0816001600160a01b03165f9081526001602052604090205490565b5f80610ef35f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610f59573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610f7e9190611d93565b5050600654600c5460405163095ea7b360e01b81526001600160a01b0362010000909204821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610fd9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ffd9190611d4a565b50600c805460ff191660011790556040517f08fd3d05bd9c1e39a2044b0a4e2fed4621113adaeeae8fc57e9f4a06777ecf07905f90a1565b5f546001600160a01b0316331461105e5760405162461bcd60e51b815260040161060c90611cfe565b61271061106d6012600a611cd9565b61107b906305f5e100611ce7565b611086906001611ce7565b6110909190611dbe565b81116110ea5760405162461bcd60e51b815260206004820152602360248201527f5468726573686f6c642063616e6e6f74206265206c657373207468616e20302e60448201526230312560e81b606482015260840161060c565b6127106110f96012600a611cd9565b611107906305f5e100611ce7565b611112906064611ce7565b61111c9190611dbe565b811061116a5760405162461bcd60e51b815260206004820181905260248201527f5468726573686f6c642063616e6e6f74206265206d6f7265207468616e203125604482015260640161060c565b600b55565b5f546001600160a01b031633146111985760405162461bcd60e51b815260040161060c90611cfe565b6001600160a01b03919091165f908152600360205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146111eb5760405162461bcd60e51b815260040161060c90611cfe565b61064c816116be565b6001600160a01b03831661124a5760405162461bcd60e51b815260206004820152601d60248201527f417070726f76652066726f6d20746865207a65726f2061646472657373000000604482015260640161060c565b6001600160a01b0382166112a05760405162461bcd60e51b815260206004820152601b60248201527f417070726f766520746f20746865207a65726f20616464726573730000000000604482015260640161060c565b6001600160a01b038084165f908152600260209081526040808320938616835292905220548114611327576001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b505050565b6001600160a01b0383166113825760405162461bcd60e51b815260206004820152601e60248201527f5472616e736665722066726f6d20746865207a65726f20616464726573730000604482015260640161060c565b5f81116113d15760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d757374206265206d6f7265207468616e207a65726f000000604482015260640161060c565b6001600160a01b0383165f9081526003602052604081205460ff1615801561141157506001600160a01b0383165f9081526003602052604090205460ff16155b156115a1576006546001600160a01b0385811691161480156114475750600c546001600160a01b03848116620100009092041614155b1561146d5760646009548361145c9190611ce7565b6114669190611dbe565b90506115a1565b6006546001600160a01b03908116908416036115a1576064600a54836114939190611ce7565b61149d9190611dbe565b305f90815260016020526040902054600c5491925090610100900460ff161580156114c95750600b5481115b1561159f575f818410801561150e57506127106114e86012600a611cd9565b6114f6906305f5e100611ce7565b611501906064611ce7565b61150b9190611dbe565b84105b611587576127106115216012600a611cd9565b61152f906305f5e100611ce7565b61153a906064611ce7565b6115449190611dbe565b8210611581576127106115596012600a611cd9565b611567906305f5e100611ce7565b611572906064611ce7565b61157c9190611dbe565b611589565b81611589565b835b90506115948161177c565b61159d476118ef565b505b505b801561160b57305f90815260016020526040812080548392906115c5908490611d65565b909155505060405181815230906001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6001600160a01b0384165f9081526001602052604081208054849290611632908490611ddd565b9091555061164290508183611ddd565b6001600160a01b0384165f9081526001602052604081208054909190611669908490611d65565b90915550506001600160a01b038084169085167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6116a78486611ddd565b60405190815260200160405180910390a350505050565b6001600160a01b0381166117235760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161060c565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b600c805461ff0019166101001790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106117be576117be611df0565b60200260200101906001600160a01b031690816001600160a01b031681525050600c60029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561182f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118539190611d78565b8160018151811061186657611866611df0565b6001600160a01b039283166020918202929092010152600c5460405163791ac94760e01b8152620100009091049091169063791ac947906118b39085905f90869030904290600401611e04565b5f604051808303815f87803b1580156118ca575f80fd5b505af11580156118dc573d5f803e3d5ffd5b5050600c805461ff001916905550505050565b5f806064600754846119019190611ce7565b61190b9190611dbe565b905080156119aa576004546040516001600160a01b039091169082905f81818185875af1925050503d805f811461195d576040519150601f19603f3d011682016040523d82523d5f602084013e611962565b606091505b505080925050816119aa5760405162461bcd60e51b815260206004820152601260248201527108cc2d2d8cac840e8de40e6cadcc8408aa8960731b604482015260640161060c565b5f6119b58285611ddd565b905080156109f3576005546040516001600160a01b039091169082905f81818185875af1925050503d805f8114611a07576040519150601f19603f3d011682016040523d82523d5f602084013e611a0c565b606091505b505080935050826109f35760405162461bcd60e51b815260206004820152601260248201527108cc2d2d8cac840e8de40e6cadcc8408aa8960731b604482015260640161060c565b5f602080835283518060208501525f5b81811015611a8057858101830151858201604001528201611a64565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461064c575f80fd5b5f8060408385031215611ac5575f80fd5b8235611ad081611aa0565b946020939093013593505050565b5f805f60608486031215611af0575f80fd5b8335611afb81611aa0565b92506020840135611b0b81611aa0565b929592945050506040919091013590565b5f60208284031215611b2c575f80fd5b8135611b3781611aa0565b9392505050565b5f8060408385031215611b4f575f80fd5b50508035926020909101359150565b5f8060408385031215611b6f575f80fd5b8235611b7a81611aa0565b91506020830135611b8a81611aa0565b809150509250929050565b5f60208284031215611ba5575f80fd5b5035919050565b801515811461064c575f80fd5b5f8060408385031215611bca575f80fd5b8235611bd581611aa0565b91506020830135611b8a81611bac565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611c3357815f1904821115611c1957611c19611be5565b80851615611c2657918102915b93841c9390800290611bfe565b509250929050565b5f82611c49575060016105bd565b81611c5557505f6105bd565b8160018114611c6b5760028114611c7557611c91565b60019150506105bd565b60ff841115611c8657611c86611be5565b50506001821b6105bd565b5060208310610133831016604e8410600b8410161715611cb4575081810a6105bd565b611cbe8383611bf9565b805f1904821115611cd157611cd1611be5565b029392505050565b5f611b3760ff841683611c3b565b80820281158282048414176105bd576105bd611be5565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611d43575f80fd5b5051919050565b5f60208284031215611d5a575f80fd5b8151611b3781611bac565b808201808211156105bd576105bd611be5565b5f60208284031215611d88575f80fd5b8151611b3781611aa0565b5f805f60608486031215611da5575f80fd5b8351925060208401519150604084015190509250925092565b5f82611dd857634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156105bd576105bd611be5565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611e545784516001600160a01b031683529383019391830191600101611e2f565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212204d9f4d2da69909d6c9d0d785b8155c135ab772414ae459b0d9703c0ef8a0490c64736f6c63430008180033
Deployed Bytecode Sourcemap
3710:10396:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6047:82;;;;;;;;;;-1:-1:-1;6117:4:0;;;;;;;;;;;;-1:-1:-1;;;6117:4:0;;;;6047:82;;;;;;;:::i;:::-;;;;;;;;4636:34;;;;;;;;;;;;;;;;;;;713:25:1;;;701:2;686:18;4636:34:0;567:177:1;6932:186:0;;;;;;;;;;-1:-1:-1;6932:186:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;6932:186:0;1205:187:1;6321:100:0;;;;;;;;;;;;;:::i;12206:107::-;;;;;;;;;;;;;:::i;:::-;;7126:554;;;;;;;;;;-1:-1:-1;7126:554:0;;;;;:::i;:::-;;:::i;6231:82::-;;;;;;;;;;-1:-1:-1;6231:82:0;;4061:2;2000:36:1;;1988:2;1973:18;6231:82:0;1858:184:1;13746:320:0;;;;;;;;;;-1:-1:-1;13746:320:0;;;;;:::i;:::-;;:::i;12363:440::-;;;;;;;;;;-1:-1:-1;12363:440:0;;;;;:::i;:::-;;:::i;11062:262::-;;;;;;;;;;-1:-1:-1;11062:262:0;;;;;:::i;:::-;;:::i;4808:36::-;;;;;;;;;;;;;;;;10883:135;;;;;;;;;;-1:-1:-1;10883:135:0;;;;;:::i;:::-;;:::i;4960:60::-;;;;;;;;;;;;;;;;10724:111;;;;;;;;;;-1:-1:-1;10724:111:0;;;;;:::i;:::-;;:::i;11367:280::-;;;;;;;;;;-1:-1:-1;11367:280:0;;;;;:::i;:::-;;:::i;4541:32::-;;;;;;;;;;-1:-1:-1;4541:32:0;;;;-1:-1:-1;;;;;4541:32:0;;;;;;-1:-1:-1;;;;;2732:32:1;;;2714:51;;2702:2;2687:18;4541:32:0;2552:219:1;6429:119:0;;;;;;;;;;-1:-1:-1;6429:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;6522:18:0;6495:7;6522:18;;;:9;:18;;;;;;;6429:119;1928:148;;;;;;;;;;;;;:::i;4496:38::-;;;;;;;;;;-1:-1:-1;4496:38:0;;;;-1:-1:-1;;;;;4496:38:0;;;4728:28;;;;;;;;;;;;;;;;1323:79;;;;;;;;;;-1:-1:-1;1361:7:0;1388:6;-1:-1:-1;;;;;1388:6:0;1323:79;;6137:86;;;;;;;;;;-1:-1:-1;6209:6:0;;;;;;;;;;;;-1:-1:-1;;;6209:6:0;;;;6137:86;;6556:192;;;;;;;;;;-1:-1:-1;6556:192:0;;;;;:::i;:::-;;:::i;12861:835::-;;;;;;;;;;;;;:::i;4883:37::-;;;;;;;;;;;;;;;;6756:168;;;;;;;;;;-1:-1:-1;6756:168:0;;;;;:::i;:::-;-1:-1:-1;;;;;6889:18:0;;;6862:7;6889:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6756:168;11878:287;;;;;;;;;;-1:-1:-1;11878:287:0;;;;;:::i;:::-;;:::i;11700:126::-;;;;;;;;;;-1:-1:-1;11700:126:0;;;;;:::i;:::-;;:::i;1537:109::-;;;;;;;;;;-1:-1:-1;1537:109:0;;;;;:::i;:::-;;:::i;5077:23::-;;;;;;;;;;-1:-1:-1;5077:23:0;;;;;;;;6932:186;7032:4;7049:39;954:10;7072:7;7081:6;7049:8;:39::i;:::-;-1:-1:-1;7106:4:0;6932:186;;;;;:::o;6321:100::-;6374:7;4124:14;4061:2;4124;:14;:::i;:::-;4110:28;;:11;:28;:::i;:::-;6394:19;;6321:100;:::o;12206:107::-;1450:6;;-1:-1:-1;;;;;1450:6:0;954:10;1450:22;1442:67;;;;-1:-1:-1;;;1442:67:0;;;;;;;:::i;:::-;;;;;;;;;1361:7;1388:6;;12257:48:::1;::::0;-1:-1:-1;;;;;1388:6:0;;;;12283:21:::1;12257:48:::0;::::1;;;::::0;12283:21;;12257:48;1361:7;12257:48;12283:21;1388:6;12257:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12206:107::o:0;7126:554::-;7258:4;7275:36;7285:6;7293:9;7304:6;7275:9;:36::i;:::-;-1:-1:-1;;;;;7349:19:0;;7322:24;7349:19;;;:11;:19;;;;;;;;954:10;7349:33;;;;;;;;-1:-1:-1;;7397:37:0;;7393:258;;7479:6;7459:16;:26;;7451:72;;;;-1:-1:-1;;;7451:72:0;;6317:2:1;7451:72:0;;;6299:21:1;6356:2;6336:18;;;6329:30;6395:34;6375:18;;;6368:62;-1:-1:-1;;;6446:18:1;;;6439:31;6487:19;;7451:72:0;6115:397:1;7451:72:0;7567:57;7576:6;954:10;7617:6;7598:16;:25;7567:8;:57::i;:::-;-1:-1:-1;7668:4:0;;7126:554;-1:-1:-1;;;;7126:554:0:o;13746:320::-;1450:6;;-1:-1:-1;;;;;1450:6:0;954:10;1450:22;1442:67;;;;-1:-1:-1;;;1442:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13829:23:0;::::1;13821:73;;;::::0;-1:-1:-1;;;13821:73:0;;6719:2:1;13821:73:0::1;::::0;::::1;6701:21:1::0;6758:2;6738:18;;;6731:30;6797:34;6777:18;;;6770:62;-1:-1:-1;;;6848:18:1;;;6841:35;6893:19;;13821:73:0::1;6517:401:1::0;13821:73:0::1;13933:15;::::0;;-1:-1:-1;;;;;13960:47:0;;::::1;13933:15:::0;13960:47;;::::1;-1:-1:-1::0;;;;;;13960:47:0;::::1;;::::0;;;14023:35:::1;::::0;13933:15;;;::::1;;::::0;;;13960:47;14023:35:::1;::::0;13905:17:::1;::::0;14023:35:::1;13810:256;13746:320:::0;:::o;12363:440::-;1450:6;;-1:-1:-1;;;;;1450:6:0;954:10;1450:22;1442:67;;;;-1:-1:-1;;;1442:67:0;;;;;;;:::i;:::-;12468:4:::1;-1:-1:-1::0;;;;;12444:29:0;::::1;::::0;12436:77:::1;;;::::0;-1:-1:-1;;;12436:77:0;;7125:2:1;12436:77:0::1;::::0;::::1;7107:21:1::0;7164:2;7144:18;;;7137:30;7203:34;7183:18;;;7176:62;-1:-1:-1;;;7254:18:1;;;7247:33;7297:19;;12436:77:0::1;6923:399:1::0;12436:77:0::1;12593:30;::::0;-1:-1:-1;;;12593:30:0;;12617:4:::1;12593:30;::::0;::::1;2714:51:1::0;12546:12:0;;12524::::1;::::0;-1:-1:-1;;;;;12593:15:0;::::1;::::0;::::1;::::0;2687:18:1;;12593:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12570:53;;12657:1;12642:12;:16;12634:48;;;::::0;-1:-1:-1;;;12634:48:0;;7718:2:1;12634:48:0::1;::::0;::::1;7700:21:1::0;7757:2;7737:18;;;7730:30;-1:-1:-1;;;7776:18:1;;;7769:49;7835:18;;12634:48:0::1;7516:343:1::0;12634:48:0::1;12693:12;12708:5;-1:-1:-1::0;;;;;12708:14:0::1;;12723:7;1361::::0;1388:6;-1:-1:-1;;;;;1388:6:0;;1323:79;12723:7:::1;12708:37;::::0;-1:-1:-1;;;;;;12708:37:0::1;::::0;;;;;;-1:-1:-1;;;;;8056:32:1;;;12708:37:0::1;::::0;::::1;8038:51:1::0;8105:18;;;8098:34;;;8011:18;;12708:37:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12693:52;;12764:7;12756:39;;;::::0;-1:-1:-1;;;12756:39:0;;8595:2:1;12756:39:0::1;::::0;::::1;8577:21:1::0;8634:2;8614:18;;;8607:30;-1:-1:-1;;;8653:18:1;;;8646:49;8712:18;;12756:39:0::1;8393:343:1::0;12756:39:0::1;12425:378;;;12363:440:::0;:::o;11062:262::-;1450:6;;-1:-1:-1;;;;;1450:6:0;954:10;1450:22;1442:67;;;;-1:-1:-1;;;1442:67:0;;;;;;;:::i;:::-;4186:3:::1;11168:27;11186:9:::0;11168:15;:27:::1;:::i;:::-;:44;11160:82;;;::::0;-1:-1:-1;;;11160:82:0;;9073:2:1;11160:82:0::1;::::0;::::1;9055:21:1::0;9112:2;9092:18;;;9085:30;9151:27;9131:18;;;9124:55;9196:18;;11160:82:0::1;8871:349:1::0;11160:82:0::1;11253:14;:32:::0;;;;11296:8:::1;:20:::0;11062:262::o;10883:135::-;1450:6;;-1:-1:-1;;;;;1450:6:0;954:10;1450:22;1442:67;;;;-1:-1:-1;;;1442:67:0;;;;;;;:::i;:::-;10967:15:::1;:43:::0;;-1:-1:-1;;;;;;10967:43:0::1;-1:-1:-1::0;;;;;10967:43:0;;;::::1;::::0;;;::::1;::::0;;10883:135::o;10724:111::-;1450:6;;-1:-1:-1;;;;;1450:6:0;954:10;1450:22;1442:67;;;;-1:-1:-1;;;1442:67:0;;;;;;;:::i;:::-;10796:9:::1;:31:::0;;-1:-1:-1;;;;;;10796:31:0::1;-1:-1:-1::0;;;;;10796:31:0;;;::::1;::::0;;;::::1;::::0;;10724:111::o;11367:280::-;1450:6;;-1:-1:-1;;;;;1450:6:0;954:10;1450:22;1442:67;;;;-1:-1:-1;;;1442:67:0;;;;;;;:::i;:::-;4019:1:::1;11456:7;:23;;:51;;;;;4019:1;11483:8;:24;;11456:51;11448:90;;;::::0;-1:-1:-1;;;11448:90:0;;9427:2:1;11448:90:0::1;::::0;::::1;9409:21:1::0;9466:2;9446:18;;;9439:30;9505:28;9485:18;;;9478:56;9551:18;;11448:90:0::1;9225:350:1::0;11448:90:0::1;11549:6;:16:::0;;;11576:7:::1;:18:::0;;;11610:29:::1;::::0;;9754:25:1;;;9810:2;9795:18;;9788:34;;;11610:29:0::1;::::0;9727:18:1;11610:29:0::1;;;;;;;11367:280:::0;;:::o;1928:148::-;1450:6;;-1:-1:-1;;;;;1450:6:0;954:10;1450:22;1442:67;;;;-1:-1:-1;;;1442:67:0;;;;;;;:::i;:::-;2035:1:::1;2019:6:::0;;1998:40:::1;::::0;-1:-1:-1;;;;;2019:6:0;;::::1;::::0;1998:40:::1;::::0;2035:1;;1998:40:::1;2066:1;2049:19:::0;;-1:-1:-1;;;;;;2049:19:0::1;::::0;;1928:148::o;6556:192::-;6659:4;6676:42;954:10;6700:9;6711:6;6676:9;:42::i;12861:835::-;1450:6;;-1:-1:-1;;;;;1450:6:0;954:10;1450:22;1442:67;;;;-1:-1:-1;;;1442:67:0;;;;;;;:::i;:::-;12923:11:::1;::::0;::::1;;12922:12;12914:48;;;::::0;-1:-1:-1;;;12914:48:0;;10035:2:1;12914:48:0::1;::::0;::::1;10017:21:1::0;10074:2;10054:18;;;10047:30;10113:25;10093:18;;;10086:53;10156:18;;12914:48:0::1;9833:347:1::0;12914:48:0::1;12973:15;:104:::0;;-1:-1:-1;;;;;;12973:104:0::1;::::0;::::1;::::0;;;;13088:68:::1;::::0;13105:4:::1;::::0;-1:-1:-1;;;;;12973:104:0;13120:15;;::::1;;-1:-1:-1::0;;13088:8:0::1;:68::i;:::-;13201:15;;;;;;;;;-1:-1:-1::0;;;;;13201:15:0::1;-1:-1:-1::0;;;;;13201:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13183:55:0::1;;13261:4;13281:15;;;;;;;;;-1:-1:-1::0;;;;;13281:15:0::1;-1:-1:-1::0;;;;;13281:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13183:131;::::0;-1:-1:-1;;;;;;13183:131:0::1;::::0;;;;;;-1:-1:-1;;;;;10671:15:1;;;13183:131:0::1;::::0;::::1;10653:34:1::0;10723:15;;10703:18;;;10696:43;10588:18;;13183:131:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13167:13;:147:::0;;-1:-1:-1;;;;;13167:147:0;;::::1;-1:-1:-1::0;;;;;;13167:147:0;;::::1;;::::0;;13325:15:::1;::::0;;;::::1;;:31;13364:21;13409:4;13429:24;13409:4:::0;-1:-1:-1;;;;;6522:18:0;6495:7;6522:18;;;:9;:18;;;;;;;6429:119;13429:24:::1;13468:1;13484::::0;13500:7:::1;1361::::0;1388:6;-1:-1:-1;;;;;1388:6:0;;1323:79;13500:7:::1;13325:223;::::0;::::1;::::0;;;-1:-1:-1;;;;;;13325:223:0;;;-1:-1:-1;;;;;11109:15:1;;;13325:223:0::1;::::0;::::1;11091:34:1::0;11141:18;;;11134:34;;;;11184:18;;;11177:34;;;;11227:18;;;11220:34;11291:15;;;11270:19;;;11263:44;13522:15:0::1;11323:19:1::0;;;11316:35;11025:19;;13325:223:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;13566:13:0::1;::::0;13597:15:::1;::::0;13559:71:::1;::::0;-1:-1:-1;;;13559:71:0;;-1:-1:-1;;;;;13597:15:0;;;::::1;::::0;::::1;13559:71;::::0;::::1;8038:51:1::0;-1:-1:-1;;8105:18:1;;;8098:34;13566:13:0;::::1;::::0;-1:-1:-1;13559:29:0::1;::::0;8011:18:1;;13559:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;13641:11:0::1;:18:::0;;-1:-1:-1;;13641:18:0::1;13655:4;13641:18;::::0;;13675:13:::1;::::0;::::1;::::0;13641:11:::1;::::0;13675:13:::1;12861:835::o:0;11878:287::-;1450:6;;-1:-1:-1;;;;;1450:6:0;954:10;1450:22;1442:67;;;;-1:-1:-1;;;1442:67:0;;;;;;;:::i;:::-;4267:5:::1;4124:14;4061:2;4124;:14;:::i;:::-;4110:28;::::0;:11:::1;:28;:::i;:::-;4247:16;::::0;4262:1:::1;4247:16;:::i;:::-;4246:26;;;;:::i;:::-;11964:9;:34;11956:82;;;::::0;-1:-1:-1;;;11956:82:0;;12097:2:1;11956:82:0::1;::::0;::::1;12079:21:1::0;12136:2;12116:18;;;12109:30;12175:34;12155:18;;;12148:62;-1:-1:-1;;;12226:18:1;;;12219:33;12269:19;;11956:82:0::1;11895:399:1::0;11956:82:0::1;4351:5;4124:14;4061:2;4124;:14;:::i;:::-;4110:28;::::0;:11:::1;:28;:::i;:::-;4329:18;::::0;4344:3:::1;4329:18;:::i;:::-;4328:28;;;;:::i;:::-;12057:9;:24;12049:69;;;::::0;-1:-1:-1;;;12049:69:0;;12501:2:1;12049:69:0::1;::::0;::::1;12483:21:1::0;;;12520:18;;;12513:30;12579:34;12559:18;;;12552:62;12631:18;;12049:69:0::1;12299:356:1::0;12049:69:0::1;12129:16;:28:::0;11878:287::o;11700:126::-;1450:6;;-1:-1:-1;;;;;1450:6:0;954:10;1450:22;1442:67;;;;-1:-1:-1;;;1442:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11783:27:0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;11783:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11700:126::o;1537:109::-;1450:6;;-1:-1:-1;;;;;1450:6:0;954:10;1450:22;1442:67;;;;-1:-1:-1;;;1442:67:0;;;;;;;:::i;:::-;1610:28:::1;1629:8;1610:18;:28::i;7688:394::-:0;-1:-1:-1;;;;;7781:19:0;;7773:61;;;;-1:-1:-1;;;7773:61:0;;12862:2:1;7773:61:0;;;12844:21:1;12901:2;12881:18;;;12874:30;12940:31;12920:18;;;12913:59;12989:18;;7773:61:0;12660:353:1;7773:61:0;-1:-1:-1;;;;;7853:21:0;;7845:61;;;;-1:-1:-1;;;7845:61:0;;13220:2:1;7845:61:0;;;13202:21:1;13259:2;13239:18;;;13232:30;13298:29;13278:18;;;13271:57;13345:18;;7845:61:0;13018:351:1;7845:61:0;-1:-1:-1;;;;;7921:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;:37;;7917:158;;-1:-1:-1;;;;;7975:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8031:32;;713:25:1;;;8031:32:0;;686:18:1;8031:32:0;;;;;;;7917:158;7688:394;;;:::o;8090:1550::-;-1:-1:-1;;;;;8178:18:0;;8170:61;;;;-1:-1:-1;;;8170:61:0;;13576:2:1;8170:61:0;;;13558:21:1;13615:2;13595:18;;;13588:30;13654:32;13634:18;;;13627:60;13704:18;;8170:61:0;13374:354:1;8170:61:0;8259:1;8250:6;:10;8242:52;;;;-1:-1:-1;;;8242:52:0;;13935:2:1;8242:52:0;;;13917:21:1;13974:2;13954:18;;;13947:30;14013:31;13993:18;;;13986:59;14062:18;;8242:52:0;13733:353:1;8242:52:0;-1:-1:-1;;;;;8419:24:0;;8305:17;8419:24;;;:18;:24;;;;;;;;8418:25;:52;;;;-1:-1:-1;;;;;;8448:22:0;;;;;;:18;:22;;;;;;;;8447:23;8418:52;8414:926;;;8531:13;;-1:-1:-1;;;;;8523:21:0;;;8531:13;;8523:21;:55;;;;-1:-1:-1;8562:15:0;;-1:-1:-1;;;;;8548:30:0;;;8562:15;;;;;8548:30;;8523:55;8519:810;;;4186:3;8620:6;;8611;:15;;;;:::i;:::-;:31;;;;:::i;:::-;8599:43;;8519:810;;;8707:13;;-1:-1:-1;;;;;8707:13:0;;;8701:19;;;;8697:632;;4186:3;8762:7;;8753:6;:16;;;;:::i;:::-;:32;;;;:::i;:::-;8853:4;8804:28;6522:18;;;:9;:18;;;;;;8943:6;;8741:44;;-1:-1:-1;6522:18:0;8943:6;;;;;8942:7;:50;;;;;8976:16;;8953:20;:39;8942:50;8938:376;;;9017:20;9050;9041:6;:29;:54;;;;-1:-1:-1;4351:5:0;4124:14;4061:2;4124;:14;:::i;:::-;4110:28;;:11;:28;:::i;:::-;4329:18;;4344:3;4329:18;:::i;:::-;4328:28;;;;:::i;:::-;9074:6;:21;9041:54;9040:143;;4351:5;4124:14;4061:2;4124;:14;:::i;:::-;4110:28;;:11;:28;:::i;:::-;4329:18;;4344:3;4329:18;:::i;:::-;4328:28;;;;:::i;:::-;9109:20;:35;9108:75;;4351:5;4124:14;4061:2;4124;:14;:::i;:::-;4110:28;;:11;:28;:::i;:::-;4329:18;;4344:3;4329:18;:::i;:::-;4328:28;;;;:::i;:::-;9040:143;;9108:75;9148:20;9040:143;;;9099:6;9040:143;9017:166;;9206:30;9223:12;9206:16;:30::i;:::-;9259:35;9272:21;9259:12;:35::i;:::-;8994:320;8938:376;8722:607;8697:632;9356:13;;9352:143;;9404:4;9386:24;;;;:9;:24;;;;;:37;;9414:9;;9386:24;:37;;9414:9;;9386:37;:::i;:::-;;;;-1:-1:-1;;9443:40:0;;713:25:1;;;9466:4:0;;-1:-1:-1;;;;;9443:40:0;;;;;701:2:1;686:18;9443:40:0;;;;;;;9352:143;-1:-1:-1;;;;;9505:15:0;;;;;;:9;:15;;;;;:25;;9524:6;;9505:15;:25;;9524:6;;9505:25;:::i;:::-;;;;-1:-1:-1;9559:18:0;;-1:-1:-1;9568:9:0;9559:6;:18;:::i;:::-;-1:-1:-1;;;;;9541:13:0;;;;;;:9;:13;;;;;:37;;:13;;;:37;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;9594:38:0;;;;;;;9613:18;9622:9;9613:6;:18;:::i;:::-;9594:38;;713:25:1;;;701:2;686:18;9594:38:0;;;;;;;8159:1481;8090:1550;;;:::o;1654:266::-;-1:-1:-1;;;;;1742:22:0;;1720:110;;;;-1:-1:-1;;;1720:110:0;;14426:2:1;1720:110:0;;;14408:21:1;14465:2;14445:18;;;14438:30;14504:34;14484:18;;;14477:62;-1:-1:-1;;;14555:18:1;;;14548:36;14601:19;;1720:110:0;14224:402:1;1720:110:0;1867:6;;;1846:38;;-1:-1:-1;;;;;1846:38:0;;;;1867:6;;;1846:38;;;1895:6;:17;;-1:-1:-1;;;;;;1895:17:0;-1:-1:-1;;;;;1895:17:0;;;;;;;;;;1654:266::o;9676:410::-;5333:6;:13;;-1:-1:-1;;5333:13:0;;;;;9778:16:::1;::::0;;9792:1:::1;9778:16:::0;;;;;::::1;::::0;;-1:-1:-1;;9778:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;9778:16:0::1;9754:40;;9823:4;9805;9810:1;9805:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;9805:23:0::1;;;-1:-1:-1::0;;;;;9805:23:0::1;;;::::0;::::1;9849:15;;;;;;;;;-1:-1:-1::0;;;;;9849:15:0::1;-1:-1:-1::0;;;;;9849:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9839:4;9844:1;9839:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9839:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;9882:15:::1;::::0;:196:::1;::::0;-1:-1:-1;;;9882:196:0;;:15;;;::::1;::::0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;9963:11;;9989:1:::1;::::0;10005:4;;10032::::1;::::0;10052:15:::1;::::0;9882:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5369:6:0;:14;;-1:-1:-1;;5369:14:0;;;-1:-1:-1;;;;9676:410:0:o;10146:536::-;10203:12;10226:22;4186:3;10260:14;;10251:6;:23;;;;:::i;:::-;:39;;;;:::i;:::-;10226:64;-1:-1:-1;10305:18:0;;10301:165;;10354:15;;:47;;-1:-1:-1;;;;;10354:15:0;;;;10382:14;;10354:47;;;;10382:14;10354:15;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10340:61;;;;;10424:7;10416:38;;;;-1:-1:-1;;;10416:38:0;;16292:2:1;10416:38:0;;;16274:21:1;16331:2;16311:18;;;16304:30;-1:-1:-1;;;16350:18:1;;;16343:48;16408:18;;10416:38:0;16090:342:1;10416:38:0;10476:16;10495:23;10504:14;10495:6;:23;:::i;:::-;10476:42;-1:-1:-1;10533:12:0;;10529:146;;10575:9;;:35;;-1:-1:-1;;;;;10575:9:0;;;;10597:8;;10575:35;;;;10597:8;10575:9;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10561:49;;;;;10633:7;10625:38;;;;-1:-1:-1;;;10625:38:0;;16292:2:1;10625:38:0;;;16274:21:1;16331:2;16311:18;;;16304:30;-1:-1:-1;;;16350:18:1;;;16343:48;16408:18;;10625:38:0;16090:342:1;14:548;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;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;885:315;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2047:247::-;2106:6;2159:2;2147:9;2138:7;2134:23;2130:32;2127:52;;;2175:1;2172;2165:12;2127:52;2214:9;2201:23;2233:31;2258:5;2233:31;:::i;:::-;2283:5;2047:247;-1:-1:-1;;;2047:247:1:o;2299:248::-;2367:6;2375;2428:2;2416:9;2407:7;2403:23;2399:32;2396:52;;;2444:1;2441;2434:12;2396:52;-1:-1:-1;;2467:23:1;;;2537:2;2522:18;;;2509:32;;-1:-1:-1;2299:248:1:o;2984:388::-;3052:6;3060;3113:2;3101:9;3092:7;3088:23;3084:32;3081:52;;;3129:1;3126;3119:12;3081:52;3168:9;3155:23;3187:31;3212:5;3187:31;:::i;:::-;3237:5;-1:-1:-1;3294:2:1;3279:18;;3266:32;3307:33;3266:32;3307:33;:::i;:::-;3359:7;3349:17;;;2984:388;;;;;:::o;3377:180::-;3436:6;3489:2;3477:9;3468:7;3464:23;3460:32;3457:52;;;3505:1;3502;3495:12;3457:52;-1:-1:-1;3528:23:1;;3377:180;-1:-1:-1;3377:180:1:o;3562:118::-;3648:5;3641:13;3634:21;3627:5;3624:32;3614:60;;3670:1;3667;3660:12;3685:382;3750:6;3758;3811:2;3799:9;3790:7;3786:23;3782:32;3779:52;;;3827:1;3824;3817:12;3779:52;3866:9;3853:23;3885:31;3910:5;3885:31;:::i;:::-;3935:5;-1:-1:-1;3992:2:1;3977:18;;3964:32;4005:30;3964:32;4005:30;:::i;4072:127::-;4133:10;4128:3;4124:20;4121:1;4114:31;4164:4;4161:1;4154:15;4188:4;4185:1;4178:15;4204:416;4293:1;4330:5;4293:1;4344:270;4365:7;4355:8;4352:21;4344:270;;;4424:4;4420:1;4416:6;4412:17;4406:4;4403:27;4400:53;;;4433:18;;:::i;:::-;4483:7;4473:8;4469:22;4466:55;;;4503:16;;;;4466:55;4582:22;;;;4542:15;;;;4344:270;;;4348:3;4204:416;;;;;:::o;4625:806::-;4674:5;4704:8;4694:80;;-1:-1:-1;4745:1:1;4759:5;;4694:80;4793:4;4783:76;;-1:-1:-1;4830:1:1;4844:5;;4783:76;4875:4;4893:1;4888:59;;;;4961:1;4956:130;;;;4868:218;;4888:59;4918:1;4909:10;;4932:5;;;4956:130;4993:3;4983:8;4980:17;4977:43;;;5000:18;;:::i;:::-;-1:-1:-1;;5056:1:1;5042:16;;5071:5;;4868:218;;5170:2;5160:8;5157:16;5151:3;5145:4;5142:13;5138:36;5132:2;5122:8;5119:16;5114:2;5108:4;5105:12;5101:35;5098:77;5095:159;;;-1:-1:-1;5207:19:1;;;5239:5;;5095:159;5286:34;5311:8;5305:4;5286:34;:::i;:::-;5356:6;5352:1;5348:6;5344:19;5335:7;5332:32;5329:58;;;5367:18;;:::i;:::-;5405:20;;4625:806;-1:-1:-1;;;4625:806:1:o;5436:140::-;5494:5;5523:47;5564:4;5554:8;5550:19;5544:4;5523:47;:::i;5581:168::-;5654:9;;;5685;;5702:15;;;5696:22;;5682:37;5672:71;;5723:18;;:::i;5754:356::-;5956:2;5938:21;;;5975:18;;;5968:30;6034:34;6029:2;6014:18;;6007:62;6101:2;6086:18;;5754:356::o;7327:184::-;7397:6;7450:2;7438:9;7429:7;7425:23;7421:32;7418:52;;;7466:1;7463;7456:12;7418:52;-1:-1:-1;7489:16:1;;7327:184;-1:-1:-1;7327:184:1:o;8143:245::-;8210:6;8263:2;8251:9;8242:7;8238:23;8234:32;8231:52;;;8279:1;8276;8269:12;8231:52;8311:9;8305:16;8330:28;8352:5;8330:28;:::i;8741:125::-;8806:9;;;8827:10;;;8824:36;;;8840:18;;:::i;10185:251::-;10255:6;10308:2;10296:9;10287:7;10283:23;10279:32;10276:52;;;10324:1;10321;10314:12;10276:52;10356:9;10350:16;10375:31;10400:5;10375:31;:::i;11362:306::-;11450:6;11458;11466;11519:2;11507:9;11498:7;11494:23;11490:32;11487:52;;;11535:1;11532;11525:12;11487:52;11564:9;11558:16;11548:26;;11614:2;11603:9;11599:18;11593:25;11583:35;;11658:2;11647:9;11643:18;11637:25;11627:35;;11362:306;;;;;:::o;11673:217::-;11713:1;11739;11729:132;;11783:10;11778:3;11774:20;11771:1;11764:31;11818:4;11815:1;11808:15;11846:4;11843:1;11836:15;11729:132;-1:-1:-1;11875:9:1;;11673:217::o;14091:128::-;14158:9;;;14179:11;;;14176:37;;;14193:18;;:::i;14763:127::-;14824:10;14819:3;14815:20;14812:1;14805:31;14855:4;14852:1;14845:15;14879:4;14876:1;14869:15;14895:980;15157:4;15205:3;15194:9;15190:19;15236:6;15225:9;15218:25;15262:2;15300:6;15295:2;15284:9;15280:18;15273:34;15343:3;15338:2;15327:9;15323:18;15316:31;15367:6;15402;15396:13;15433:6;15425;15418:22;15471:3;15460:9;15456:19;15449:26;;15510:2;15502:6;15498:15;15484:29;;15531:1;15541:195;15555:6;15552:1;15549:13;15541:195;;;15620:13;;-1:-1:-1;;;;;15616:39:1;15604:52;;15711:15;;;;15676:12;;;;15652:1;15570:9;15541:195;;;-1:-1:-1;;;;;;;15792:32:1;;;;15787:2;15772:18;;15765:60;-1:-1:-1;;;15856:3:1;15841:19;15834:35;15753:3;14895:980;-1:-1:-1;;;14895:980:1:o
Swarm Source
ipfs://4d9f4d2da69909d6c9d0d785b8155c135ab772414ae459b0d9703c0ef8a0490c
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.