ERC-20
Overview
Max Total Supply
250,000,000 FX1
Holders
1,578
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
654,408.625390259068334974 FX1Value
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
FX1SportsToken
Compiler Version
v0.8.19+commit.7dd6d404
Optimization Enabled:
Yes with 2000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
//SPDX-License-Identifier: None pragma solidity ^0.8.19; import "@openzeppelin/contracts/access/Ownable2Step.sol"; import "./interfaces/IUniswapV2Factory.sol"; import "./interfaces/IUniswapV2Router02.sol"; import "./interfaces/IFX1SportsToken.sol"; /// @title FX1 Sports Token /// @title https://fx1.io/ /// @title https://t.me/fx1_sports_portal /// @author https://PROOFplatform.io /// @author https://5thWeb.io contract FX1SportsToken is Ownable2Step, IFX1SportsToken { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) public bots; mapping(address => bool) public excludedFromFees; mapping(address => bool) public excludedFromMaxTransfer; mapping(address => bool) public excludedFromMaxWallet; mapping(address => bool) public whitelists; uint256 private _totalSupply = 250_000_000 * 10 ** _decimals; uint256 public launchTime; uint256 public whitelistPeriod; uint256 public swapThreshold; uint256 public maxTransferAmount; uint256 public maxWalletAmount; uint256 private accLiquidityAmount; uint256 private accMarketingAmount; uint256 private accPROOFAmount; address public marketingTaxRecv; address public proofRevenue; address public proofRewards; address public proofAdmin; address public pair; address constant DEAD = 0x000000000000000000000000000000000000dEaD; bool private inSwapLiquidity; string private _name = "FX1 Sports"; string private _symbol = "FX1"; uint16 public immutable FIXED_POINT = 1000; uint8 private constant _decimals = 18; IUniswapV2Router02 public dexRouter; BuyFeeRate public buyfeeRate; SellFeeRate public sellfeeRate; modifier onlyPROOFAdmin() { require( proofAdmin == _msgSender(), "Ownable: caller is not the proofAdmin" ); _; } constructor(Param memory _param) { require( _param.proofRevenue != address(0), "invalid PROOF Revenue address" ); require( _param.proofRewards != address(0), "invalid PROOF Rewards address" ); require( _param.proofAdmin != address(0), "invalid PROOF Rewards address" ); require( _param.marketingTaxRecv != address(0), "invalid MarketingTaxRecv address" ); require( _param.teamAllocator_1 != address(0), "invalid teamAllocator_1 address" ); require( _param.teamAllocator_2 != address(0), "invalid teamAllocator_2 address" ); require(_param.dexRouter != address(0), "invalid dexRouter adddress"); require(_param.whitelistPeriod > 0, "invalid whitelistPeriod"); require(_param.proofFeeDuration > 0, "invalid proofFeeDuration"); require( _param.highPROOFFeeRate > 0 && _param.highPROOFFeeRate > _param.normalPROOFFeeRate, "invalid highPROOFFeeRate" ); require(_param.normalPROOFFeeRate > 0, "invalid normalPROOFFeeRate"); require( _param.totalTeamAllocationRate > 0, "invalid totalTeamAllocationRate" ); require( _param.totalTeamAllocationRate == _param.teamAllocationRate_1 + _param.teamAllocationRate_2, "invalid teamAllocationRates" ); address sender = msg.sender; proofRevenue = _param.proofRevenue; proofRewards = _param.proofRewards; proofAdmin = _param.proofAdmin; marketingTaxRecv = _param.marketingTaxRecv; dexRouter = IUniswapV2Router02(_param.dexRouter); whitelistPeriod = _param.whitelistPeriod; buyfeeRate.highPROOFFeeRate = _param.highPROOFFeeRate; buyfeeRate.normalPROOFFeeRate = _param.normalPROOFFeeRate; buyfeeRate.liquidityFeeRate = _param.liquidityFeeRate; buyfeeRate.marketingFeeRate = _param.marketingFeeRate; buyfeeRate.proofFeeDuration = _param.proofFeeDuration; buyfeeRate.highTotalFeeRate = _param.marketingFeeRate + _param.liquidityFeeRate + _param.highPROOFFeeRate; buyfeeRate.normalTotalFeeRate = _param.marketingFeeRate + _param.liquidityFeeRate + _param.normalPROOFFeeRate; sellfeeRate.highPROOFFeeRate = _param.highPROOFFeeRate; sellfeeRate.normalPROOFFeeRate = _param.normalPROOFFeeRate; sellfeeRate.liquidityFeeRate = _param.liquidityFeeRate; sellfeeRate.marketingFeeRate = _param.marketingFeeRate; sellfeeRate.proofFeeDuration = _param.proofFeeDuration; sellfeeRate.highTotalFeeRate = _param.marketingFeeRate + _param.liquidityFeeRate + _param.highPROOFFeeRate; sellfeeRate.normalTotalFeeRate = _param.marketingFeeRate + _param.liquidityFeeRate + _param.normalPROOFFeeRate; pair = IUniswapV2Factory(dexRouter.factory()).createPair( dexRouter.WETH(), address(this) ); excludedFromFees[sender] = true; excludedFromMaxTransfer[sender] = true; excludedFromMaxTransfer[pair] = true; excludedFromMaxTransfer[address(this)] = true; excludedFromMaxWallet[sender] = true; excludedFromMaxWallet[pair] = true; excludedFromMaxWallet[address(this)] = true; excludedFromMaxWallet[proofRevenue] = true; excludedFromMaxWallet[proofRewards] = true; excludedFromMaxWallet[proofAdmin] = true; excludedFromMaxWallet[marketingTaxRecv] = true; whitelists[sender] = true; whitelists[pair] = true; whitelists[address(this)] = true; uint256 totalTeamAllocationAmount = (_totalSupply * _param.totalTeamAllocationRate) / FIXED_POINT; uint256 teamAllocationAmount_1 = (_totalSupply * _param.teamAllocationRate_1) / FIXED_POINT; uint256 teamAllocationAmount_2 = totalTeamAllocationAmount - teamAllocationAmount_1; uint256 amountForDeployer = _totalSupply - totalTeamAllocationAmount; _balances[_param.teamAllocator_1] += teamAllocationAmount_1; _balances[_param.teamAllocator_2] += teamAllocationAmount_2; _balances[msg.sender] += amountForDeployer; emit Transfer(address(0), msg.sender, amountForDeployer); emit Transfer( address(0), _param.teamAllocator_1, teamAllocationAmount_1 ); emit Transfer( address(0), _param.teamAllocator_2, teamAllocationAmount_2 ); swapThreshold = _totalSupply / 10000; // 0.01% maxTransferAmount = (_totalSupply * 5) / 1000; // 0.5% maxWalletAmount = (_totalSupply * 1) / 100; // 1% } // !---------------- functions for ERC20 token ----------------! function name() external view returns (string memory) { return _name; } function symbol() external view returns (string memory) { return _symbol; } function decimals() external pure returns (uint8) { return _decimals; } function totalSupply() external view returns (uint256) { return _totalSupply; } function balanceOf(address account) public view returns (uint256) { return _balances[account]; } function transfer( address _recipient, uint256 _amount ) external override returns (bool) { _transfer(msg.sender, _recipient, _amount); return true; } function allowance( address _owner, address _spender ) external view override returns (uint256) { return _allowances[_owner][_spender]; } function approve( address _spender, uint256 _amount ) external override returns (bool) { _approve(msg.sender, _spender, _amount); return true; } function transferFrom( address _sender, address _recipient, uint256 _amount ) external override returns (bool) { uint256 currentAllowance = _allowances[_sender][msg.sender]; require(currentAllowance >= _amount, "Transfer > allowance"); _approve(_sender, msg.sender, currentAllowance - _amount); _transfer(_sender, _recipient, _amount); return true; } // !---------------- functions for ERC20 token ----------------! /// @inheritdoc IFX1SportsToken function updatePROOFAdmin( address _newAdmin ) external override onlyPROOFAdmin { require(_newAdmin != address(0), "invalid proofAdmin address"); proofAdmin = _newAdmin; } /// @inheritdoc IFX1SportsToken function setBots(address[] memory _bots) external override onlyPROOFAdmin { uint256 length = _bots.length; require(length > 0, "invalid array length"); for (uint256 i = 0; i < _bots.length; i++) { bots[_bots[i]] = true; } } /// @inheritdoc IFX1SportsToken function cancelToken() external override onlyPROOFAdmin { excludedFromFees[address(dexRouter)] = true; excludedFromMaxTransfer[address(dexRouter)] = true; excludedFromMaxWallet[address(dexRouter)] = true; excludedFromMaxTransfer[owner()] = true; excludedFromMaxWallet[owner()] = true; _transferOwnership(proofAdmin); } /// @inheritdoc IFX1SportsToken function formatPROOFFee() external override onlyPROOFAdmin { require(buyfeeRate.normalPROOFFeeRate != 0, "already reduced"); require(buyfeeRate.highPROOFFeeRate != 0, "already reduced"); require(sellfeeRate.normalPROOFFeeRate != 0, "already reduced"); require(sellfeeRate.highPROOFFeeRate != 0, "already reduced"); buyfeeRate.highTotalFeeRate = buyfeeRate.highTotalFeeRate + 0 - buyfeeRate.highPROOFFeeRate; buyfeeRate.highPROOFFeeRate = 0; buyfeeRate.normalTotalFeeRate = buyfeeRate.normalTotalFeeRate + 0 - buyfeeRate.normalPROOFFeeRate; buyfeeRate.normalPROOFFeeRate = 0; sellfeeRate.highTotalFeeRate = sellfeeRate.highTotalFeeRate + 0 - sellfeeRate.highPROOFFeeRate; sellfeeRate.highPROOFFeeRate = 0; sellfeeRate.normalTotalFeeRate = sellfeeRate.normalTotalFeeRate + 0 - sellfeeRate.normalPROOFFeeRate; sellfeeRate.normalPROOFFeeRate = 0; } /// @inheritdoc IFX1SportsToken function delBot(address _notbot) external override { address sender = _msgSender(); require( sender == proofAdmin || sender == owner(), "Ownable: caller doesn't have permission" ); bots[_notbot] = false; } /// @inheritdoc IFX1SportsToken function setLaunchBegin() external override onlyOwner { require(launchTime == 0, "already launched"); launchTime = block.timestamp; } /// @inheritdoc IFX1SportsToken function addWhitelists( address[] memory _accounts, bool _add ) external override onlyOwner { uint256 length = _accounts.length; require(length > 0, "invalid accounts length"); for (uint256 i = 0; i < length; i++) { whitelists[_accounts[i]] = _add; } } /// @inheritdoc IFX1SportsToken function excludeWalletsFromMaxTransfer( address[] memory _accounts, bool _add ) external override onlyOwner { uint256 length = _accounts.length; require(length > 0, "invalid length array"); for (uint256 i = 0; i < length; i++) { excludedFromMaxTransfer[_accounts[i]] = _add; } } /// @inheritdoc IFX1SportsToken function excludeWalletsFromMaxWallets( address[] memory _accounts, bool _add ) external override onlyOwner { uint256 length = _accounts.length; require(length > 0, "invalid length array"); for (uint256 i = 0; i < length; i++) { excludedFromMaxWallet[_accounts[i]] = _add; } } /// @inheritdoc IFX1SportsToken function excludeWalletsFromFees( address[] memory _accounts, bool _add ) external override onlyOwner { uint256 length = _accounts.length; require(length > 0, "invalid length array"); for (uint256 i = 0; i < length; i++) { excludedFromFees[_accounts[i]] = _add; } } /// @inheritdoc IFX1SportsToken function setMaxTransferAmount( uint256 newLimit ) external override onlyOwner { require(newLimit >= (_totalSupply * 5) / 1000, "Min 0.5% limit"); maxTransferAmount = newLimit; } /// @inheritdoc IFX1SportsToken function setMaxWalletAmount(uint256 newLimit) external override onlyOwner { require(newLimit >= (_totalSupply * 10) / 1000, "Min 1% limit"); maxWalletAmount = newLimit; } /// @inheritdoc IFX1SportsToken function setMarketingTaxWallet( address _marketingTaxWallet ) external override onlyOwner { require( _marketingTaxWallet != address(0), "invalid marketingTaxWallet address" ); marketingTaxRecv = _marketingTaxWallet; } /// @inheritdoc IFX1SportsToken function reducePROOFFeeRate() external override onlyOwner { require( block.timestamp > launchTime + buyfeeRate.proofFeeDuration, "You must wait 72 hrs" ); buyfeeRate.highTotalFeeRate = buyfeeRate.highTotalFeeRate + 10 - buyfeeRate.highPROOFFeeRate; buyfeeRate.highPROOFFeeRate = 10; buyfeeRate.normalTotalFeeRate = buyfeeRate.normalTotalFeeRate + 10 - buyfeeRate.normalPROOFFeeRate; buyfeeRate.normalPROOFFeeRate = 10; sellfeeRate.highTotalFeeRate = sellfeeRate.highTotalFeeRate + 10 - sellfeeRate.highPROOFFeeRate; sellfeeRate.highPROOFFeeRate = 10; sellfeeRate.normalTotalFeeRate = sellfeeRate.normalTotalFeeRate + 10 - sellfeeRate.normalPROOFFeeRate; sellfeeRate.normalPROOFFeeRate = 10; } /// @inheritdoc IFX1SportsToken function setMarketingFeeRate( uint16 _marketingBuyFeeRate, uint16 _marketingSellFeeRate ) external override onlyOwner { uint16 maxRateSet = 100; require( _marketingBuyFeeRate <= maxRateSet && _marketingSellFeeRate <= maxRateSet, "Max Rate exceeded, please lower value" ); buyfeeRate.highTotalFeeRate = buyfeeRate.highTotalFeeRate + _marketingBuyFeeRate - buyfeeRate.marketingFeeRate; buyfeeRate.normalTotalFeeRate = buyfeeRate.normalTotalFeeRate + _marketingBuyFeeRate - buyfeeRate.marketingFeeRate; buyfeeRate.marketingFeeRate = _marketingBuyFeeRate; sellfeeRate.highTotalFeeRate = sellfeeRate.highTotalFeeRate + _marketingSellFeeRate - sellfeeRate.marketingFeeRate; sellfeeRate.normalTotalFeeRate = sellfeeRate.normalTotalFeeRate + _marketingSellFeeRate - sellfeeRate.marketingFeeRate; sellfeeRate.marketingFeeRate = _marketingSellFeeRate; } /// @inheritdoc IFX1SportsToken function setLiquidityFeeRate( uint16 _liquidityBuyFeeRate, uint16 _liquiditySellFeeRate ) external override onlyOwner { uint16 maxRateSet = 100; require( _liquidityBuyFeeRate <= maxRateSet && _liquiditySellFeeRate <= maxRateSet, "Max Rate exceeded, please lower value" ); buyfeeRate.highTotalFeeRate = buyfeeRate.highTotalFeeRate + _liquidityBuyFeeRate - buyfeeRate.liquidityFeeRate; buyfeeRate.normalTotalFeeRate = buyfeeRate.normalTotalFeeRate + _liquidityBuyFeeRate - buyfeeRate.liquidityFeeRate; buyfeeRate.liquidityFeeRate = _liquidityBuyFeeRate; sellfeeRate.highTotalFeeRate = sellfeeRate.highTotalFeeRate + _liquiditySellFeeRate - sellfeeRate.liquidityFeeRate; sellfeeRate.normalTotalFeeRate = sellfeeRate.normalTotalFeeRate + _liquiditySellFeeRate - sellfeeRate.liquidityFeeRate; sellfeeRate.liquidityFeeRate = _liquiditySellFeeRate; } /// @inheritdoc IFX1SportsToken function setSwapThreshold( uint256 _swapThreshold ) external override onlyOwner { require(_swapThreshold > 0, "invalid swapThreshold"); swapThreshold = _swapThreshold; } receive() external payable {} function _transfer( address _sender, address _recipient, uint256 _amount ) internal { require(_sender != address(0), "transfer from zero address"); require(!bots[_sender] || !bots[_recipient], "no bots allowed"); require(_recipient != address(0), "transfer to zero address"); require(_amount > 0, "zero amount"); require(_balances[_sender] >= _amount, "not enough amount to transfer"); require(_sender == owner() || launchTime != 0, "not launched yet"); if (block.timestamp < launchTime + whitelistPeriod) { require(whitelists[_recipient], "only whitelist"); } require( excludedFromMaxTransfer[_sender] || _amount <= maxTransferAmount + (10 * 10 ** _decimals), "exceeds to maxTransferAmount" ); require( excludedFromMaxWallet[_recipient] || _balances[_recipient] + _amount <= maxWalletAmount + (10 * 10 ** _decimals), "exceeds to maxWalletAmount" ); if ( inSwapLiquidity || excludedFromFees[_recipient] || excludedFromFees[_sender] ) { _basicTransfer(_sender, _recipient, _amount); emit Transfer(_sender, _recipient, _amount); return; } if (_sender == pair) { // buy _taxonBuyTransfer(_sender, _recipient, _amount); } else { _swapBack(); if (_recipient == pair) { // sell _taxonSellTransfer(_sender, _recipient, _amount); } else { _basicTransfer(_sender, _recipient, _amount); } } emit Transfer(_sender, _recipient, _amount); } function _approve( address _owner, address _spender, uint256 _amount ) private { require(_owner != address(0), "Approve from zero"); require(_spender != address(0), "Approve to zero"); _allowances[_owner][_spender] = _amount; emit Approval(_owner, _spender, _amount); } function _swapBack() internal { uint256 accTotalAmount = accPROOFAmount + accLiquidityAmount + accMarketingAmount; if (accTotalAmount <= swapThreshold) { return; } inSwapLiquidity = true; uint256 swapAmountForLiquidity = accLiquidityAmount / 2; uint256 swapAmount = accTotalAmount - swapAmountForLiquidity; address[] memory path = new address[](2); path[0] = address(this); path[1] = dexRouter.WETH(); _approve(address(this), address(dexRouter), swapAmount); dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( swapAmount, 0, path, address(this), block.timestamp ); uint256 swappedETHAmount = address(this).balance; require(swappedETHAmount > 0, "too small token for swapBack"); uint256 ethForLiquidity = (swappedETHAmount * swapAmountForLiquidity) / swapAmount; if (ethForLiquidity > 0) { uint256 amountForLiquidity = accLiquidityAmount - swapAmountForLiquidity; _approve(address(this), address(dexRouter), amountForLiquidity); dexRouter.addLiquidityETH{value: ethForLiquidity}( address(this), amountForLiquidity, 0, 0, 0x000000000000000000000000000000000000dEaD, block.timestamp ); swappedETHAmount -= ethForLiquidity; } uint256 ethForPROOF = (swappedETHAmount * accPROOFAmount) / swapAmount; uint256 ethForPROOFRevenue = ethForPROOF / 2; uint256 ethForPROOFRewards = ethForPROOF - ethForPROOFRevenue; uint256 ethForMarketing = swappedETHAmount - ethForPROOF; _transferETH(proofRevenue, ethForPROOFRevenue); _transferETH(proofRewards, ethForPROOFRewards); _transferETH(marketingTaxRecv, ethForMarketing); accLiquidityAmount = 0; accMarketingAmount = 0; accPROOFAmount = 0; inSwapLiquidity = false; } function _taxonSellTransfer( address _sender, address _recipient, uint256 _amount ) internal { ( uint16 totalFeeRate, uint16 proofFeeRate, , uint16 liquidityFeeRate ) = _getSellFeeRate(); uint256 feeAmount = (_amount * totalFeeRate) / FIXED_POINT; uint256 proofFeeAmount = (_amount * proofFeeRate) / FIXED_POINT; uint256 liquidityFeeAmount = (_amount * liquidityFeeRate) / FIXED_POINT; uint256 marketingFeeAmount = feeAmount - proofFeeAmount - liquidityFeeAmount; uint256 recvAmount = _amount - feeAmount; _balances[_sender] -= _amount; _balances[_recipient] += recvAmount; _balances[address(this)] += feeAmount; accPROOFAmount += proofFeeAmount; accLiquidityAmount += liquidityFeeAmount; accMarketingAmount += marketingFeeAmount; } function _taxonBuyTransfer( address _sender, address _recipient, uint256 _amount ) internal { ( uint16 totalFeeRate, uint16 proofFeeRate, , uint16 liquidityFeeRate ) = _getBuyFeeRate(); uint256 feeAmount = (_amount * totalFeeRate) / FIXED_POINT; uint256 proofFeeAmount = (_amount * proofFeeRate) / FIXED_POINT; uint256 liquidityFeeAmount = (_amount * liquidityFeeRate) / FIXED_POINT; uint256 marketingFeeAmount = feeAmount - proofFeeAmount - liquidityFeeAmount; uint256 recvAmount = _amount - feeAmount; _balances[_sender] -= _amount; _balances[_recipient] += recvAmount; _balances[address(this)] += feeAmount; accPROOFAmount += proofFeeAmount; accLiquidityAmount += liquidityFeeAmount; accMarketingAmount += marketingFeeAmount; } function _basicTransfer( address _sender, address _recipient, uint256 _amount ) internal { _balances[_sender] -= _amount; _balances[_recipient] += _amount; } function _getSellFeeRate() internal view returns ( uint16 _totalFeeRate, uint16 _proofFeeRate, uint16 _marketingFeeRate, uint16 _liquidityFeeRate ) { if (block.timestamp < launchTime + sellfeeRate.proofFeeDuration) { return ( sellfeeRate.highTotalFeeRate, sellfeeRate.highPROOFFeeRate, sellfeeRate.marketingFeeRate, sellfeeRate.liquidityFeeRate ); } else { return ( sellfeeRate.normalTotalFeeRate, sellfeeRate.normalPROOFFeeRate, sellfeeRate.marketingFeeRate, sellfeeRate.liquidityFeeRate ); } } function _getBuyFeeRate() internal view returns ( uint16 _totalFeeRate, uint16 _proofFeeRate, uint16 _marketingFeeRate, uint16 _liquidityFeeRate ) { if (block.timestamp < launchTime + buyfeeRate.proofFeeDuration) { return ( buyfeeRate.highTotalFeeRate, buyfeeRate.highPROOFFeeRate, buyfeeRate.marketingFeeRate, buyfeeRate.liquidityFeeRate ); } else { return ( buyfeeRate.normalTotalFeeRate, buyfeeRate.normalPROOFFeeRate, buyfeeRate.marketingFeeRate, buyfeeRate.liquidityFeeRate ); } } function _transferETH(address _recipient, uint256 _amount) internal { if (_amount == 0) return; (bool sent, ) = _recipient.call{value: _amount}(""); require(sent, "sending ETH failed"); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.8.0) (access/Ownable2Step.sol) pragma solidity ^0.8.0; import "./Ownable.sol"; /** * @dev Contract module which provides access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership} and {acceptOwnership}. * * This module is used through inheritance. It will make available all functions * from parent (Ownable). */ abstract contract Ownable2Step is Ownable { address private _pendingOwner; event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner); /** * @dev Returns the address of the pending owner. */ function pendingOwner() public view virtual returns (address) { return _pendingOwner; } /** * @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual override onlyOwner { _pendingOwner = newOwner; emit OwnershipTransferStarted(owner(), newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner. * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual override { delete _pendingOwner; super._transferOwnership(newOwner); } /** * @dev The new owner accepts the ownership transfer. */ function acceptOwnership() external { address sender = _msgSender(); require(pendingOwner() == sender, "Ownable2Step: caller is not the new owner"); _transferOwnership(sender); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
//SPDX-License-Identifier: None pragma solidity ^0.8.19; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; /// @title FX1 Sports Token /// @title https://fx1.io/ /// @title https://t.me/fx1_sports_portal /// @author https://PROOFplatform.io /// @author https://5thWeb.io interface IFX1SportsToken is IERC20 { struct Param { address proofRevenue; address proofRewards; address proofAdmin; address marketingTaxRecv; address dexRouter; address teamAllocator_1; address teamAllocator_2; uint256 whitelistPeriod; uint256 proofFeeDuration; uint16 highPROOFFeeRate; uint16 normalPROOFFeeRate; uint16 marketingFeeRate; uint16 liquidityFeeRate; uint16 totalTeamAllocationRate; uint16 teamAllocationRate_1; uint16 teamAllocationRate_2; } struct BuyFeeRate { uint256 proofFeeDuration; uint16 highTotalFeeRate; uint16 normalTotalFeeRate; uint16 highPROOFFeeRate; uint16 normalPROOFFeeRate; uint16 marketingFeeRate; uint16 liquidityFeeRate; } struct SellFeeRate { uint256 proofFeeDuration; uint16 highTotalFeeRate; uint16 normalTotalFeeRate; uint16 highPROOFFeeRate; uint16 normalPROOFFeeRate; uint16 marketingFeeRate; uint16 liquidityFeeRate; } /// @notice Cancels Token from Fees and transfers ownership to PROOF. /// @dev Only PROOF Admin can call this function. function cancelToken() external; /// @notice Remove PROOFFeeRate. /// @dev Only PROOF Admin can call this function. function formatPROOFFee() external; /// @notice Locks trading until called. Cannont be called twice. /// @dev Only owner can call this function. function setLaunchBegin()external; /// @notice Set proofAdmin wallet address. /// @dev Only PROOF Admin can call this function. /// @param newAdmin The address of proofAdmin wallet. function updatePROOFAdmin(address newAdmin) external; /// @notice Add bots. /// @dev Only PROOF Admin can call this function. /// @param bots_ The address of bot. function setBots(address[] memory bots_) external; /// @notice Remove bots. /// @dev Only PROOF Admin and Owner can call this function. /// @param notbot The address to be removed from bots. function delBot(address notbot) external; /// @notice Add/Remove whitelists. /// @dev Only owner can call this function. /// @param _accounts The address of whitelists. /// @param _add True/False = Add/Remove function addWhitelists(address[] memory _accounts, bool _add) external; /// @notice Add/Remove wallets to excludedMaxTransfer. /// @dev Only owner can call this function. /// @param _accounts The address of accounts. /// @param _add True/False = Add/Remove function excludeWalletsFromMaxTransfer( address[] memory _accounts, bool _add ) external; /// @notice Add/Remove wallets to excludedMaxWallet. /// @dev Only owner can call this function. /// @param _accounts The address of accounts. /// @param _add True/False = Add/Remove function excludeWalletsFromMaxWallets( address[] memory _accounts, bool _add ) external; /// @notice Add/Remove wallets to excludedFromFees. /// @dev Only owner can call this function. /// @param _accounts The address of accounts. /// @param _add True/False = Add/Remove function excludeWalletsFromFees( address[] memory _accounts, bool _add ) external; /// @notice Set maxTransferAmount. /// @dev Only owner can call this function. /// @param _maxTransferAmount New maxTransferAmount. function setMaxTransferAmount(uint256 _maxTransferAmount) external; /// @notice Set maxWalletAmount. /// @dev Only owner can call this function. /// @param _maxWalletAmount New maxWalletAmount. function setMaxWalletAmount(uint256 _maxWalletAmount) external; /// @notice Set marketingTaxRecipient wallet address. /// @dev Only owner can call this function. /// @param _marketingTaxWallet The address of marketingTaxRecipient wallet. function setMarketingTaxWallet(address _marketingTaxWallet) external; /// @notice Reduce PROOFFeeRate. /// @dev Only owner can call this function. function reducePROOFFeeRate() external; /// @notice Set MarketingFeeRate. /// @dev Only owner can call this function. /// @dev Max Rate of 100(10%) 10 = 1% /// @param _marketingBuyFeeRate New MarketingBuyFeeRate. /// @param _marketingSellFeeRate New MarketingSellFeeRate. function setMarketingFeeRate( uint16 _marketingBuyFeeRate, uint16 _marketingSellFeeRate ) external; /// @notice Set LiquidityFeeRate. /// @dev Only owner can call this function. /// @dev Max Rate of 100(10%) 10 = 1% /// @param _liquidityBuyFeeRate New liquiditySellFeeRate. /// @param _liquiditySellFeeRate New liquidityBuyFeeRate. function setLiquidityFeeRate( uint16 _liquidityBuyFeeRate, uint16 _liquiditySellFeeRate ) external; /// @notice Set swapThreshold. /// @dev Only owner can call this function. /// @param _swapThreshold New swapThreshold amount. function setSwapThreshold(uint256 _swapThreshold) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.19; interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair( address tokenA, address tokenB ) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair( address tokenA, address tokenB ) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.19; interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable returns (uint[] memory amounts); function swapTokensForExactETH( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactTokensForETH( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapETHForExactTokens( uint amountOut, address[] calldata path, address to, uint deadline ) external payable returns (uint[] memory amounts); function quote( uint amountA, uint reserveA, uint reserveB ) external pure returns (uint amountB); function getAmountOut( uint amountIn, uint reserveIn, uint reserveOut ) external pure returns (uint amountOut); function getAmountIn( uint amountOut, uint reserveIn, uint reserveOut ) external pure returns (uint amountIn); function getAmountsOut( uint amountIn, address[] calldata path ) external view returns (uint[] memory amounts); function getAmountsIn( uint amountOut, address[] calldata path ) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; }
{ "optimizer": { "enabled": true, "runs": 2000 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"components":[{"internalType":"address","name":"proofRevenue","type":"address"},{"internalType":"address","name":"proofRewards","type":"address"},{"internalType":"address","name":"proofAdmin","type":"address"},{"internalType":"address","name":"marketingTaxRecv","type":"address"},{"internalType":"address","name":"dexRouter","type":"address"},{"internalType":"address","name":"teamAllocator_1","type":"address"},{"internalType":"address","name":"teamAllocator_2","type":"address"},{"internalType":"uint256","name":"whitelistPeriod","type":"uint256"},{"internalType":"uint256","name":"proofFeeDuration","type":"uint256"},{"internalType":"uint16","name":"highPROOFFeeRate","type":"uint16"},{"internalType":"uint16","name":"normalPROOFFeeRate","type":"uint16"},{"internalType":"uint16","name":"marketingFeeRate","type":"uint16"},{"internalType":"uint16","name":"liquidityFeeRate","type":"uint16"},{"internalType":"uint16","name":"totalTeamAllocationRate","type":"uint16"},{"internalType":"uint16","name":"teamAllocationRate_1","type":"uint16"},{"internalType":"uint16","name":"teamAllocationRate_2","type":"uint16"}],"internalType":"struct IFX1SportsToken.Param","name":"_param","type":"tuple"}],"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":"OwnershipTransferStarted","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":"FIXED_POINT","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_accounts","type":"address[]"},{"internalType":"bool","name":"_add","type":"bool"}],"name":"addWhitelists","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyfeeRate","outputs":[{"internalType":"uint256","name":"proofFeeDuration","type":"uint256"},{"internalType":"uint16","name":"highTotalFeeRate","type":"uint16"},{"internalType":"uint16","name":"normalTotalFeeRate","type":"uint16"},{"internalType":"uint16","name":"highPROOFFeeRate","type":"uint16"},{"internalType":"uint16","name":"normalPROOFFeeRate","type":"uint16"},{"internalType":"uint16","name":"marketingFeeRate","type":"uint16"},{"internalType":"uint16","name":"liquidityFeeRate","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cancelToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_accounts","type":"address[]"},{"internalType":"bool","name":"_add","type":"bool"}],"name":"excludeWalletsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_accounts","type":"address[]"},{"internalType":"bool","name":"_add","type":"bool"}],"name":"excludeWalletsFromMaxTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_accounts","type":"address[]"},{"internalType":"bool","name":"_add","type":"bool"}],"name":"excludeWalletsFromMaxWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromMaxTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromMaxWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"formatPROOFFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingTaxRecv","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proofAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proofRevenue","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proofRewards","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reducePROOFFeeRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellfeeRate","outputs":[{"internalType":"uint256","name":"proofFeeDuration","type":"uint256"},{"internalType":"uint16","name":"highTotalFeeRate","type":"uint16"},{"internalType":"uint16","name":"normalTotalFeeRate","type":"uint16"},{"internalType":"uint16","name":"highPROOFFeeRate","type":"uint16"},{"internalType":"uint16","name":"normalPROOFFeeRate","type":"uint16"},{"internalType":"uint16","name":"marketingFeeRate","type":"uint16"},{"internalType":"uint16","name":"liquidityFeeRate","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_bots","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setLaunchBegin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_liquidityBuyFeeRate","type":"uint16"},{"internalType":"uint16","name":"_liquiditySellFeeRate","type":"uint16"}],"name":"setLiquidityFeeRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_marketingBuyFeeRate","type":"uint16"},{"internalType":"uint16","name":"_marketingSellFeeRate","type":"uint16"}],"name":"setMarketingFeeRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingTaxWallet","type":"address"}],"name":"setMarketingTaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setMaxTransferAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapThreshold","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newAdmin","type":"address"}],"name":"updatePROOFAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"whitelistPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a0604052620000126012600a62000e57565b6200002290630ee6b28062000e6f565b60095560408051808201909152600a8152694658312053706f72747360b01b602082015260179062000055908262000f2e565b5060408051808201909152600381526246583160e81b60208201526018906200007f908262000f2e565b506103e86080523480156200009357600080fd5b506040516200468638038062004686833981016040819052620000b69162001056565b620000c13362000cd4565b80516001600160a01b03166200011e5760405162461bcd60e51b815260206004820152601d60248201527f696e76616c69642050524f4f4620526576656e7565206164647265737300000060448201526064015b60405180910390fd5b60208101516001600160a01b03166200017a5760405162461bcd60e51b815260206004820152601d60248201527f696e76616c69642050524f4f4620526577617264732061646472657373000000604482015260640162000115565b60408101516001600160a01b0316620001d65760405162461bcd60e51b815260206004820152601d60248201527f696e76616c69642050524f4f4620526577617264732061646472657373000000604482015260640162000115565b60608101516001600160a01b0316620002325760405162461bcd60e51b815260206004820181905260248201527f696e76616c6964204d61726b6574696e67546178526563762061646472657373604482015260640162000115565b60a08101516001600160a01b03166200028e5760405162461bcd60e51b815260206004820152601f60248201527f696e76616c6964207465616d416c6c6f6361746f725f31206164647265737300604482015260640162000115565b60c08101516001600160a01b0316620002ea5760405162461bcd60e51b815260206004820152601f60248201527f696e76616c6964207465616d416c6c6f6361746f725f32206164647265737300604482015260640162000115565b60808101516001600160a01b0316620003465760405162461bcd60e51b815260206004820152601a60248201527f696e76616c696420646578526f75746572206164646472657373000000000000604482015260640162000115565b60008160e00151116200039c5760405162461bcd60e51b815260206004820152601760248201527f696e76616c69642077686974656c697374506572696f64000000000000000000604482015260640162000115565b600081610100015111620003f35760405162461bcd60e51b815260206004820152601860248201527f696e76616c69642070726f6f664665654475726174696f6e0000000000000000604482015260640162000115565b600081610120015161ffff161180156200041e575080610140015161ffff1681610120015161ffff16115b6200046c5760405162461bcd60e51b815260206004820152601860248201527f696e76616c6964206869676850524f4f46466565526174650000000000000000604482015260640162000115565b600081610140015161ffff1611620004c75760405162461bcd60e51b815260206004820152601a60248201527f696e76616c6964206e6f726d616c50524f4f4646656552617465000000000000604482015260640162000115565b6000816101a0015161ffff1611620005225760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420746f74616c5465616d416c6c6f636174696f6e5261746500604482015260640162000115565b806101e00151816101c001516200053a91906200119c565b61ffff16816101a0015161ffff1614620005975760405162461bcd60e51b815260206004820152601b60248201527f696e76616c6964207465616d416c6c6f636174696f6e52617465730000000000604482015260640162000115565b8051601380546001600160a01b03199081166001600160a01b0393841617909155602083015160148054831691841691909117905560408301516015805483169184169190911790556060830151601280548316918416919091179055608083015160198054909216921691909117905560e0810151600b55610120810151601b805461014084015161018085015161016086015163ffffffff60201b1990931664010000000061ffff8088169190910261ffff60301b1916919091176601000000000000938216939093029290921763ffffffff60401b19166a01000000000000000000008383160261ffff60401b191617680100000000000000009284169290920291909117909255610100840151601a55339291620006b9916200119c565b620006c591906200119c565b601b805461ffff191661ffff92909216919091179055610140820151610180830151610160840151620006f991906200119c565b6200070591906200119c565b601b805463ffff000019166201000061ffff93841602179055610120830151601d805461014086015161018087015161016088015163ffffffff60201b199093166401000000008688160261ffff60301b1916176601000000000000928716929092029190911763ffffffff60401b19166a01000000000000000000008287160261ffff60401b191617680100000000000000009583169590950294909417909155610100850151601c559091620007bd916200119c565b620007c991906200119c565b601d805461ffff191661ffff92909216919091179055610140820151610180830151610160840151620007fd91906200119c565b6200080991906200119c565b601d805461ffff92909216620100000263ffff0000199092169190911790556019546040805163c45a015560e01b815290516001600160a01b039092169163c45a0155916004808201926020929091908290030181865afa15801562000873573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008999190620011c1565b6001600160a01b031663c9c65396601960009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620008fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009219190620011c1565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af11580156200096e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009949190620011c1565b601680546001600160a01b0319166001600160a01b039283161781558282166000818152600560209081526040808320805460ff19908116600190811790925560068452828520805482168317905586548816855282852080548216831790553080865283862080548316841790558686526007855283862080548316841790558754891686528386208054831684179055808652838620805483168417905560135489168652838620805483168417905560145489168652838620805483168417905560155489168652838620805483168417905560125489168652838620805483168417905595855260089093528184208054841682179055945490951682528482208054821685179055918152928320805490911690911790556080516101a084015160095461ffff9283169262000ad192169062000e6f565b62000add9190620011df565b9050600060805161ffff16846101c0015161ffff1660095462000b01919062000e6f565b62000b0d9190620011df565b9050600062000b1d828462001202565b905060008360095462000b31919062001202565b60a08701516001600160a01b031660009081526002602052604081208054929350859290919062000b6490849062001218565b909155505060c08601516001600160a01b03166000908152600260205260408120805484929062000b9790849062001218565b9091555050336000908152600260205260408120805483929062000bbd90849062001218565b90915550506040518181523390600090600080516020620046668339815191529060200160405180910390a38560a001516001600160a01b031660006001600160a01b0316600080516020620046668339815191528560405162000c2391815260200190565b60405180910390a38560c001516001600160a01b031660006001600160a01b0316600080516020620046668339815191528460405162000c6591815260200190565b60405180910390a361271060095462000c7f9190620011df565b600c556009546103e89062000c9690600562000e6f565b62000ca29190620011df565b600d5560095460649062000cb890600162000e6f565b62000cc49190620011df565b600e55506200122e945050505050565b600180546001600160a01b031916905562000cef8162000cf2565b50565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000d9957816000190482111562000d7d5762000d7d62000d42565b8085161562000d8b57918102915b93841c939080029062000d5d565b509250929050565b60008262000db25750600162000e51565b8162000dc15750600062000e51565b816001811462000dda576002811462000de55762000e05565b600191505062000e51565b60ff84111562000df95762000df962000d42565b50506001821b62000e51565b5060208310610133831016604e8410600b841016171562000e2a575081810a62000e51565b62000e36838362000d58565b806000190482111562000e4d5762000e4d62000d42565b0290505b92915050565b600062000e6860ff84168362000da1565b9392505050565b808202811582820484141762000e515762000e5162000d42565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168062000eb457607f821691505b60208210810362000ed557634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000f2957600081815260208120601f850160051c8101602086101562000f045750805b601f850160051c820191505b8181101562000f255782815560010162000f10565b5050505b505050565b81516001600160401b0381111562000f4a5762000f4a62000e89565b62000f628162000f5b845462000e9f565b8462000edb565b602080601f83116001811462000f9a576000841562000f815750858301515b600019600386901b1c1916600185901b17855562000f25565b600085815260208120601f198616915b8281101562000fcb5788860151825594840194600190910190840162000faa565b508582101562000fea5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60405161020081016001600160401b038111828210171562001020576200102062000e89565b60405290565b80516001600160a01b03811681146200103e57600080fd5b919050565b805161ffff811681146200103e57600080fd5b600061020082840312156200106a57600080fd5b6200107462000ffa565b6200107f8362001026565b81526200108f6020840162001026565b6020820152620010a26040840162001026565b6040820152620010b56060840162001026565b6060820152620010c86080840162001026565b6080820152620010db60a0840162001026565b60a0820152620010ee60c0840162001026565b60c082015260e083015160e08201526101008084015181830152506101206200111981850162001043565b908201526101406200112d84820162001043565b908201526101606200114184820162001043565b908201526101806200115584820162001043565b908201526101a06200116984820162001043565b908201526101c06200117d84820162001043565b908201526101e06200119184820162001043565b908201529392505050565b61ffff818116838216019080821115620011ba57620011ba62000d42565b5092915050565b600060208284031215620011d457600080fd5b62000e688262001026565b600082620011fd57634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111562000e515762000e5162000d42565b8082018082111562000e515762000e5162000d42565b6080516134076200125f60003960008181610720015281816125e90152818161262c015261266f01526134076000f3fe60806040526004361061032d5760003560e01c806379ba5097116101a5578063a9e75723116100ec578063d82e49c811610095578063dd62ed3e1161006f578063dd62ed3e146109e9578063e30c397814610a2f578063f2fde38b14610a4d578063f771286214610a6d57600080fd5b8063d82e49c81461094a578063dbe66ca01461095f578063dd22a9de1461098f57600080fd5b8063b48e665e116100c6578063b48e665e146108e4578063b515566a146108fa578063bfd792841461091a57600080fd5b8063a9e7572314610898578063aa4bde28146108ae578063abda625e146108c457600080fd5b806395d89b411161014e578063a4fd3e9911610128578063a4fd3e9914610838578063a8aa1b3114610858578063a9059cbb1461087857600080fd5b806395d89b41146107e3578063999e3b7c146107f85780639d0014b11461081857600080fd5b806385a132911161017f57806385a13291146107855780638bf55409146107a55780638da5cb5b146107c557600080fd5b806379ba5097146106f95780637a458d7a1461070e5780637d99f9a41461075557600080fd5b806327849d0211610274578063546a88111161021d578063715018a6116101f7578063715018a61461068e5780637653f01e146106a3578063790ca413146106c357806379a97e13146106d957600080fd5b8063546a88111461062357806359a51c341461063857806370a082311461065857600080fd5b80633b57bb5e1161024e5780633b57bb5e146105ce5780633ef92312146105ee578063478ea72e1461060357600080fd5b806327849d021461057d57806327a14fc214610592578063313ce567146105b257600080fd5b806317e58d72116102d657806323b872dd116102b057806323b872dd1461051d578063256c2cd11461053d578063273123b71461055d57600080fd5b806317e58d72146104a857806318160ddd146104d85780631e7be210146104ed57600080fd5b80630758d924116103075780630758d9241461041e578063095ea7b314610456578063165657331461048657600080fd5b8063026e9ff2146103395780630445b667146103d857806306fdde03146103fc57600080fd5b3661033457005b600080fd5b34801561034557600080fd5b50601a54601b54610393919061ffff80821691620100008104821691640100000000820481169166010000000000008104821691680100000000000000008204811691600160501b90041687565b6040805197885261ffff968716602089015294861694870194909452918416606086015283166080850152821660a08401521660c082015260e0015b60405180910390f35b3480156103e457600080fd5b506103ee600c5481565b6040519081526020016103cf565b34801561040857600080fd5b50610411610a8d565b6040516103cf9190612e2a565b34801561042a57600080fd5b5060195461043e906001600160a01b031681565b6040516001600160a01b0390911681526020016103cf565b34801561046257600080fd5b50610476610471366004612e9d565b610b1f565b60405190151581526020016103cf565b34801561049257600080fd5b506104a66104a1366004612f81565b610b36565b005b3480156104b457600080fd5b506104766104c3366004612fd8565b60066020526000908152604090205460ff1681565b3480156104e457600080fd5b506009546103ee565b3480156104f957600080fd5b50610476610508366004612fd8565b60086020526000908152604090205460ff1681565b34801561052957600080fd5b50610476610538366004612ffc565b610bfe565b34801561054957600080fd5b506104a6610558366004612f81565b610c9c565b34801561056957600080fd5b506104a6610578366004612fd8565b610d59565b34801561058957600080fd5b506104a6610e15565b34801561059e57600080fd5b506104a66105ad36600461303d565b61111f565b3480156105be57600080fd5b50604051601281526020016103cf565b3480156105da57600080fd5b506104a66105e9366004612f81565b611197565b3480156105fa57600080fd5b506104a6611254565b34801561060f57600080fd5b5060135461043e906001600160a01b031681565b34801561062f57600080fd5b506104a6611404565b34801561064457600080fd5b5060155461043e906001600160a01b031681565b34801561066457600080fd5b506103ee610673366004612fd8565b6001600160a01b031660009081526002602052604090205490565b34801561069a57600080fd5b506104a6611500565b3480156106af57600080fd5b5060125461043e906001600160a01b031681565b3480156106cf57600080fd5b506103ee600a5481565b3480156106e557600080fd5b506104a66106f4366004612fd8565b611512565b34801561070557600080fd5b506104a66115ff565b34801561071a57600080fd5b506107427f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff90911681526020016103cf565b34801561076157600080fd5b50610476610770366004612fd8565b60076020526000908152604090205460ff1681565b34801561079157600080fd5b506104a66107a0366004613068565b61168d565b3480156107b157600080fd5b506104a66107c036600461303d565b611873565b3480156107d157600080fd5b506000546001600160a01b031661043e565b3480156107ef57600080fd5b506104116118eb565b34801561080457600080fd5b5060145461043e906001600160a01b031681565b34801561082457600080fd5b506104a661083336600461303d565b6118fa565b34801561084457600080fd5b506104a6610853366004612fd8565b611957565b34801561086457600080fd5b5060165461043e906001600160a01b031681565b34801561088457600080fd5b50610476610893366004612e9d565b611a0a565b3480156108a457600080fd5b506103ee600d5481565b3480156108ba57600080fd5b506103ee600e5481565b3480156108d057600080fd5b506104a66108df366004613068565b611a17565b3480156108f057600080fd5b506103ee600b5481565b34801561090657600080fd5b506104a661091536600461309b565b611bec565b34801561092657600080fd5b50610476610935366004612fd8565b60046020526000908152604090205460ff1681565b34801561095657600080fd5b506104a6611d10565b34801561096b57600080fd5b5061047661097a366004612fd8565b60056020526000908152604090205460ff1681565b34801561099b57600080fd5b50601c54601d54610393919061ffff80821691620100008104821691640100000000820481169166010000000000008104821691680100000000000000008204811691600160501b90041687565b3480156109f557600080fd5b506103ee610a043660046130d8565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610a3b57600080fd5b506001546001600160a01b031661043e565b348015610a5957600080fd5b506104a6610a68366004612fd8565b611d6e565b348015610a7957600080fd5b506104a6610a88366004612f81565b611dec565b606060178054610a9c90613106565b80601f0160208091040260200160405190810160405280929190818152602001828054610ac890613106565b8015610b155780601f10610aea57610100808354040283529160200191610b15565b820191906000526020600020905b815481529060010190602001808311610af857829003601f168201915b5050505050905090565b6000610b2c338484611ea9565b5060015b92915050565b610b3e611fb7565b815180610b925760405162461bcd60e51b815260206004820152601460248201527f696e76616c6964206c656e67746820617272617900000000000000000000000060448201526064015b60405180910390fd5b60005b81811015610bf8578260066000868481518110610bb457610bb4613140565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610bf08161316c565b915050610b95565b50505050565b6001600160a01b038316600090815260036020908152604080832033845290915281205482811015610c725760405162461bcd60e51b815260206004820152601460248201527f5472616e73666572203e20616c6c6f77616e63650000000000000000000000006044820152606401610b89565b610c868533610c818685613186565b611ea9565b610c91858585612011565b506001949350505050565b610ca4611fb7565b815180610cf35760405162461bcd60e51b815260206004820152601460248201527f696e76616c6964206c656e6774682061727261790000000000000000000000006044820152606401610b89565b60005b81811015610bf8578260056000868481518110610d1557610d15613140565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610d518161316c565b915050610cf6565b60155433906001600160a01b0316811480610d8157506000546001600160a01b038281169116145b610df35760405162461bcd60e51b815260206004820152602760248201527f4f776e61626c653a2063616c6c657220646f65736e277420686176652070657260448201527f6d697373696f6e000000000000000000000000000000000000000000000000006064820152608401610b89565b506001600160a01b03166000908152600460205260409020805460ff19169055565b6015546001600160a01b03163314610e7d5760405162461bcd60e51b815260206004820152602560248201527f4f776e61626c653a2063616c6c6572206973206e6f74207468652070726f6f6660448201526420b236b4b760d91b6064820152608401610b89565b601b546601000000000000900461ffff16600003610edd5760405162461bcd60e51b815260206004820152600f60248201527f616c7265616479207265647563656400000000000000000000000000000000006044820152606401610b89565b601b54640100000000900461ffff16600003610f3b5760405162461bcd60e51b815260206004820152600f60248201527f616c7265616479207265647563656400000000000000000000000000000000006044820152606401610b89565b601d546601000000000000900461ffff16600003610f9b5760405162461bcd60e51b815260206004820152600f60248201527f616c7265616479207265647563656400000000000000000000000000000000006044820152606401610b89565b601d54640100000000900461ffff16600003610ff95760405162461bcd60e51b815260206004820152600f60248201527f616c7265616479207265647563656400000000000000000000000000000000006044820152606401610b89565b601b5461ffff640100000000820481169161101691166000613199565b61102091906131bb565b601b805465ffff0000ffff191661ffff92831617908190556601000000000000810482169161105791620100009004166000613199565b61106191906131bb565b601b805467ffff0000ffff000019166201000061ffff9384160267ffff0000000000001916179055601d5464010000000081048216916110a391166000613199565b6110ad91906131bb565b601d805465ffff0000ffff191661ffff9283161790819055660100000000000081048216916110e491620100009004166000613199565b6110ee91906131bb565b601d805467ffff0000ffff000019166201000061ffff939093169290920267ffff0000000000001916919091179055565b611127611fb7565b6103e8600954600a61113991906131d6565b61114391906131ed565b8110156111925760405162461bcd60e51b815260206004820152600c60248201527f4d696e203125206c696d697400000000000000000000000000000000000000006044820152606401610b89565b600e55565b61119f611fb7565b8151806111ee5760405162461bcd60e51b815260206004820152601760248201527f696e76616c6964206163636f756e7473206c656e6774680000000000000000006044820152606401610b89565b60005b81811015610bf857826008600086848151811061121057611210613140565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061124c8161316c565b9150506111f1565b61125c611fb7565b601a54600a5461126c919061320f565b42116112ba5760405162461bcd60e51b815260206004820152601460248201527f596f75206d7573742077616974203732206872730000000000000000000000006044820152606401610b89565b601b5461ffff64010000000082048116916112d79116600a613199565b6112e191906131bb565b601b8054640a0000000065ffff0000ffff1990911661ffff938416171790819055660100000000000081048216916113219162010000900416600a613199565b61132b91906131bb565b601b805467ffff0000ffff000019166201000061ffff9384160267ffff000000000000191617660a000000000000179055601d5464010000000081048216916113769116600a613199565b61138091906131bb565b601d8054640a0000000065ffff0000ffff1990911661ffff938416171790819055660100000000000081048216916113c09162010000900416600a613199565b6113ca91906131bb565b601d805467ffff0000ffff000019166201000061ffff939093169290920267ffff000000000000191691909117660a000000000000179055565b6015546001600160a01b0316331461146c5760405162461bcd60e51b815260206004820152602560248201527f4f776e61626c653a2063616c6c6572206973206e6f74207468652070726f6f6660448201526420b236b4b760d91b6064820152608401610b89565b601980546001600160a01b0390811660009081526005602090815260408083208054600160ff19918216811790925586548616855260068085528386208054831684179055965486168552600780855283862080548316841790558554871686529684528285208054821683179055845486168552959092529091208054909316179091556015546114fe911661254c565b565b611508611fb7565b6114fe600061254c565b6015546001600160a01b0316331461157a5760405162461bcd60e51b815260206004820152602560248201527f4f776e61626c653a2063616c6c6572206973206e6f74207468652070726f6f6660448201526420b236b4b760d91b6064820152608401610b89565b6001600160a01b0381166115d05760405162461bcd60e51b815260206004820152601a60248201527f696e76616c69642070726f6f6641646d696e20616464726573730000000000006044820152606401610b89565b6015805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60015433906001600160a01b031681146116815760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e657200000000000000000000000000000000000000000000006064820152608401610b89565b61168a8161254c565b50565b611695611fb7565b606461ffff831681108015906116b357508061ffff168261ffff1611155b6117255760405162461bcd60e51b815260206004820152602560248201527f4d617820526174652065786365656465642c20706c65617365206c6f7765722060448201527f76616c75650000000000000000000000000000000000000000000000000000006064820152608401610b89565b601b5461ffff68010000000000000000820481169161174691869116613199565b61175091906131bb565b601b805461ffff191661ffff92831617908190556801000000000000000081048216916117869186916201000090910416613199565b61179091906131bb565b601b805469ffff00000000ffff000019166201000061ffff9384160269ffff000000000000000019161768010000000000000000868416810291909117909155601d549081048216916117e591859116613199565b6117ef91906131bb565b601d805461ffff191661ffff92831617908190556801000000000000000081048216916118259185916201000090910416613199565b61182f91906131bb565b601d805469ffff00000000ffff000019166201000061ffff9384160269ffff0000000000000000191617680100000000000000009490921693909302179091555050565b61187b611fb7565b6103e8600954600561188d91906131d6565b61189791906131ed565b8110156118e65760405162461bcd60e51b815260206004820152600e60248201527f4d696e20302e3525206c696d69740000000000000000000000000000000000006044820152606401610b89565b600d55565b606060188054610a9c90613106565b611902611fb7565b600081116119525760405162461bcd60e51b815260206004820152601560248201527f696e76616c696420737761705468726573686f6c6400000000000000000000006044820152606401610b89565b600c55565b61195f611fb7565b6001600160a01b0381166119db5760405162461bcd60e51b815260206004820152602260248201527f696e76616c6964206d61726b6574696e6754617857616c6c657420616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610b89565b6012805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000610b2c338484612011565b611a1f611fb7565b606461ffff83168110801590611a3d57508061ffff168261ffff1611155b611aaf5760405162461bcd60e51b815260206004820152602560248201527f4d617820526174652065786365656465642c20706c65617365206c6f7765722060448201527f76616c75650000000000000000000000000000000000000000000000000000006064820152608401610b89565b601b5461ffff600160501b8204811691611acb91869116613199565b611ad591906131bb565b601b805461ffff191661ffff9283161790819055600160501b8104821691611b069186916201000090910416613199565b611b1091906131bb565b601b80546bffff000000000000ffff000019166201000061ffff938416026bffff00000000000000000000191617600160501b868416810291909117909155601d54908104821691611b6491859116613199565b611b6e91906131bb565b601d805461ffff191661ffff9283161790819055600160501b8104821691611b9f9185916201000090910416613199565b611ba991906131bb565b601d80546bffff000000000000ffff000019166201000061ffff938416026bffff00000000000000000000191617600160501b9490921693909302179091555050565b6015546001600160a01b03163314611c545760405162461bcd60e51b815260206004820152602560248201527f4f776e61626c653a2063616c6c6572206973206e6f74207468652070726f6f6660448201526420b236b4b760d91b6064820152608401610b89565b805180611ca35760405162461bcd60e51b815260206004820152601460248201527f696e76616c6964206172726179206c656e6774680000000000000000000000006044820152606401610b89565b60005b8251811015611d0b57600160046000858481518110611cc757611cc7613140565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611d038161316c565b915050611ca6565b505050565b611d18611fb7565b600a5415611d685760405162461bcd60e51b815260206004820152601060248201527f616c7265616479206c61756e63686564000000000000000000000000000000006044820152606401610b89565b42600a55565b611d76611fb7565b600180546001600160a01b03831673ffffffffffffffffffffffffffffffffffffffff199091168117909155611db46000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b611df4611fb7565b815180611e435760405162461bcd60e51b815260206004820152601460248201527f696e76616c6964206c656e6774682061727261790000000000000000000000006044820152606401610b89565b60005b81811015610bf8578260076000868481518110611e6557611e65613140565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611ea18161316c565b915050611e46565b6001600160a01b038316611eff5760405162461bcd60e51b815260206004820152601160248201527f417070726f76652066726f6d207a65726f0000000000000000000000000000006044820152606401610b89565b6001600160a01b038216611f555760405162461bcd60e51b815260206004820152600f60248201527f417070726f766520746f207a65726f00000000000000000000000000000000006044820152606401610b89565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000546001600160a01b031633146114fe5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b89565b6001600160a01b0383166120675760405162461bcd60e51b815260206004820152601a60248201527f7472616e736665722066726f6d207a65726f20616464726573730000000000006044820152606401610b89565b6001600160a01b03831660009081526004602052604090205460ff1615806120a857506001600160a01b03821660009081526004602052604090205460ff16155b6120f45760405162461bcd60e51b815260206004820152600f60248201527f6e6f20626f747320616c6c6f77656400000000000000000000000000000000006044820152606401610b89565b6001600160a01b03821661214a5760405162461bcd60e51b815260206004820152601860248201527f7472616e7366657220746f207a65726f206164647265737300000000000000006044820152606401610b89565b6000811161219a5760405162461bcd60e51b815260206004820152600b60248201527f7a65726f20616d6f756e740000000000000000000000000000000000000000006044820152606401610b89565b6001600160a01b0383166000908152600260205260409020548111156122025760405162461bcd60e51b815260206004820152601d60248201527f6e6f7420656e6f75676820616d6f756e7420746f207472616e736665720000006044820152606401610b89565b6000546001600160a01b038481169116148061221f5750600a5415155b61226b5760405162461bcd60e51b815260206004820152601060248201527f6e6f74206c61756e6368656420796574000000000000000000000000000000006044820152606401610b89565b600b54600a5461227b919061320f565b4210156122ea576001600160a01b03821660009081526008602052604090205460ff166122ea5760405162461bcd60e51b815260206004820152600e60248201527f6f6e6c792077686974656c6973740000000000000000000000000000000000006044820152606401610b89565b6001600160a01b03831660009081526006602052604090205460ff168061233457506123186012600a613306565b61232390600a6131d6565b600d54612330919061320f565b8111155b6123805760405162461bcd60e51b815260206004820152601c60248201527f6578636565647320746f206d61785472616e73666572416d6f756e74000000006044820152606401610b89565b6001600160a01b03821660009081526007602052604090205460ff16806123ed57506123ae6012600a613306565b6123b990600a6131d6565b600e546123c6919061320f565b6001600160a01b0383166000908152600260205260409020546123ea90839061320f565b11155b6124395760405162461bcd60e51b815260206004820152601a60248201527f6578636565647320746f206d617857616c6c6574416d6f756e740000000000006044820152606401610b89565b60165474010000000000000000000000000000000000000000900460ff168061247a57506001600160a01b03821660009081526005602052604090205460ff165b8061249d57506001600160a01b03831660009081526005602052604090205460ff165b156124f2576124ad838383612572565b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611faa91815260200190565b6016546001600160a01b0390811690841603612518576125138383836125d1565b6124ad565b6125206127ae565b6016546001600160a01b039081169083160361254157612513838383612bed565b6124ad838383612572565b6001805473ffffffffffffffffffffffffffffffffffffffff1916905561168a81612bfa565b6001600160a01b0383166000908152600260205260408120805483929061259a908490613186565b90915550506001600160a01b038216600090815260026020526040812080548392906125c790849061320f565b9091555050505050565b60008060006125de612c57565b9350509250925060007f000000000000000000000000000000000000000000000000000000000000000061ffff168461ffff168661261c91906131d6565b61262691906131ed565b905060007f000000000000000000000000000000000000000000000000000000000000000061ffff168461ffff168761265f91906131d6565b61266991906131ed565b905060007f000000000000000000000000000000000000000000000000000000000000000061ffff168461ffff16886126a291906131d6565b6126ac91906131ed565b90506000816126bb8486613186565b6126c59190613186565b905060006126d3858a613186565b6001600160a01b038c16600090815260026020526040812080549293508b92909190612700908490613186565b90915550506001600160a01b038a166000908152600260205260408120805483929061272d90849061320f565b9091555050306000908152600260205260408120805487929061275190849061320f565b92505081905550836011600082825461276a919061320f565b9250508190555082600f6000828254612783919061320f565b92505081905550816010600082825461279c919061320f565b90915550505050505050505050505050565b6000601054600f546011546127c3919061320f565b6127cd919061320f565b9050600c5481116127db5750565b601680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055600f5460009061282c906002906131ed565b9050600061283a8284613186565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061287457612874613140565b6001600160a01b03928316602091820292909201810191909152601954604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa1580156128e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061290a9190613315565b8160018151811061291d5761291d613140565b6001600160a01b0392831660209182029290920101526019546129439130911684611ea9565b6019546040517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063791ac94790612995908590600090869030904290600401613332565b600060405180830381600087803b1580156129af57600080fd5b505af11580156129c3573d6000803e3d6000fd5b50479250505080612a165760405162461bcd60e51b815260206004820152601c60248201527f746f6f20736d616c6c20746f6b656e20666f7220737761704261636b000000006044820152606401610b89565b600083612a2386846131d6565b612a2d91906131ed565b90508015612b1f57600085600f54612a459190613186565b601954909150612a609030906001600160a01b031683611ea9565b6019546040517ff305d71900000000000000000000000000000000000000000000000000000000815230600482015260248101839052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990849060c40160606040518083038185885af1158015612ae7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612b0c91906133a3565b5050508183612b1b9190613186565b9250505b60008460115484612b3091906131d6565b612b3a91906131ed565b90506000612b496002836131ed565b90506000612b578284613186565b90506000612b658487613186565b601354909150612b7e906001600160a01b031684612cea565b601454612b94906001600160a01b031683612cea565b601254612baa906001600160a01b031682612cea565b50506000600f81905560108190556011555050601680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055505050505050565b60008060006125de612d99565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080600080601a60000154600a54612c70919061320f565b421015612cac575050601b5461ffff8082169350640100000000820481169250680100000000000000008204811691600160501b900416612ce4565b5050601b5461ffff620100008204811693506601000000000000820481169250680100000000000000008204811691600160501b9004165b90919293565b80600003612cf6575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612d43576040519150601f19603f3d011682016040523d82523d6000602084013e612d48565b606091505b5050905080611d0b5760405162461bcd60e51b815260206004820152601260248201527f73656e64696e6720455448206661696c656400000000000000000000000000006044820152606401610b89565b600080600080601c60000154600a54612db2919061320f565b421015612dee575050601d5461ffff8082169350640100000000820481169250680100000000000000008204811691600160501b900416612ce4565b5050601d5461ffff620100008204811693506601000000000000820481169250680100000000000000008204811691600160501b900416612ce4565b600060208083528351808285015260005b81811015612e5757858101830151858201604001528201612e3b565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461168a57600080fd5b8035612e9881612e78565b919050565b60008060408385031215612eb057600080fd5b8235612ebb81612e78565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112612ef057600080fd5b8135602067ffffffffffffffff80831115612f0d57612f0d612ec9565b8260051b604051601f19603f83011681018181108482111715612f3257612f32612ec9565b604052938452858101830193838101925087851115612f5057600080fd5b83870191505b84821015612f7657612f6782612e8d565b83529183019190830190612f56565b979650505050505050565b60008060408385031215612f9457600080fd5b823567ffffffffffffffff811115612fab57600080fd5b612fb785828601612edf565b92505060208301358015158114612fcd57600080fd5b809150509250929050565b600060208284031215612fea57600080fd5b8135612ff581612e78565b9392505050565b60008060006060848603121561301157600080fd5b833561301c81612e78565b9250602084013561302c81612e78565b929592945050506040919091013590565b60006020828403121561304f57600080fd5b5035919050565b803561ffff81168114612e9857600080fd5b6000806040838503121561307b57600080fd5b61308483613056565b915061309260208401613056565b90509250929050565b6000602082840312156130ad57600080fd5b813567ffffffffffffffff8111156130c457600080fd5b6130d084828501612edf565b949350505050565b600080604083850312156130eb57600080fd5b82356130f681612e78565b91506020830135612fcd81612e78565b600181811c9082168061311a57607f821691505b60208210810361313a57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019820361317f5761317f613156565b5060010190565b81810381811115610b3057610b30613156565b61ffff8181168382160190808211156131b4576131b4613156565b5092915050565b61ffff8281168282160390808211156131b4576131b4613156565b8082028115828204841417610b3057610b30613156565b60008261320a57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610b3057610b30613156565b600181815b8085111561325d57816000190482111561324357613243613156565b8085161561325057918102915b93841c9390800290613227565b509250929050565b60008261327457506001610b30565b8161328157506000610b30565b816001811461329757600281146132a1576132bd565b6001915050610b30565b60ff8411156132b2576132b2613156565b50506001821b610b30565b5060208310610133831016604e8410600b84101617156132e0575081810a610b30565b6132ea8383613222565b80600019048211156132fe576132fe613156565b029392505050565b6000612ff560ff841683613265565b60006020828403121561332757600080fd5b8151612ff581612e78565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156133825784516001600160a01b03168352938301939183019160010161335d565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156133b857600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220871b4873d65d4690ff54c756cb383054e571c1544d5ad25fc22d7ce4bc72990364736f6c63430008130033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef000000000000000000000000e9b4d32f829951a3ce145d2caa84cf66af56ca5e0000000000000000000000001bf4cb781b97724a8a22ef064dce6bbc1c26cdda000000000000000000000000acfb878960bcda38782d854efb2e687b57e31f09000000000000000000000000afc94420451fca019dc97100d14abcb8704d6e650000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000d015a304d44041d25d10486e64330e7888fb6647000000000000000000000000a39dc746652a0731da7ff1f4ad6385caf8a95e29000000000000000000000000000000000000000000000000000000000000012c000000000000000000000000000000000000000000000000000000000003f4800000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000003c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009600000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000032
Deployed Bytecode
0x60806040526004361061032d5760003560e01c806379ba5097116101a5578063a9e75723116100ec578063d82e49c811610095578063dd62ed3e1161006f578063dd62ed3e146109e9578063e30c397814610a2f578063f2fde38b14610a4d578063f771286214610a6d57600080fd5b8063d82e49c81461094a578063dbe66ca01461095f578063dd22a9de1461098f57600080fd5b8063b48e665e116100c6578063b48e665e146108e4578063b515566a146108fa578063bfd792841461091a57600080fd5b8063a9e7572314610898578063aa4bde28146108ae578063abda625e146108c457600080fd5b806395d89b411161014e578063a4fd3e9911610128578063a4fd3e9914610838578063a8aa1b3114610858578063a9059cbb1461087857600080fd5b806395d89b41146107e3578063999e3b7c146107f85780639d0014b11461081857600080fd5b806385a132911161017f57806385a13291146107855780638bf55409146107a55780638da5cb5b146107c557600080fd5b806379ba5097146106f95780637a458d7a1461070e5780637d99f9a41461075557600080fd5b806327849d0211610274578063546a88111161021d578063715018a6116101f7578063715018a61461068e5780637653f01e146106a3578063790ca413146106c357806379a97e13146106d957600080fd5b8063546a88111461062357806359a51c341461063857806370a082311461065857600080fd5b80633b57bb5e1161024e5780633b57bb5e146105ce5780633ef92312146105ee578063478ea72e1461060357600080fd5b806327849d021461057d57806327a14fc214610592578063313ce567146105b257600080fd5b806317e58d72116102d657806323b872dd116102b057806323b872dd1461051d578063256c2cd11461053d578063273123b71461055d57600080fd5b806317e58d72146104a857806318160ddd146104d85780631e7be210146104ed57600080fd5b80630758d924116103075780630758d9241461041e578063095ea7b314610456578063165657331461048657600080fd5b8063026e9ff2146103395780630445b667146103d857806306fdde03146103fc57600080fd5b3661033457005b600080fd5b34801561034557600080fd5b50601a54601b54610393919061ffff80821691620100008104821691640100000000820481169166010000000000008104821691680100000000000000008204811691600160501b90041687565b6040805197885261ffff968716602089015294861694870194909452918416606086015283166080850152821660a08401521660c082015260e0015b60405180910390f35b3480156103e457600080fd5b506103ee600c5481565b6040519081526020016103cf565b34801561040857600080fd5b50610411610a8d565b6040516103cf9190612e2a565b34801561042a57600080fd5b5060195461043e906001600160a01b031681565b6040516001600160a01b0390911681526020016103cf565b34801561046257600080fd5b50610476610471366004612e9d565b610b1f565b60405190151581526020016103cf565b34801561049257600080fd5b506104a66104a1366004612f81565b610b36565b005b3480156104b457600080fd5b506104766104c3366004612fd8565b60066020526000908152604090205460ff1681565b3480156104e457600080fd5b506009546103ee565b3480156104f957600080fd5b50610476610508366004612fd8565b60086020526000908152604090205460ff1681565b34801561052957600080fd5b50610476610538366004612ffc565b610bfe565b34801561054957600080fd5b506104a6610558366004612f81565b610c9c565b34801561056957600080fd5b506104a6610578366004612fd8565b610d59565b34801561058957600080fd5b506104a6610e15565b34801561059e57600080fd5b506104a66105ad36600461303d565b61111f565b3480156105be57600080fd5b50604051601281526020016103cf565b3480156105da57600080fd5b506104a66105e9366004612f81565b611197565b3480156105fa57600080fd5b506104a6611254565b34801561060f57600080fd5b5060135461043e906001600160a01b031681565b34801561062f57600080fd5b506104a6611404565b34801561064457600080fd5b5060155461043e906001600160a01b031681565b34801561066457600080fd5b506103ee610673366004612fd8565b6001600160a01b031660009081526002602052604090205490565b34801561069a57600080fd5b506104a6611500565b3480156106af57600080fd5b5060125461043e906001600160a01b031681565b3480156106cf57600080fd5b506103ee600a5481565b3480156106e557600080fd5b506104a66106f4366004612fd8565b611512565b34801561070557600080fd5b506104a66115ff565b34801561071a57600080fd5b506107427f00000000000000000000000000000000000000000000000000000000000003e881565b60405161ffff90911681526020016103cf565b34801561076157600080fd5b50610476610770366004612fd8565b60076020526000908152604090205460ff1681565b34801561079157600080fd5b506104a66107a0366004613068565b61168d565b3480156107b157600080fd5b506104a66107c036600461303d565b611873565b3480156107d157600080fd5b506000546001600160a01b031661043e565b3480156107ef57600080fd5b506104116118eb565b34801561080457600080fd5b5060145461043e906001600160a01b031681565b34801561082457600080fd5b506104a661083336600461303d565b6118fa565b34801561084457600080fd5b506104a6610853366004612fd8565b611957565b34801561086457600080fd5b5060165461043e906001600160a01b031681565b34801561088457600080fd5b50610476610893366004612e9d565b611a0a565b3480156108a457600080fd5b506103ee600d5481565b3480156108ba57600080fd5b506103ee600e5481565b3480156108d057600080fd5b506104a66108df366004613068565b611a17565b3480156108f057600080fd5b506103ee600b5481565b34801561090657600080fd5b506104a661091536600461309b565b611bec565b34801561092657600080fd5b50610476610935366004612fd8565b60046020526000908152604090205460ff1681565b34801561095657600080fd5b506104a6611d10565b34801561096b57600080fd5b5061047661097a366004612fd8565b60056020526000908152604090205460ff1681565b34801561099b57600080fd5b50601c54601d54610393919061ffff80821691620100008104821691640100000000820481169166010000000000008104821691680100000000000000008204811691600160501b90041687565b3480156109f557600080fd5b506103ee610a043660046130d8565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610a3b57600080fd5b506001546001600160a01b031661043e565b348015610a5957600080fd5b506104a6610a68366004612fd8565b611d6e565b348015610a7957600080fd5b506104a6610a88366004612f81565b611dec565b606060178054610a9c90613106565b80601f0160208091040260200160405190810160405280929190818152602001828054610ac890613106565b8015610b155780601f10610aea57610100808354040283529160200191610b15565b820191906000526020600020905b815481529060010190602001808311610af857829003601f168201915b5050505050905090565b6000610b2c338484611ea9565b5060015b92915050565b610b3e611fb7565b815180610b925760405162461bcd60e51b815260206004820152601460248201527f696e76616c6964206c656e67746820617272617900000000000000000000000060448201526064015b60405180910390fd5b60005b81811015610bf8578260066000868481518110610bb457610bb4613140565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610bf08161316c565b915050610b95565b50505050565b6001600160a01b038316600090815260036020908152604080832033845290915281205482811015610c725760405162461bcd60e51b815260206004820152601460248201527f5472616e73666572203e20616c6c6f77616e63650000000000000000000000006044820152606401610b89565b610c868533610c818685613186565b611ea9565b610c91858585612011565b506001949350505050565b610ca4611fb7565b815180610cf35760405162461bcd60e51b815260206004820152601460248201527f696e76616c6964206c656e6774682061727261790000000000000000000000006044820152606401610b89565b60005b81811015610bf8578260056000868481518110610d1557610d15613140565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610d518161316c565b915050610cf6565b60155433906001600160a01b0316811480610d8157506000546001600160a01b038281169116145b610df35760405162461bcd60e51b815260206004820152602760248201527f4f776e61626c653a2063616c6c657220646f65736e277420686176652070657260448201527f6d697373696f6e000000000000000000000000000000000000000000000000006064820152608401610b89565b506001600160a01b03166000908152600460205260409020805460ff19169055565b6015546001600160a01b03163314610e7d5760405162461bcd60e51b815260206004820152602560248201527f4f776e61626c653a2063616c6c6572206973206e6f74207468652070726f6f6660448201526420b236b4b760d91b6064820152608401610b89565b601b546601000000000000900461ffff16600003610edd5760405162461bcd60e51b815260206004820152600f60248201527f616c7265616479207265647563656400000000000000000000000000000000006044820152606401610b89565b601b54640100000000900461ffff16600003610f3b5760405162461bcd60e51b815260206004820152600f60248201527f616c7265616479207265647563656400000000000000000000000000000000006044820152606401610b89565b601d546601000000000000900461ffff16600003610f9b5760405162461bcd60e51b815260206004820152600f60248201527f616c7265616479207265647563656400000000000000000000000000000000006044820152606401610b89565b601d54640100000000900461ffff16600003610ff95760405162461bcd60e51b815260206004820152600f60248201527f616c7265616479207265647563656400000000000000000000000000000000006044820152606401610b89565b601b5461ffff640100000000820481169161101691166000613199565b61102091906131bb565b601b805465ffff0000ffff191661ffff92831617908190556601000000000000810482169161105791620100009004166000613199565b61106191906131bb565b601b805467ffff0000ffff000019166201000061ffff9384160267ffff0000000000001916179055601d5464010000000081048216916110a391166000613199565b6110ad91906131bb565b601d805465ffff0000ffff191661ffff9283161790819055660100000000000081048216916110e491620100009004166000613199565b6110ee91906131bb565b601d805467ffff0000ffff000019166201000061ffff939093169290920267ffff0000000000001916919091179055565b611127611fb7565b6103e8600954600a61113991906131d6565b61114391906131ed565b8110156111925760405162461bcd60e51b815260206004820152600c60248201527f4d696e203125206c696d697400000000000000000000000000000000000000006044820152606401610b89565b600e55565b61119f611fb7565b8151806111ee5760405162461bcd60e51b815260206004820152601760248201527f696e76616c6964206163636f756e7473206c656e6774680000000000000000006044820152606401610b89565b60005b81811015610bf857826008600086848151811061121057611210613140565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061124c8161316c565b9150506111f1565b61125c611fb7565b601a54600a5461126c919061320f565b42116112ba5760405162461bcd60e51b815260206004820152601460248201527f596f75206d7573742077616974203732206872730000000000000000000000006044820152606401610b89565b601b5461ffff64010000000082048116916112d79116600a613199565b6112e191906131bb565b601b8054640a0000000065ffff0000ffff1990911661ffff938416171790819055660100000000000081048216916113219162010000900416600a613199565b61132b91906131bb565b601b805467ffff0000ffff000019166201000061ffff9384160267ffff000000000000191617660a000000000000179055601d5464010000000081048216916113769116600a613199565b61138091906131bb565b601d8054640a0000000065ffff0000ffff1990911661ffff938416171790819055660100000000000081048216916113c09162010000900416600a613199565b6113ca91906131bb565b601d805467ffff0000ffff000019166201000061ffff939093169290920267ffff000000000000191691909117660a000000000000179055565b6015546001600160a01b0316331461146c5760405162461bcd60e51b815260206004820152602560248201527f4f776e61626c653a2063616c6c6572206973206e6f74207468652070726f6f6660448201526420b236b4b760d91b6064820152608401610b89565b601980546001600160a01b0390811660009081526005602090815260408083208054600160ff19918216811790925586548616855260068085528386208054831684179055965486168552600780855283862080548316841790558554871686529684528285208054821683179055845486168552959092529091208054909316179091556015546114fe911661254c565b565b611508611fb7565b6114fe600061254c565b6015546001600160a01b0316331461157a5760405162461bcd60e51b815260206004820152602560248201527f4f776e61626c653a2063616c6c6572206973206e6f74207468652070726f6f6660448201526420b236b4b760d91b6064820152608401610b89565b6001600160a01b0381166115d05760405162461bcd60e51b815260206004820152601a60248201527f696e76616c69642070726f6f6641646d696e20616464726573730000000000006044820152606401610b89565b6015805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60015433906001600160a01b031681146116815760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e657200000000000000000000000000000000000000000000006064820152608401610b89565b61168a8161254c565b50565b611695611fb7565b606461ffff831681108015906116b357508061ffff168261ffff1611155b6117255760405162461bcd60e51b815260206004820152602560248201527f4d617820526174652065786365656465642c20706c65617365206c6f7765722060448201527f76616c75650000000000000000000000000000000000000000000000000000006064820152608401610b89565b601b5461ffff68010000000000000000820481169161174691869116613199565b61175091906131bb565b601b805461ffff191661ffff92831617908190556801000000000000000081048216916117869186916201000090910416613199565b61179091906131bb565b601b805469ffff00000000ffff000019166201000061ffff9384160269ffff000000000000000019161768010000000000000000868416810291909117909155601d549081048216916117e591859116613199565b6117ef91906131bb565b601d805461ffff191661ffff92831617908190556801000000000000000081048216916118259185916201000090910416613199565b61182f91906131bb565b601d805469ffff00000000ffff000019166201000061ffff9384160269ffff0000000000000000191617680100000000000000009490921693909302179091555050565b61187b611fb7565b6103e8600954600561188d91906131d6565b61189791906131ed565b8110156118e65760405162461bcd60e51b815260206004820152600e60248201527f4d696e20302e3525206c696d69740000000000000000000000000000000000006044820152606401610b89565b600d55565b606060188054610a9c90613106565b611902611fb7565b600081116119525760405162461bcd60e51b815260206004820152601560248201527f696e76616c696420737761705468726573686f6c6400000000000000000000006044820152606401610b89565b600c55565b61195f611fb7565b6001600160a01b0381166119db5760405162461bcd60e51b815260206004820152602260248201527f696e76616c6964206d61726b6574696e6754617857616c6c657420616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610b89565b6012805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000610b2c338484612011565b611a1f611fb7565b606461ffff83168110801590611a3d57508061ffff168261ffff1611155b611aaf5760405162461bcd60e51b815260206004820152602560248201527f4d617820526174652065786365656465642c20706c65617365206c6f7765722060448201527f76616c75650000000000000000000000000000000000000000000000000000006064820152608401610b89565b601b5461ffff600160501b8204811691611acb91869116613199565b611ad591906131bb565b601b805461ffff191661ffff9283161790819055600160501b8104821691611b069186916201000090910416613199565b611b1091906131bb565b601b80546bffff000000000000ffff000019166201000061ffff938416026bffff00000000000000000000191617600160501b868416810291909117909155601d54908104821691611b6491859116613199565b611b6e91906131bb565b601d805461ffff191661ffff9283161790819055600160501b8104821691611b9f9185916201000090910416613199565b611ba991906131bb565b601d80546bffff000000000000ffff000019166201000061ffff938416026bffff00000000000000000000191617600160501b9490921693909302179091555050565b6015546001600160a01b03163314611c545760405162461bcd60e51b815260206004820152602560248201527f4f776e61626c653a2063616c6c6572206973206e6f74207468652070726f6f6660448201526420b236b4b760d91b6064820152608401610b89565b805180611ca35760405162461bcd60e51b815260206004820152601460248201527f696e76616c6964206172726179206c656e6774680000000000000000000000006044820152606401610b89565b60005b8251811015611d0b57600160046000858481518110611cc757611cc7613140565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611d038161316c565b915050611ca6565b505050565b611d18611fb7565b600a5415611d685760405162461bcd60e51b815260206004820152601060248201527f616c7265616479206c61756e63686564000000000000000000000000000000006044820152606401610b89565b42600a55565b611d76611fb7565b600180546001600160a01b03831673ffffffffffffffffffffffffffffffffffffffff199091168117909155611db46000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b611df4611fb7565b815180611e435760405162461bcd60e51b815260206004820152601460248201527f696e76616c6964206c656e6774682061727261790000000000000000000000006044820152606401610b89565b60005b81811015610bf8578260076000868481518110611e6557611e65613140565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611ea18161316c565b915050611e46565b6001600160a01b038316611eff5760405162461bcd60e51b815260206004820152601160248201527f417070726f76652066726f6d207a65726f0000000000000000000000000000006044820152606401610b89565b6001600160a01b038216611f555760405162461bcd60e51b815260206004820152600f60248201527f417070726f766520746f207a65726f00000000000000000000000000000000006044820152606401610b89565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000546001600160a01b031633146114fe5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b89565b6001600160a01b0383166120675760405162461bcd60e51b815260206004820152601a60248201527f7472616e736665722066726f6d207a65726f20616464726573730000000000006044820152606401610b89565b6001600160a01b03831660009081526004602052604090205460ff1615806120a857506001600160a01b03821660009081526004602052604090205460ff16155b6120f45760405162461bcd60e51b815260206004820152600f60248201527f6e6f20626f747320616c6c6f77656400000000000000000000000000000000006044820152606401610b89565b6001600160a01b03821661214a5760405162461bcd60e51b815260206004820152601860248201527f7472616e7366657220746f207a65726f206164647265737300000000000000006044820152606401610b89565b6000811161219a5760405162461bcd60e51b815260206004820152600b60248201527f7a65726f20616d6f756e740000000000000000000000000000000000000000006044820152606401610b89565b6001600160a01b0383166000908152600260205260409020548111156122025760405162461bcd60e51b815260206004820152601d60248201527f6e6f7420656e6f75676820616d6f756e7420746f207472616e736665720000006044820152606401610b89565b6000546001600160a01b038481169116148061221f5750600a5415155b61226b5760405162461bcd60e51b815260206004820152601060248201527f6e6f74206c61756e6368656420796574000000000000000000000000000000006044820152606401610b89565b600b54600a5461227b919061320f565b4210156122ea576001600160a01b03821660009081526008602052604090205460ff166122ea5760405162461bcd60e51b815260206004820152600e60248201527f6f6e6c792077686974656c6973740000000000000000000000000000000000006044820152606401610b89565b6001600160a01b03831660009081526006602052604090205460ff168061233457506123186012600a613306565b61232390600a6131d6565b600d54612330919061320f565b8111155b6123805760405162461bcd60e51b815260206004820152601c60248201527f6578636565647320746f206d61785472616e73666572416d6f756e74000000006044820152606401610b89565b6001600160a01b03821660009081526007602052604090205460ff16806123ed57506123ae6012600a613306565b6123b990600a6131d6565b600e546123c6919061320f565b6001600160a01b0383166000908152600260205260409020546123ea90839061320f565b11155b6124395760405162461bcd60e51b815260206004820152601a60248201527f6578636565647320746f206d617857616c6c6574416d6f756e740000000000006044820152606401610b89565b60165474010000000000000000000000000000000000000000900460ff168061247a57506001600160a01b03821660009081526005602052604090205460ff165b8061249d57506001600160a01b03831660009081526005602052604090205460ff165b156124f2576124ad838383612572565b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611faa91815260200190565b6016546001600160a01b0390811690841603612518576125138383836125d1565b6124ad565b6125206127ae565b6016546001600160a01b039081169083160361254157612513838383612bed565b6124ad838383612572565b6001805473ffffffffffffffffffffffffffffffffffffffff1916905561168a81612bfa565b6001600160a01b0383166000908152600260205260408120805483929061259a908490613186565b90915550506001600160a01b038216600090815260026020526040812080548392906125c790849061320f565b9091555050505050565b60008060006125de612c57565b9350509250925060007f00000000000000000000000000000000000000000000000000000000000003e861ffff168461ffff168661261c91906131d6565b61262691906131ed565b905060007f00000000000000000000000000000000000000000000000000000000000003e861ffff168461ffff168761265f91906131d6565b61266991906131ed565b905060007f00000000000000000000000000000000000000000000000000000000000003e861ffff168461ffff16886126a291906131d6565b6126ac91906131ed565b90506000816126bb8486613186565b6126c59190613186565b905060006126d3858a613186565b6001600160a01b038c16600090815260026020526040812080549293508b92909190612700908490613186565b90915550506001600160a01b038a166000908152600260205260408120805483929061272d90849061320f565b9091555050306000908152600260205260408120805487929061275190849061320f565b92505081905550836011600082825461276a919061320f565b9250508190555082600f6000828254612783919061320f565b92505081905550816010600082825461279c919061320f565b90915550505050505050505050505050565b6000601054600f546011546127c3919061320f565b6127cd919061320f565b9050600c5481116127db5750565b601680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055600f5460009061282c906002906131ed565b9050600061283a8284613186565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061287457612874613140565b6001600160a01b03928316602091820292909201810191909152601954604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa1580156128e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061290a9190613315565b8160018151811061291d5761291d613140565b6001600160a01b0392831660209182029290920101526019546129439130911684611ea9565b6019546040517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063791ac94790612995908590600090869030904290600401613332565b600060405180830381600087803b1580156129af57600080fd5b505af11580156129c3573d6000803e3d6000fd5b50479250505080612a165760405162461bcd60e51b815260206004820152601c60248201527f746f6f20736d616c6c20746f6b656e20666f7220737761704261636b000000006044820152606401610b89565b600083612a2386846131d6565b612a2d91906131ed565b90508015612b1f57600085600f54612a459190613186565b601954909150612a609030906001600160a01b031683611ea9565b6019546040517ff305d71900000000000000000000000000000000000000000000000000000000815230600482015260248101839052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990849060c40160606040518083038185885af1158015612ae7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612b0c91906133a3565b5050508183612b1b9190613186565b9250505b60008460115484612b3091906131d6565b612b3a91906131ed565b90506000612b496002836131ed565b90506000612b578284613186565b90506000612b658487613186565b601354909150612b7e906001600160a01b031684612cea565b601454612b94906001600160a01b031683612cea565b601254612baa906001600160a01b031682612cea565b50506000600f81905560108190556011555050601680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055505050505050565b60008060006125de612d99565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080600080601a60000154600a54612c70919061320f565b421015612cac575050601b5461ffff8082169350640100000000820481169250680100000000000000008204811691600160501b900416612ce4565b5050601b5461ffff620100008204811693506601000000000000820481169250680100000000000000008204811691600160501b9004165b90919293565b80600003612cf6575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612d43576040519150601f19603f3d011682016040523d82523d6000602084013e612d48565b606091505b5050905080611d0b5760405162461bcd60e51b815260206004820152601260248201527f73656e64696e6720455448206661696c656400000000000000000000000000006044820152606401610b89565b600080600080601c60000154600a54612db2919061320f565b421015612dee575050601d5461ffff8082169350640100000000820481169250680100000000000000008204811691600160501b900416612ce4565b5050601d5461ffff620100008204811693506601000000000000820481169250680100000000000000008204811691600160501b900416612ce4565b600060208083528351808285015260005b81811015612e5757858101830151858201604001528201612e3b565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461168a57600080fd5b8035612e9881612e78565b919050565b60008060408385031215612eb057600080fd5b8235612ebb81612e78565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112612ef057600080fd5b8135602067ffffffffffffffff80831115612f0d57612f0d612ec9565b8260051b604051601f19603f83011681018181108482111715612f3257612f32612ec9565b604052938452858101830193838101925087851115612f5057600080fd5b83870191505b84821015612f7657612f6782612e8d565b83529183019190830190612f56565b979650505050505050565b60008060408385031215612f9457600080fd5b823567ffffffffffffffff811115612fab57600080fd5b612fb785828601612edf565b92505060208301358015158114612fcd57600080fd5b809150509250929050565b600060208284031215612fea57600080fd5b8135612ff581612e78565b9392505050565b60008060006060848603121561301157600080fd5b833561301c81612e78565b9250602084013561302c81612e78565b929592945050506040919091013590565b60006020828403121561304f57600080fd5b5035919050565b803561ffff81168114612e9857600080fd5b6000806040838503121561307b57600080fd5b61308483613056565b915061309260208401613056565b90509250929050565b6000602082840312156130ad57600080fd5b813567ffffffffffffffff8111156130c457600080fd5b6130d084828501612edf565b949350505050565b600080604083850312156130eb57600080fd5b82356130f681612e78565b91506020830135612fcd81612e78565b600181811c9082168061311a57607f821691505b60208210810361313a57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019820361317f5761317f613156565b5060010190565b81810381811115610b3057610b30613156565b61ffff8181168382160190808211156131b4576131b4613156565b5092915050565b61ffff8281168282160390808211156131b4576131b4613156565b8082028115828204841417610b3057610b30613156565b60008261320a57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610b3057610b30613156565b600181815b8085111561325d57816000190482111561324357613243613156565b8085161561325057918102915b93841c9390800290613227565b509250929050565b60008261327457506001610b30565b8161328157506000610b30565b816001811461329757600281146132a1576132bd565b6001915050610b30565b60ff8411156132b2576132b2613156565b50506001821b610b30565b5060208310610133831016604e8410600b84101617156132e0575081810a610b30565b6132ea8383613222565b80600019048211156132fe576132fe613156565b029392505050565b6000612ff560ff841683613265565b60006020828403121561332757600080fd5b8151612ff581612e78565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156133825784516001600160a01b03168352938301939183019160010161335d565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156133b857600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220871b4873d65d4690ff54c756cb383054e571c1544d5ad25fc22d7ce4bc72990364736f6c63430008130033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000e9b4d32f829951a3ce145d2caa84cf66af56ca5e0000000000000000000000001bf4cb781b97724a8a22ef064dce6bbc1c26cdda000000000000000000000000acfb878960bcda38782d854efb2e687b57e31f09000000000000000000000000afc94420451fca019dc97100d14abcb8704d6e650000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000d015a304d44041d25d10486e64330e7888fb6647000000000000000000000000a39dc746652a0731da7ff1f4ad6385caf8a95e29000000000000000000000000000000000000000000000000000000000000012c000000000000000000000000000000000000000000000000000000000003f4800000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000003c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009600000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000032
-----Decoded View---------------
Arg [0] : _param (tuple): System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput]
-----Encoded View---------------
16 Constructor Arguments found :
Arg [0] : 000000000000000000000000e9b4d32f829951a3ce145d2caa84cf66af56ca5e
Arg [1] : 0000000000000000000000001bf4cb781b97724a8a22ef064dce6bbc1c26cdda
Arg [2] : 000000000000000000000000acfb878960bcda38782d854efb2e687b57e31f09
Arg [3] : 000000000000000000000000afc94420451fca019dc97100d14abcb8704d6e65
Arg [4] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [5] : 000000000000000000000000d015a304d44041d25d10486e64330e7888fb6647
Arg [6] : 000000000000000000000000a39dc746652a0731da7ff1f4ad6385caf8a95e29
Arg [7] : 000000000000000000000000000000000000000000000000000000000000012c
Arg [8] : 000000000000000000000000000000000000000000000000000000000003f480
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000014
Arg [10] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [11] : 000000000000000000000000000000000000000000000000000000000000003c
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [13] : 0000000000000000000000000000000000000000000000000000000000000096
Arg [14] : 0000000000000000000000000000000000000000000000000000000000000064
Arg [15] : 0000000000000000000000000000000000000000000000000000000000000032
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.