ERC-20
Overview
Max Total Supply
10,000,000 FRX
Holders
44
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
84,770.681586392493530957 FRXValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
FRXToken
Compiler Version
v0.8.24+commit.e11b9ed9
Optimization Enabled:
Yes with 200 runs
Other Settings:
shanghai EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
/* FRX - innovating the DEX perp trading experience, equal to everyone ⚖️ | $FRX Website: https://www.fairex.com TG Portal: https://t.me/FRX_channel Twitter: https://twitter.com/FRX_Erc */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.0; 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 getPair( 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 FRXToken is Context, IERC20, Ownable { using SafeMath for uint256; string private constant _name = unicode"FRX Token"; string private constant _symbol = unicode"FRX"; uint8 private constant _decimals = 18; mapping(address => uint256) private _reflectionTokenOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; uint256 public constant MAX = ~uint256(0); uint256 private constant _tokenTotal = 10_000_000 * 10 ** _decimals; uint256 public _reflectionTotal = (MAX - (MAX % _tokenTotal)); uint256 private _taxFeeTotal; uint256 private _redisFeeOnBuy = 0; uint256 public _taxFeeOnBuy = 5; uint256 private _redisFeeOnSell = 0; uint256 public _taxFeeOnSell = 3; uint256 private _redisFee = _redisFeeOnSell; uint256 private _taxFee = _taxFeeOnSell; uint256 private _stateSyncRedisFee = _redisFee; uint256 private _stateSyncTaxFee = _taxFee; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool private tradingOpen; bool private inSwap = false; bool private swapEnabled = true; uint256 public _maxTxAmount = (_tokenTotal * 10) / 100; uint256 public _maxWalletSize = (_tokenTotal * 10) / 100; uint256 public _swapTokensAtAmount = (_tokenTotal * 10) / 100; address public insuranceFundAccounts; address public uniswapLpAddress; address public Marketing = 0x44f8e9664826971A6167F96211cEA14b028Bebc9; address public Team = 0x6E47aEA234102314577464c46acD01b6d4f2a861; address public Advisers = 0xC871d11150E2312E12159d30a0cFff47020F5732; address public Airdrop = 0xC871d11150E2312E12159d30a0cFff47020F5732; event MaxTxAmountUpdated(uint256 _maxTxAmount); modifier lockTheSwap() { inSwap = true; _; inSwap = false; } receive() external payable {} constructor() { uniswapLpAddress = _msgSender(); insuranceFundAccounts = _msgSender(); _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[insuranceFundAccounts] = true; _isExcludedFromFee[uniswapLpAddress] = true; _initTokenomic(); } function _initTokenomic() private { uint256 uniswapLpAmount = (_reflectionTotal / 100) * 70; _reflectionTokenOwned[uniswapLpAddress] = uniswapLpAmount; emit Transfer( address(0), uniswapLpAddress, _tokenConverter(uniswapLpAmount) ); uint256 MarketingAmount = (_reflectionTotal / 100) * 15; _reflectionTokenOwned[Marketing] = MarketingAmount; emit Transfer(address(0), Marketing, _tokenConverter(MarketingAmount)); uint256 TeamAmount = (_reflectionTotal / 100) * 5; _reflectionTokenOwned[Team] = TeamAmount; emit Transfer(address(0), Team, _tokenConverter(TeamAmount)); uint256 AdvisersAmount = (_reflectionTotal / 100) * 5; _reflectionTokenOwned[Advisers] = AdvisersAmount; emit Transfer(address(0), Advisers, _tokenConverter(AdvisersAmount)); uint256 AirdropAmount = (_reflectionTotal / 100) * 5; _reflectionTokenOwned[Airdrop] = AirdropAmount; emit Transfer(address(0), Airdrop, _tokenConverter(AirdropAmount)); } function openTrading() public onlyOwner { require(!tradingOpen, "Cannot reenable trading"); IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).getPair( address(this), _uniswapV2Router.WETH() ); tradingOpen = true; } function removeLimits() public onlyOwner { _maxTxAmount = _tokenTotal; _maxWalletSize = _tokenTotal; } function deduceTaxConfigurator( uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell ) public onlyOwner { require( redisFeeOnBuy >= 0 && redisFeeOnBuy <= 0, "Buy redis must be between 0% and 0%" ); require( taxFeeOnBuy >= 0 && taxFeeOnBuy <= 50, "Tax fee must be between 0% and 49%" ); require( redisFeeOnSell >= 0 && redisFeeOnSell <= 0, "Sell redis must be between 0% and 0%" ); require( taxFeeOnSell >= 0 && taxFeeOnSell <= 50, "Tax fee must be between 0% and 49%" ); _redisFeeOnBuy = redisFeeOnBuy; _redisFeeOnSell = redisFeeOnSell; _taxFeeOnBuy = taxFeeOnBuy << 1; _taxFeeOnSell = taxFeeOnSell << 1; } //Set minimum tokens required to swap. function setEnableSwap(bool _swapEnabled) public onlyOwner { swapEnabled = _swapEnabled; } function setExcludeFromFees( address account, bool excluded ) public onlyOwner { _isExcludedFromFee[account] = excluded; } // BEGIN: CONFIGURATORS FOR TOKENS //Set minimum tokens required to swap. function setMinSwapTokensThreshold( uint256 swapTokensAtAmount ) public onlyOwner { _swapTokensAtAmount = swapTokensAtAmount * 10 ** decimals(); } //Set maximum transaction function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner { _maxTxAmount = maxTxAmount * 10 ** decimals(); } function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner { _maxWalletSize = maxWalletSize * 10 ** decimals(); } // END: CONFIGURATORS FOR TOKENS 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 _tokenTotal; } function balanceOf(address account) public view override returns (uint256) { return _tokenConverter(_reflectionTokenOwned[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 _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"); if (from != owner() && to != owner()) { //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"); 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) { payable(insuranceFundAccounts).transfer( address(this).balance ); } } } bool takeFee = true; //Transfer Tokens if ( (_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair) ) { 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 _tokenConverter(uint256 rAmount) private view returns (uint256) { require( rAmount <= _reflectionTotal, "Amount must be less than total reflections" ); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } 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 _tokenTransfer( address sender, address recipient, uint256 amount, bool takeFee ) private { if (!takeFee) _beforeRemoveFee(); _transferStandard(sender, recipient, amount); if (!takeFee) _afterRemoveFee(); } function _transferStandard( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTax ) = _getValues(tAmount); _reflectionTokenOwned[sender] = _reflectionTokenOwned[sender].sub( rAmount ); _reflectionTokenOwned[recipient] = _reflectionTokenOwned[recipient].add( rTransferAmount ); _takeTaxFee(tTax); // add teamFee to address(this) (teamFee is calculated from taxFee) _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _takeTaxFee(uint256 tTax) private { uint256 currentRate = _getRate(); uint256 rTeam = tTax.mul(currentRate); _reflectionTokenOwned[address(this)] = _reflectionTokenOwned[ address(this) ].add(rTeam); } function _reflectFee(uint256 rFee, uint256 tFee) private { _reflectionTotal = _reflectionTotal.sub(rFee); _taxFeeTotal = _taxFeeTotal.add(tFee); } function _beforeRemoveFee() private { if (_redisFee == 0 && _taxFee == 0) return; _stateSyncRedisFee = _redisFee; _stateSyncTaxFee = _taxFee; _redisFee = 0; _taxFee = 0; } function _afterRemoveFee() private { _redisFee = _stateSyncRedisFee; _taxFee = _stateSyncTaxFee; } function _getValues( uint256 tAmount ) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, uint256 tFee, uint256 tTax) = _getTokenValues( tAmount, _redisFee, _taxFee ); uint256 currentRate = _getRate(); ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee ) = _getReflectionTokenValues(tAmount, tFee, tTax, currentRate); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTax); } function _getTokenValues( uint256 tAmount, uint256 redisFee, uint256 taxFee ) private pure returns (uint256, uint256, uint256) { uint256 tFee = tAmount.mul(redisFee).div(100); uint256 tTax = tAmount.mul(taxFee).div(100); uint256 tTransferAmount = tAmount.sub(tFee).sub(tTax); return (tTransferAmount, tFee, tTax); } function _getReflectionTokenValues( uint256 tAmount, uint256 tFee, uint256 tTax, uint256 currentRate ) private pure returns (uint256, uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rTeam = tTax.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); // _reflectionTotal / _tokenTotal } function _getCurrentSupply() private view returns (uint256, uint256) { uint256 rSupply = _reflectionTotal; uint256 tSupply = _tokenTotal; if (rSupply < _reflectionTotal.div(_tokenTotal)) return (_reflectionTotal, _tokenTotal); return (rSupply, tSupply); // _reflectionTotal / _tokenTotal } }
{ "optimizer": { "enabled": true, "runs": 200 }, "evmVersion": "shanghai", "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "metadata": { "useLiteralContent": true }, "libraries": {} }
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":[],"name":"Advisers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Airdrop","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Marketing","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Team","outputs":[{"internalType":"address","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":"_reflectionTotal","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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"deduceTaxConfigurator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"insuranceFundAccounts","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","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":"bool","name":"_swapEnabled","type":"bool"}],"name":"setEnableSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFromFees","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":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":[],"name":"uniswapLpAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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
6080604052620000126012600a6200079a565b620000219062989680620007aa565b6200002e905f19620007d8565b6200003b905f19620007ee565b60059081555f600781905560089190915560098190556003600a818155600b839055600c829055600d92909255600e556010805461ffff60a81b1916600160b01b17905560649062000090906012906200079a565b6200009f9062989680620007aa565b620000ac90600a620007aa565b620000b8919062000804565b6011556064620000cb6012600a6200079a565b620000da9062989680620007aa565b620000e790600a620007aa565b620000f3919062000804565b60125560646012600a6200010891906200079a565b620001179062989680620007aa565b6200012490600a620007aa565b62000130919062000804565b601355601680546001600160a01b03199081167344f8e9664826971a6167f96211cea14b028bebc917909155601780548216736e47aea234102314577464c46acd01b6d4f2a86117905560188054821673c871d11150e2312e12159d30a0cfff47020f573290811790915560198054909216179055348015620001b1575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060158054336001600160a01b031991821681178355601480549092161781555f80546001600160a01b03908116825260046020526040808320805460ff1990811660019081179092553085528285208054821683179055945483168452818420805486168217905594549091168252902080549091169091179055620002776200027d565b62000868565b5f60646005546200028f919062000804565b6200029c906046620007aa565b601580546001600160a01b039081165f908152600260205260408120849055915492935091909116905f8051602062002791833981519152620002df84620004c3565b60405190815260200160405180910390a35f606460055462000302919062000804565b6200030f90600f620007aa565b601680546001600160a01b039081165f908152600260205260408120849055915492935091909116905f80516020620027918339815191526200035284620004c3565b60405190815260200160405180910390a35f606460055462000375919062000804565b62000382906005620007aa565b601780546001600160a01b039081165f908152600260205260408120849055915492935091909116905f8051602062002791833981519152620003c584620004c3565b60405190815260200160405180910390a35f6064600554620003e8919062000804565b620003f5906005620007aa565b601880546001600160a01b039081165f908152600260205260408120849055915492935091909116905f80516020620027918339815191526200043884620004c3565b60405190815260200160405180910390a35f60646005546200045b919062000804565b62000468906005620007aa565b601980546001600160a01b039081165f908152600260205260408120849055915492935091909116905f8051602062002791833981519152620004ab84620004c3565b60405190815260200160405180910390a35050505050565b5f6005548211156200052f5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084015b60405180910390fd5b5f6200053a6200054f565b905062000548838262000574565b9392505050565b5f80806200055c620005c6565b90925090506200056d828262000574565b9250505090565b5f620005bd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200065360201b60201c565b90505b92915050565b6005545f90819081620005dc6012600a6200079a565b620005eb9062989680620007aa565b905062000618620005ff6012600a6200079a565b6200060e9062989680620007aa565b6005549062000574565b8210156200064a57600554620006316012600a6200079a565b620006409062989680620007aa565b9350935050509091565b90939092509050565b5f8183620006765760405162461bcd60e51b81526004016200052691906200081a565b505f62000684848662000804565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620006e157815f1904821115620006c557620006c56200068d565b80851615620006d357918102915b93841c9390800290620006a6565b509250929050565b5f82620006f957506001620005c0565b816200070757505f620005c0565b81600181146200072057600281146200072b576200074b565b6001915050620005c0565b60ff8411156200073f576200073f6200068d565b50506001821b620005c0565b5060208310610133831016604e8410600b841016171562000770575081810a620005c0565b6200077c8383620006a1565b805f19048211156200079257620007926200068d565b029392505050565b5f620005bd60ff841683620006e9565b8082028115828204841417620005c057620005c06200068d565b634e487b7160e01b5f52601260045260245ffd5b5f82620007e957620007e9620007c4565b500690565b81810381811115620005c057620005c06200068d565b5f82620008155762000815620007c4565b500490565b5f602080835283518060208501525f5b8181101562000848578581018301518582016040015282016200082a565b505f604082860101526040601f19601f8301168501019250505092915050565b611f1b80620008765f395ff3fe6080604052600436106101ff575f3560e01c80638199040e11610113578063c9567bf91161009d578063dbc5a1861161006d578063dbc5a1861461059a578063dd62ed3e146105b9578063dfc591ae146105fd578063ea1644d51461061c578063f2fde38b1461063b575f80fd5b8063c9567bf914610534578063d49d518114610548578063d63cad221461055c578063db886f231461057b575f80fd5b806395d89b41116100e357806395d89b411461049757806398a5c315146104c2578063a60ba16d146104e1578063a9059cbb14610500578063bf5976d31461051f575f80fd5b80638199040e1461043257806384c150c1146104475780638da5cb5b146104665780638f9a55c014610482575f80fd5b80633f6b6f2e1161019457806370a082311161016457806370a08231146103b7578063715018a6146103d657806374010ece146103ea578063751039fc146104095780637d1db4a51461041d575f80fd5b80633f6b6f2e1461034557806349bd5a5e146103645780635405746314610383578063639e01dd14610398575f80fd5b806323b872dd116101cf57806323b872dd146102d55780632fd689e3146102f4578063313ce56714610309578063354ea84c14610324575f80fd5b806306fdde031461020a578063095ea7b31461024d5780631694505e1461027c57806318160ddd146102b3575f80fd5b3661020657005b5f80fd5b348015610215575f80fd5b5060408051808201909152600981526823292c102a37b5b2b760b91b60208201525b6040516102449190611a85565b60405180910390f35b348015610258575f80fd5b5061026c610267366004611ae8565b61065a565b6040519015158152602001610244565b348015610287575f80fd5b50600f5461029b906001600160a01b031681565b6040516001600160a01b039091168152602001610244565b3480156102be575f80fd5b506102c7610670565b604051908152602001610244565b3480156102e0575f80fd5b5061026c6102ef366004611b12565b61068f565b3480156102ff575f80fd5b506102c760135481565b348015610314575f80fd5b5060405160128152602001610244565b34801561032f575f80fd5b5061034361033e366004611b50565b6106f6565b005b348015610350575f80fd5b5060195461029b906001600160a01b031681565b34801561036f575f80fd5b5060105461029b906001600160a01b031681565b34801561038e575f80fd5b506102c760055481565b3480156103a3575f80fd5b5060175461029b906001600160a01b031681565b3480156103c2575f80fd5b506102c76103d1366004611b7f565b610838565b3480156103e1575f80fd5b50610343610859565b3480156103f5575f80fd5b50610343610404366004611b9a565b6108ca565b348015610414575f80fd5b5061034361090f565b348015610428575f80fd5b506102c760115481565b34801561043d575f80fd5b506102c7600a5481565b348015610452575f80fd5b5060145461029b906001600160a01b031681565b348015610471575f80fd5b505f546001600160a01b031661029b565b34801561048d575f80fd5b506102c760125481565b3480156104a2575f80fd5b5060408051808201909152600381526208ca4b60eb1b6020820152610237565b3480156104cd575f80fd5b506103436104dc366004611b9a565b610972565b3480156104ec575f80fd5b506103436104fb366004611bc5565b6109b7565b34801561050b575f80fd5b5061026c61051a366004611ae8565b6109fe565b34801561052a575f80fd5b506102c760085481565b34801561053f575f80fd5b50610343610a0a565b348015610553575f80fd5b506102c75f1981565b348015610567575f80fd5b50610343610576366004611bde565b610c1a565b348015610586575f80fd5b5060165461029b906001600160a01b031681565b3480156105a5575f80fd5b5060185461029b906001600160a01b031681565b3480156105c4575f80fd5b506102c76105d3366004611c11565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b348015610608575f80fd5b5060155461029b906001600160a01b031681565b348015610627575f80fd5b50610343610636366004611b9a565b610c6d565b348015610646575f80fd5b50610343610655366004611b7f565b610cb2565b5f610666338484610d99565b5060015b92915050565b5f61067d6012600a611d3c565b61068a9062989680611d4a565b905090565b5f61069b848484610ebc565b6106ec84336106e785604051806060016040528060288152602001611ebe602891396001600160a01b038a165f9081526003602090815260408083203384529091529020549190611389565b610d99565b5060019392505050565b5f546001600160a01b031633146107285760405162461bcd60e51b815260040161071f90611d61565b60405180910390fd5b83156107825760405162461bcd60e51b815260206004820152602360248201527f427579207265646973206d757374206265206265747765656e20302520616e6460448201526220302560e81b606482015260840161071f565b60328211156107a35760405162461bcd60e51b815260040161071f90611d96565b82156107fd5760405162461bcd60e51b8152602060048201526024808201527f53656c6c207265646973206d757374206265206265747765656e20302520616e6044820152636420302560e01b606482015260840161071f565b603281111561081e5760405162461bcd60e51b815260040161071f90611d96565b600793909355600991909155600190811b6008551b600a55565b6001600160a01b0381165f9081526002602052604081205461066a906113c1565b5f546001600160a01b031633146108825760405162461bcd60e51b815260040161071f90611d61565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146108f35760405162461bcd60e51b815260040161071f90611d61565b6108ff6012600a611d3c565b6109099082611d4a565b60115550565b5f546001600160a01b031633146109385760405162461bcd60e51b815260040161071f90611d61565b6109446012600a611d3c565b6109519062989680611d4a565b6011556109606012600a611d3c565b61096d9062989680611d4a565b601255565b5f546001600160a01b0316331461099b5760405162461bcd60e51b815260040161071f90611d61565b6109a76012600a611d3c565b6109b19082611d4a565b60135550565b5f546001600160a01b031633146109e05760405162461bcd60e51b815260040161071f90611d61565b60108054911515600160b01b0260ff60b01b19909216919091179055565b5f610666338484610ebc565b5f546001600160a01b03163314610a335760405162461bcd60e51b815260040161071f90611d61565b601054600160a01b900460ff1615610a8d5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e67000000000000000000604482015260640161071f565b600f80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051829163c45a01559160048083019260209291908290030181865afa158015610af0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b149190611dd8565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b5f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b839190611dd8565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610bcd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bf19190611dd8565b601080546001600160a81b0319166001600160a01b039290921691909117600160a01b17905550565b5f546001600160a01b03163314610c435760405162461bcd60e51b815260040161071f90611d61565b6001600160a01b03919091165f908152600460205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610c965760405162461bcd60e51b815260040161071f90611d61565b610ca26012600a611d3c565b610cac9082611d4a565b60125550565b5f546001600160a01b03163314610cdb5760405162461bcd60e51b815260040161071f90611d61565b6001600160a01b038116610d405760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161071f565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610dfb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161071f565b6001600160a01b038216610e5c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161071f565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610f205760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161071f565b6001600160a01b038216610f825760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161071f565b5f8111610fe35760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161071f565b5f546001600160a01b0384811691161480159061100d57505f546001600160a01b03838116911614155b1561127f57601054600160a01b900460ff166110a5575f546001600160a01b038481169116146110a55760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400606482015260840161071f565b6011548111156110f75760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000604482015260640161071f565b6010546001600160a01b0383811691161461117c576012548161111984610838565b6111239190611df3565b1061117c5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b606482015260840161071f565b5f61118630610838565b60135460115491925082101590821061119f5760115491505b8080156111b65750601054600160a81b900460ff16155b80156111d057506010546001600160a01b03868116911614155b80156111e55750601054600160b01b900460ff165b801561120957506001600160a01b0385165f9081526004602052604090205460ff16155b801561122d57506001600160a01b0384165f9081526004602052604090205460ff16155b1561127c5761123b82611443565b47801561127a576014546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015611278573d5f803e3d5ffd5b505b505b50505b6001600160a01b0383165f9081526004602052604090205460019060ff16806112bf57506001600160a01b0383165f9081526004602052604090205460ff165b806112f157506010546001600160a01b038581169116148015906112f157506010546001600160a01b03848116911614155b156112fd57505f611377565b6010546001600160a01b0385811691161480156113285750600f546001600160a01b03848116911614155b1561133a57600754600b55600854600c555b6010546001600160a01b0384811691161480156113655750600f546001600160a01b03858116911614155b1561137757600954600b55600a54600c555b611383848484846115b3565b50505050565b5f81848411156113ac5760405162461bcd60e51b815260040161071f9190611a85565b505f6113b88486611e06565b95945050505050565b5f6005548211156114275760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161071f565b5f6114306115e1565b905061143c8382611602565b9392505050565b6010805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061148957611489611e19565b6001600160a01b03928316602091820292909201810191909152600f54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156114e0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115049190611dd8565b8160018151811061151757611517611e19565b6001600160a01b039283166020918202929092010152600f5461153d9130911684610d99565b600f5460405163791ac94760e01b81526001600160a01b039091169063791ac947906115759085905f90869030904290600401611e2d565b5f604051808303815f87803b15801561158c575f80fd5b505af115801561159e573d5f803e3d5ffd5b50506010805460ff60a81b1916905550505050565b806115c0576115c0611643565b6115cb848484611670565b8061138357611383600d54600b55600e54600c55565b5f805f6115ec611761565b90925090506115fb8282611602565b9250505090565b5f61143c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506117df565b600b541580156116535750600c54155b1561165a57565b600b8054600d55600c8054600e555f9182905555565b5f805f805f8061167f8761180b565b6001600160a01b038f165f90815260026020526040902054959b509399509197509550935091506116b09087611860565b6001600160a01b03808b165f9081526002602052604080822093909355908a16815220546116de90866118a1565b6001600160a01b0389165f908152600260205260409020556116ff816118ff565b6117098483611945565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161174e91815260200190565b60405180910390a3505050505050505050565b6005545f908190816117756012600a611d3c565b6117829062989680611d4a565b90506117a96117936012600a611d3c565b6117a09062989680611d4a565b60055490611602565b8210156117d6576005546117bf6012600a611d3c565b6117cc9062989680611d4a565b9350935050509091565b90939092509050565b5f81836117ff5760405162461bcd60e51b815260040161071f9190611a85565b505f6113b88486611e9e565b5f805f805f805f805f6118238a600b54600c54611969565b9250925092505f6118326115e1565b90505f805f6118438e8787876119bb565b919e509c509a509598509396509194505050505091939550919395565b5f61143c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611389565b5f806118ad8385611df3565b90508381101561143c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161071f565b5f6119086115e1565b90505f6119158383611a07565b305f9081526002602052604090205490915061193190826118a1565b305f90815260026020526040902055505050565b6005546119529083611860565b60055560065461196290826118a1565b6006555050565b5f808080611982606461197c8989611a07565b90611602565b90505f611994606461197c8a89611a07565b90505f6119ab826119a58b86611860565b90611860565b9992985090965090945050505050565b5f8080806119c98886611a07565b90505f6119d68887611a07565b90505f6119e38888611a07565b90505f6119f4826119a58686611860565b939b939a50919850919650505050505050565b5f825f03611a1657505f61066a565b5f611a218385611d4a565b905082611a2e8583611e9e565b1461143c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161071f565b5f602080835283518060208501525f5b81811015611ab157858101830151858201604001528201611a95565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611ae5575f80fd5b50565b5f8060408385031215611af9575f80fd5b8235611b0481611ad1565b946020939093013593505050565b5f805f60608486031215611b24575f80fd5b8335611b2f81611ad1565b92506020840135611b3f81611ad1565b929592945050506040919091013590565b5f805f8060808587031215611b63575f80fd5b5050823594602084013594506040840135936060013592509050565b5f60208284031215611b8f575f80fd5b813561143c81611ad1565b5f60208284031215611baa575f80fd5b5035919050565b80358015158114611bc0575f80fd5b919050565b5f60208284031215611bd5575f80fd5b61143c82611bb1565b5f8060408385031215611bef575f80fd5b8235611bfa81611ad1565b9150611c0860208401611bb1565b90509250929050565b5f8060408385031215611c22575f80fd5b8235611c2d81611ad1565b91506020830135611c3d81611ad1565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611c9657815f1904821115611c7c57611c7c611c48565b80851615611c8957918102915b93841c9390800290611c61565b509250929050565b5f82611cac5750600161066a565b81611cb857505f61066a565b8160018114611cce5760028114611cd857611cf4565b600191505061066a565b60ff841115611ce957611ce9611c48565b50506001821b61066a565b5060208310610133831016604e8410600b8410161715611d17575081810a61066a565b611d218383611c5c565b805f1904821115611d3457611d34611c48565b029392505050565b5f61143c60ff841683611c9e565b808202811582820484141761066a5761066a611c48565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526022908201527f54617820666565206d757374206265206265747765656e20302520616e642034604082015261392560f01b606082015260800190565b5f60208284031215611de8575f80fd5b815161143c81611ad1565b8082018082111561066a5761066a611c48565b8181038181111561066a5761066a611c48565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611e7d5784516001600160a01b031683529383019391830191600101611e58565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82611eb857634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a7539ee09afad2f27eb5b9b980bf4b19e65cb2d900efc28858aa508b30ffd4f464736f6c63430008180033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
Deployed Bytecode
0x6080604052600436106101ff575f3560e01c80638199040e11610113578063c9567bf91161009d578063dbc5a1861161006d578063dbc5a1861461059a578063dd62ed3e146105b9578063dfc591ae146105fd578063ea1644d51461061c578063f2fde38b1461063b575f80fd5b8063c9567bf914610534578063d49d518114610548578063d63cad221461055c578063db886f231461057b575f80fd5b806395d89b41116100e357806395d89b411461049757806398a5c315146104c2578063a60ba16d146104e1578063a9059cbb14610500578063bf5976d31461051f575f80fd5b80638199040e1461043257806384c150c1146104475780638da5cb5b146104665780638f9a55c014610482575f80fd5b80633f6b6f2e1161019457806370a082311161016457806370a08231146103b7578063715018a6146103d657806374010ece146103ea578063751039fc146104095780637d1db4a51461041d575f80fd5b80633f6b6f2e1461034557806349bd5a5e146103645780635405746314610383578063639e01dd14610398575f80fd5b806323b872dd116101cf57806323b872dd146102d55780632fd689e3146102f4578063313ce56714610309578063354ea84c14610324575f80fd5b806306fdde031461020a578063095ea7b31461024d5780631694505e1461027c57806318160ddd146102b3575f80fd5b3661020657005b5f80fd5b348015610215575f80fd5b5060408051808201909152600981526823292c102a37b5b2b760b91b60208201525b6040516102449190611a85565b60405180910390f35b348015610258575f80fd5b5061026c610267366004611ae8565b61065a565b6040519015158152602001610244565b348015610287575f80fd5b50600f5461029b906001600160a01b031681565b6040516001600160a01b039091168152602001610244565b3480156102be575f80fd5b506102c7610670565b604051908152602001610244565b3480156102e0575f80fd5b5061026c6102ef366004611b12565b61068f565b3480156102ff575f80fd5b506102c760135481565b348015610314575f80fd5b5060405160128152602001610244565b34801561032f575f80fd5b5061034361033e366004611b50565b6106f6565b005b348015610350575f80fd5b5060195461029b906001600160a01b031681565b34801561036f575f80fd5b5060105461029b906001600160a01b031681565b34801561038e575f80fd5b506102c760055481565b3480156103a3575f80fd5b5060175461029b906001600160a01b031681565b3480156103c2575f80fd5b506102c76103d1366004611b7f565b610838565b3480156103e1575f80fd5b50610343610859565b3480156103f5575f80fd5b50610343610404366004611b9a565b6108ca565b348015610414575f80fd5b5061034361090f565b348015610428575f80fd5b506102c760115481565b34801561043d575f80fd5b506102c7600a5481565b348015610452575f80fd5b5060145461029b906001600160a01b031681565b348015610471575f80fd5b505f546001600160a01b031661029b565b34801561048d575f80fd5b506102c760125481565b3480156104a2575f80fd5b5060408051808201909152600381526208ca4b60eb1b6020820152610237565b3480156104cd575f80fd5b506103436104dc366004611b9a565b610972565b3480156104ec575f80fd5b506103436104fb366004611bc5565b6109b7565b34801561050b575f80fd5b5061026c61051a366004611ae8565b6109fe565b34801561052a575f80fd5b506102c760085481565b34801561053f575f80fd5b50610343610a0a565b348015610553575f80fd5b506102c75f1981565b348015610567575f80fd5b50610343610576366004611bde565b610c1a565b348015610586575f80fd5b5060165461029b906001600160a01b031681565b3480156105a5575f80fd5b5060185461029b906001600160a01b031681565b3480156105c4575f80fd5b506102c76105d3366004611c11565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b348015610608575f80fd5b5060155461029b906001600160a01b031681565b348015610627575f80fd5b50610343610636366004611b9a565b610c6d565b348015610646575f80fd5b50610343610655366004611b7f565b610cb2565b5f610666338484610d99565b5060015b92915050565b5f61067d6012600a611d3c565b61068a9062989680611d4a565b905090565b5f61069b848484610ebc565b6106ec84336106e785604051806060016040528060288152602001611ebe602891396001600160a01b038a165f9081526003602090815260408083203384529091529020549190611389565b610d99565b5060019392505050565b5f546001600160a01b031633146107285760405162461bcd60e51b815260040161071f90611d61565b60405180910390fd5b83156107825760405162461bcd60e51b815260206004820152602360248201527f427579207265646973206d757374206265206265747765656e20302520616e6460448201526220302560e81b606482015260840161071f565b60328211156107a35760405162461bcd60e51b815260040161071f90611d96565b82156107fd5760405162461bcd60e51b8152602060048201526024808201527f53656c6c207265646973206d757374206265206265747765656e20302520616e6044820152636420302560e01b606482015260840161071f565b603281111561081e5760405162461bcd60e51b815260040161071f90611d96565b600793909355600991909155600190811b6008551b600a55565b6001600160a01b0381165f9081526002602052604081205461066a906113c1565b5f546001600160a01b031633146108825760405162461bcd60e51b815260040161071f90611d61565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146108f35760405162461bcd60e51b815260040161071f90611d61565b6108ff6012600a611d3c565b6109099082611d4a565b60115550565b5f546001600160a01b031633146109385760405162461bcd60e51b815260040161071f90611d61565b6109446012600a611d3c565b6109519062989680611d4a565b6011556109606012600a611d3c565b61096d9062989680611d4a565b601255565b5f546001600160a01b0316331461099b5760405162461bcd60e51b815260040161071f90611d61565b6109a76012600a611d3c565b6109b19082611d4a565b60135550565b5f546001600160a01b031633146109e05760405162461bcd60e51b815260040161071f90611d61565b60108054911515600160b01b0260ff60b01b19909216919091179055565b5f610666338484610ebc565b5f546001600160a01b03163314610a335760405162461bcd60e51b815260040161071f90611d61565b601054600160a01b900460ff1615610a8d5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e67000000000000000000604482015260640161071f565b600f80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051829163c45a01559160048083019260209291908290030181865afa158015610af0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b149190611dd8565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b5f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b839190611dd8565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610bcd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bf19190611dd8565b601080546001600160a81b0319166001600160a01b039290921691909117600160a01b17905550565b5f546001600160a01b03163314610c435760405162461bcd60e51b815260040161071f90611d61565b6001600160a01b03919091165f908152600460205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610c965760405162461bcd60e51b815260040161071f90611d61565b610ca26012600a611d3c565b610cac9082611d4a565b60125550565b5f546001600160a01b03163314610cdb5760405162461bcd60e51b815260040161071f90611d61565b6001600160a01b038116610d405760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161071f565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610dfb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161071f565b6001600160a01b038216610e5c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161071f565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610f205760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161071f565b6001600160a01b038216610f825760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161071f565b5f8111610fe35760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161071f565b5f546001600160a01b0384811691161480159061100d57505f546001600160a01b03838116911614155b1561127f57601054600160a01b900460ff166110a5575f546001600160a01b038481169116146110a55760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400606482015260840161071f565b6011548111156110f75760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000604482015260640161071f565b6010546001600160a01b0383811691161461117c576012548161111984610838565b6111239190611df3565b1061117c5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b606482015260840161071f565b5f61118630610838565b60135460115491925082101590821061119f5760115491505b8080156111b65750601054600160a81b900460ff16155b80156111d057506010546001600160a01b03868116911614155b80156111e55750601054600160b01b900460ff165b801561120957506001600160a01b0385165f9081526004602052604090205460ff16155b801561122d57506001600160a01b0384165f9081526004602052604090205460ff16155b1561127c5761123b82611443565b47801561127a576014546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015611278573d5f803e3d5ffd5b505b505b50505b6001600160a01b0383165f9081526004602052604090205460019060ff16806112bf57506001600160a01b0383165f9081526004602052604090205460ff165b806112f157506010546001600160a01b038581169116148015906112f157506010546001600160a01b03848116911614155b156112fd57505f611377565b6010546001600160a01b0385811691161480156113285750600f546001600160a01b03848116911614155b1561133a57600754600b55600854600c555b6010546001600160a01b0384811691161480156113655750600f546001600160a01b03858116911614155b1561137757600954600b55600a54600c555b611383848484846115b3565b50505050565b5f81848411156113ac5760405162461bcd60e51b815260040161071f9190611a85565b505f6113b88486611e06565b95945050505050565b5f6005548211156114275760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161071f565b5f6114306115e1565b905061143c8382611602565b9392505050565b6010805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061148957611489611e19565b6001600160a01b03928316602091820292909201810191909152600f54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156114e0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115049190611dd8565b8160018151811061151757611517611e19565b6001600160a01b039283166020918202929092010152600f5461153d9130911684610d99565b600f5460405163791ac94760e01b81526001600160a01b039091169063791ac947906115759085905f90869030904290600401611e2d565b5f604051808303815f87803b15801561158c575f80fd5b505af115801561159e573d5f803e3d5ffd5b50506010805460ff60a81b1916905550505050565b806115c0576115c0611643565b6115cb848484611670565b8061138357611383600d54600b55600e54600c55565b5f805f6115ec611761565b90925090506115fb8282611602565b9250505090565b5f61143c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506117df565b600b541580156116535750600c54155b1561165a57565b600b8054600d55600c8054600e555f9182905555565b5f805f805f8061167f8761180b565b6001600160a01b038f165f90815260026020526040902054959b509399509197509550935091506116b09087611860565b6001600160a01b03808b165f9081526002602052604080822093909355908a16815220546116de90866118a1565b6001600160a01b0389165f908152600260205260409020556116ff816118ff565b6117098483611945565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161174e91815260200190565b60405180910390a3505050505050505050565b6005545f908190816117756012600a611d3c565b6117829062989680611d4a565b90506117a96117936012600a611d3c565b6117a09062989680611d4a565b60055490611602565b8210156117d6576005546117bf6012600a611d3c565b6117cc9062989680611d4a565b9350935050509091565b90939092509050565b5f81836117ff5760405162461bcd60e51b815260040161071f9190611a85565b505f6113b88486611e9e565b5f805f805f805f805f6118238a600b54600c54611969565b9250925092505f6118326115e1565b90505f805f6118438e8787876119bb565b919e509c509a509598509396509194505050505091939550919395565b5f61143c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611389565b5f806118ad8385611df3565b90508381101561143c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161071f565b5f6119086115e1565b90505f6119158383611a07565b305f9081526002602052604090205490915061193190826118a1565b305f90815260026020526040902055505050565b6005546119529083611860565b60055560065461196290826118a1565b6006555050565b5f808080611982606461197c8989611a07565b90611602565b90505f611994606461197c8a89611a07565b90505f6119ab826119a58b86611860565b90611860565b9992985090965090945050505050565b5f8080806119c98886611a07565b90505f6119d68887611a07565b90505f6119e38888611a07565b90505f6119f4826119a58686611860565b939b939a50919850919650505050505050565b5f825f03611a1657505f61066a565b5f611a218385611d4a565b905082611a2e8583611e9e565b1461143c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161071f565b5f602080835283518060208501525f5b81811015611ab157858101830151858201604001528201611a95565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611ae5575f80fd5b50565b5f8060408385031215611af9575f80fd5b8235611b0481611ad1565b946020939093013593505050565b5f805f60608486031215611b24575f80fd5b8335611b2f81611ad1565b92506020840135611b3f81611ad1565b929592945050506040919091013590565b5f805f8060808587031215611b63575f80fd5b5050823594602084013594506040840135936060013592509050565b5f60208284031215611b8f575f80fd5b813561143c81611ad1565b5f60208284031215611baa575f80fd5b5035919050565b80358015158114611bc0575f80fd5b919050565b5f60208284031215611bd5575f80fd5b61143c82611bb1565b5f8060408385031215611bef575f80fd5b8235611bfa81611ad1565b9150611c0860208401611bb1565b90509250929050565b5f8060408385031215611c22575f80fd5b8235611c2d81611ad1565b91506020830135611c3d81611ad1565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611c9657815f1904821115611c7c57611c7c611c48565b80851615611c8957918102915b93841c9390800290611c61565b509250929050565b5f82611cac5750600161066a565b81611cb857505f61066a565b8160018114611cce5760028114611cd857611cf4565b600191505061066a565b60ff841115611ce957611ce9611c48565b50506001821b61066a565b5060208310610133831016604e8410600b8410161715611d17575081810a61066a565b611d218383611c5c565b805f1904821115611d3457611d34611c48565b029392505050565b5f61143c60ff841683611c9e565b808202811582820484141761066a5761066a611c48565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526022908201527f54617820666565206d757374206265206265747765656e20302520616e642034604082015261392560f01b606082015260800190565b5f60208284031215611de8575f80fd5b815161143c81611ad1565b8082018082111561066a5761066a611c48565b8181038181111561066a5761066a611c48565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611e7d5784516001600160a01b031683529383019391830191600101611e58565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82611eb857634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a7539ee09afad2f27eb5b9b980bf4b19e65cb2d900efc28858aa508b30ffd4f464736f6c63430008180033
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.